Inicié un programa y escribí el resultado de ps -p PID -o lstart=
a un archivo, así:
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
Pero cuando vuelvo a ejecutar ps
luego obtengo un resultado ligeramente diferente:
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
Tenía la impresión de que lstart=
imprimiría la hora de inicio de un proceso dado. ¿Por qué obtengo una hora de inicio diferente cuando vuelvo a llamar a ps
? ?
Respuesta aceptada:
Sospeché (pero no pude replicar) que el problema estaba relacionado de alguna manera con un exec
llamada o algo similar que estaba reemplazando el proceso en ejecución, manteniendo el mismo PID pero restableciendo la hora de inicio. Resulta que la explicación es mucho más simple (y lamentablemente no incluí suficientes detalles en la pregunta original).
Como se detalla en este seguimiento, una actualización de NTP estaba cambiando el reloj de mi sistema entre ps
llamadas Aparentemente lstart
respeta las actualizaciones del reloj (lo cual tiene sentido, pero aun así me sorprendió un poco), lo que significa que no puedes confiar en la salida de lstart
para permanecer consistente durante la vida útil de un solo proceso.