Creare una progress bar da un processo già avviato
Posted: Marzo 20th, 2011 | Author: packz | Filed under: firefox, Hack, linux, Tips&Tricks | Commenti disabilitati su Creare una progress bar da un processo già avviatoStavo ascoltando l’audio di Wu Ming 1 relativamente al 150ennale dell’unità d’italia e avendo cliccato direttamente dal browser mi aveva aperto la risorsa con il plugin di mplayer; l’intervento è abbastanza lungo e succede che magari devo andare a mangiare e voglio capire se bastano due minuti perché finisca oppure meglio cucinare subito però non posso saperlo siccome questo player non ti visualizza il tempo che manca, come fare?
La soluzione è utilizzare il filesystem virtuale /proc: questo sottoinsieme di directory contiene dei file che descrivono lo stato del computer ed in particolare dei processi. Per esempio, io cerco tramite ps quale è il PID del plugin di mplayer
$ ps ax ... 16783 ? Ssl 0:19 mplayer -wid 0x4000038 -osdlevel 1 -nojoystick -nocon ...
posso andarmi a cercare quali file descriptor ha aperto questo programma (e tra di essi ci sarà il file con l’audio che sto ascoltando)
$ ls -l /proc/16783/fd/* ... lr-x------ 1 packz packz 64 20 mar 21.17 /proc/16783/fd/5 -> /tmp/mplayZ1FhAY.mp3 ...
Per sapere quanto manca devo trovare la posizione in cui il processo sta leggendo il file
$ cat /proc/16783/fdinfo/5 pos: 33677312 flags: 0100000
e la dimensione totale del file stesso
$ wc -c /tmp/mplayZ1FhAY.mp3 56845588 /tmp/mplayZ1FhAY.mp3
Con un pizzico di magia da shell ottengo la percentuale
$ bc -l 33677312/56845588 .59286725998858521790
Un po’ più di metà, mi tocca cucinare subito!
P.S: Per questo tricks ringraziare questo blog (ha sempre informazioni molto valuable).