Comencé una comprobación hash de un archivo grande y no quiero reiniciarlo usando time
. ¿Cómo puedo obtener la hora del reloj de pared sin usar el tiempo al principio o date
justo antes de invocar un comando?
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 su solicitud de shell. Esta es mi definición de bash prompt:
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 parte relevante para ti es la \t
del momento.
Sin embargo, esto no resuelve todos los problemas. La nueva solicitud se mostrará cuando el proceso haya finalizado, pero la solicitud anterior puede haber sido bastante antigua cuando se inició el comando a medir. Por lo tanto, recuerde renovar la solicitud antes de iniciar comandos de ejecución prolongada o debe recordar la hora actual en la que desea saber cuánto tiempo llevará el proceso actual.
Para una solución completa, necesita una función de auditoría (que registra el tiempo 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