![¿Interacción conveniente con la consola de estampado de fecha y hora, por ejemplo, utilizando alias de shell?](https://rvso.com/image/696999/%C2%BFInteracci%C3%B3n%20conveniente%20con%20la%20consola%20de%20estampado%20de%20fecha%20y%20hora%2C%20por%20ejemplo%2C%20utilizando%20alias%20de%20shell%3F.png)
Entonces, a menudo encuentro que realmente quiero saber cuándo comencé un proceso (o secuencia de comandos) después de descubrir que estaba tardando mucho tiempo... lo que significa que no podía anteponer la fecha antes y después en la línea de comando (sin interrumpir algo que ahora sé lleva mucho tiempo)... y luego el proceso puede finalizar mientras estoy lejos de la terminal.
Eso me hizo pensar: ¿es posible alterar el alias del shell de modo que, de forma predeterminada, se invoque una 'fecha' antes y después de cada entrada de la línea de comando? A veces sería muy útil poder desplazarse hacia atrás en la terminal y tener una idea de cuánto tiempo tomó el proceso.
¿Tienen otras personas formas inteligentes de abordar esto? Estoy seguro de que es un escenario bastante común.
En términos de soluciones con este enfoque, supongo que está un poco relacionado con esta Q. Ejecute un subshell interactivo de bash con comandos iniciales sin regresar al shell ("super") inmediatamente
donde está claro que puedes anteponer comandos... pero eso es sólo una parte de la solución. ¿Quizás pre-pendiente y luego hacer que el indicador del shell muestre la hora actual sería una solución bastante buena?
¿Pensamientos?
Respuesta1
Simplemente puede modificar la PS1
variable del indicador de shell para mostrar la marca de tiempo actual. Se puede utilizar uno de los siguientes:
\t the current time in 24-hour HH:MM:SS format
\T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format
\A the current time in 24-hour HH:MM format
Puedes encontrarlos con otras opciones en man bash
. Edite su .bashrc
archivo para modificarlo PS1
como desee.
Luego puede determinar cuándo se ejecuta cualquier comando. Por supuesto, si permanece inactivo durante mucho tiempo antes de presionar Enter, no obtendrá la hora exacta.
Editar:Otra posibilidad es utilizar ts
una utilidad para mostrar cómo progresa el script. Ejecute su script como:
$ /path/to/script | ts
Cada declaración de eco se mostrará con una marca de tiempo.
Respuesta2
NOTA:Esta no es una respuesta directa a lo que pregunta OP, pero tal vez pueda ser útil para resolver su problema.
Para procesos ya iniciados, puede recuperar la fecha/hora de inicio emitiendo un simple archivo ps ax -F
. Mostrará un resultado similar al siguiente:
Apache 1733 1678 0 83467 7752 0 10:07? S 0:00 /usr/sbin/httpd Apache 1734 1678 0 83467 7752 0 10:07? S 0:00 /usr/sbin/httpd Apache 1735 1678 0 83467 7752 0 10:07? S 0:00 /usr/sbin/httpd Apache 1736 1678 0 83467 7768 0 10:07? S 0:00 /usr/sbin/httpd Apache 1737 1678 0 83467 7752 0 10:07? S 0:00 /usr/sbin/httpd Apache 1738 1678 0 83467 7752 0 10:07? S 0:00 /usr/sbin/httpd
Como puede ver, la octava columna muestra la fecha/hora de inicio.