Ricerca tra la vecchia roba

Creare una progress bar da un processo già avviato

Posted: Marzo 20th, 2011 | Author: | Filed under: firefox, Hack, linux, Tips&Tricks | Commenti disabilitati su Creare una progress bar da un processo già avviato

Stavo 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).


Comments are closed.