[gull] truc et astuce: file rate avec find et bc

Félix Hauri felix at f-hauri.ch
Wed Sep 14 11:54:28 CEST 2005


Bonjour,

Soit un fichier en train de ``grossir'' sur votre filesystem. Ce peut
être un téléchargement un traitement de masse ou autre chose...

La question est de savoir à quelle vitesse il grossit.
Réponse: le truc du jour:

$ find $file -printf "%s/(%Cs-%As)\n" | bc -l

Explication:
  ``%s''   La taille du fichier (au moment de l'interrogation)
  ``%Cs''  La date de la dernière modification d'état en secondes
  ``%As''  La date du dernier accès au fichier (moment de la
               création de ce dernier), en secondes

Pour faire du zèle, on ajoute un peu de ``mise en forme'':

$ printf "%s %.3fGo %05.3fM/s\n" "$file" $(
   find $file -printf "%s/1024^3;%s/(%Cs-%As)/1024^2\n" |
    bc -l)

présente nom du fichier, taille momentanée en Go et débit en Mo/sec.
( Note:
     Sur une config ``LANG=fr_CH'', si vous recevez le message:
         printf: XX.XXXXXXX: invalid number
     Il suffit de positionner ``LC_NUMERIC=C'' avant le ``printf'':
  $ export LC_NUMERIC=C
)

Pour finir, on suit l'évolution du fichier toutes les 5 secs puis
on quitte une fois le fichier terminé:
$ delay=5
$ prgpid=$(
    lsof -F p $file |
    sed s'/^p\([0-9]*\)$/\1/;q')
$ while [ -d /proc/$prgpid ] ;do
     printf "\r%s %.3fGo %05.3fM/s " "$file" $(
       find $file -printf "%s/1073741824;%s/(%Cs-%As)/1048576\n" | 
       bc -l);
     sleep $delay;
  done;echo

--
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch



More information about the gull mailing list