Per un processo in esecuzione puoi fare questo:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Come funzionalità generale è possibile modificare il prompt della shell. Questa è la mia definizione del prompt di 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 parte rilevante per te è il \t
per il momento.
Questo però non risolve tutti i problemi. Il nuovo prompt mostrerà quando il processo è terminato, ma il precedente prompt potrebbe essere piuttosto vecchio quando è stato avviato il comando da misurare. Quindi, o ti ricordi di rinnovare il prompt prima di avviare i comandi a esecuzione prolungata o devi ricordare l'ora corrente quando vuoi sapere quanto tempo avrà impiegato il processo corrente.
Per una soluzione completa è necessaria una funzione di controllo (che registri l'ora di inizio e di fine dei processi). Ma ciò potrebbe causare un'enorme quantità di dati se non può essere limitato alla shell.
Sulla base della risposta accettata, puoi anche monitorare continuamente il tempo trascorso di un processo in esecuzione utilizzando watch
:
PID=5462
watch command ps -p "$PID" -o etime