La commande time est fortement utile. Il suffit de la mettre devant n'importe quelle autre commande pour connaître son temps d'exécution

Par exemple :

time sleep 5

... donnera 5 secondes d'exécution ;)

Oui mais on commence à l'utiliser et on se rend compte d'un écoeuil : lorsque l'on redirige les sorties (standard ou erreur) dans un fichier, toutes à l'exception de time apparaissent dans notre log.

time continue de sortir sur l'output de notre cher terminal / console.

Comment faire ?

Il suffit d'utiliser la syntaxe { instruction1 ; instruction2 ; instruction3 ; } pour y remédier (attention à ne pas oublier le dernier ';'

Voici un exemple que j'utilise très couramment pour connaître mes temps de copie avec rsync (même si c'est un peu redondant j'ajoute également la commande date avant et après) :

{ date ; time rsync -azvH /path/to/src 192.168.0.42:/path/to/dest ; date ; } > /tmp/output.log 2>&1

Ainsi toutes nos commandes y compris time seront loggées.

Une alternative est possible avec la commande tee qui permet de logger dans un fichier tout en continuant d'afficher les sorties en temps réel.

On évite ainsi d'ouvrir un second terminal pour faire un tail sur le fichier :

{ date ; time rsync -azvH /path/to/src 192.168.0.42:/path/to/dest ; date ; } 2>&1 | tee /tmp/output.log
Tag(s) : #bash, #rsync

Partager cet article

Repost 0
Pour être informé des derniers articles, inscrivez vous :