Pour un processus en cours d'exécution, vous pouvez faire ceci :
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
En tant que fonctionnalité 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 \[email protected]\h:\w\nstart cmd:> '
PS2="cont. cmd:> "
La partie pertinente pour vous est le \t
pour le moment.
Cela ne résout cependant pas tous les problèmes. La nouvelle invite indiquera la fin du processus, mais l'ancienne invite peut avoir été assez ancienne lorsque la commande à mesurer a été lancée. Donc, soit vous vous souvenez de renouveler l'invite avant de lancer des commandes longues, soit vous devez vous souvenir de l'heure actuelle lorsque vous voulez savoir combien de temps le processus en cours aura pris.
Pour une solution complète, vous avez besoin d'une fonctionnalité d'audit (qui enregistre l'heure de début et de fin des processus). Mais cela peut entraîner une énorme quantité de données si cela ne peut pas être limité au shell.
En vous appuyant sur la réponse acceptée, vous pouvez également surveiller en continu le temps écoulé d'un processus en cours d'exécution à l'aide de watch
:
PID=5462
watch command ps -p "$PID" -o etime