Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 5
  • 58

Odpowiedź (1)

  • 0

Znając PID, procesu możemy zobaczyć otwarte pliki w katalogu /proc/<pid>/fd oraz informacje o nich w katalogu /proc/<pid>/fdinfo/. Znajdziemy tam m.in. nasz plik, który jest odczytywany.

Teraz  wystarczy porównać miejsce w pliku, na jakim jest obecnie odczyt z wielkością całego pliku, by zobacyczyć ile procent danych już zostało odczytanych.

Do śledzenia na bieżąco napisałem sobie prosty skrypcik: jako pierwszy parametr podajemy PID procesu, który odczytuje plik, jako drugi - numer deskryptora czytanego pliku (do sprawdzenia przez ls -l /proc/<pid>/fd/):

 

#!/usr/bin/python
import os.path
import sys
import time
try:
        pid=int(sys.argv[1])
        fd=int(sys.argv[2])
        pathfdinfo="/proc/%d/fdinfo/%d" % (pid,fd)
        pathfd="/proc/%d/fd/%d" % (pid,fd)
except:
        print "bledne dane pid: %d fd: %d" % (pid,fd)
        sys.exit(1)
current=0
while(1):
        try:
                fdinfo=open(pathfdinfo,'r')
        except:
                print "Blad otwarcia pliku %s" % (path,)

        last=current
        current=int(fdinfo.readline().split("\t")[1])
        fsize=os.path.getsize(pathfd)
        print current,fsize,100.0 * current/fsize,"ETA:", 10.0 * (fsize-current) / (current-last)
        time.sleep(10)
        fdinfo.close()

 

Andrzej_Dopierała
  • Odpowiedział
  • @ Andrzej_Dopierała | 29.09.2014
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169
Komentarze