Pour un processus en cours, vous pouvez faire ceci:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
En règle générale, vous pouvez modifier votre invite de shell. Voici ma définition d'invite bash:
TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "
La partie qui vous intéresse est celle \t
du moment.
Cela ne résout cependant pas tous les problèmes. La nouvelle invite affichera la fin du processus, mais l'ancienne invite peut être assez ancienne lorsque la commande à mesurer a été lancée. Donc, soit vous vous souvenez de renouveler l'invite avant de lancer de longues commandes, soit vous devez vous souvenir de l'heure actuelle lorsque vous voulez savoir combien de temps le processus actuel aura pris.
Pour une solution complète, vous avez besoin d'une fonction d'audit (qui enregistre l'heure de début et de fin des processus). Mais cela peut provoquer une énorme quantité de données si elles ne peuvent pas être limitées au shell.