Para un proceso en ejecución, puede hacer esto:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Como característica general, puede modificar el indicador de shell. Esta es mi definición de indicador de 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 relevante para ti es el \t
por el momento.
Sin embargo, esto no resuelve todos los problemas. El nuevo aviso se mostrará cuando el proceso haya terminado, pero el aviso anterior puede haber sido bastante antiguo cuando se inició el comando que se va a medir. Entonces, recuerda renovar el indicador antes de iniciar comandos de ejecución prolongada o debes recordar la hora actual cuando quieras saber cuánto tiempo habrá tomado el proceso actual.
Para una solución completa, necesita una función de auditoría (que registra la hora de inicio y finalización de los procesos). Pero eso puede causar una gran cantidad de datos si no se puede restringir al shell.
Sobre la base de la respuesta aceptada, también puede monitorear continuamente el tiempo transcurrido de un proceso en ejecución usando watch
:
PID=5462
watch command ps -p "$PID" -o etime