El comando ps (al menos la versión procps utilizada por muchas distribuciones de Linux) tiene una serie de campos de formato que se relacionan con la hora de inicio del proceso, incluida la lstart
que siempre proporciona la fecha y hora completas de inicio del proceso:
# ps -p 1 -wo pid,lstart,cmd
PID STARTED CMD
1 Mon Dec 23 00:31:43 2013 /sbin/init
# ps -p 1 -p $$ -wo user,pid,%cpu,%mem,vsz,rss,tty,stat,lstart,cmd
USER PID %CPU %MEM VSZ RSS TT STAT STARTED CMD
root 1 0.0 0.1 2800 1152 ? Ss Mon Dec 23 00:31:44 2013 /sbin/init
root 5151 0.3 0.1 4732 1980 pts/2 S Sat Mar 8 16:50:47 2014 bash
Para una discusión sobre cómo se publica la información en el sistema de archivos / proc, consulte
/unix/7870/how-to-check-how-long-a-process-has-been-running
(En mi experiencia con Linux, la marca de tiempo en los directorios / proc / parece estar relacionada con un momento en el que se accedió recientemente al directorio virtual en lugar de la hora de inicio de los procesos:
# date; ls -ld /proc/1 /proc/$$
Sat Mar 8 17:14:21 EST 2014
dr-xr-xr-x 7 root root 0 2014-03-08 16:50 /proc/1
dr-xr-xr-x 7 root root 0 2014-03-08 16:51 /proc/5151
Tenga en cuenta que en este caso ejecuté un comando "ps -p 1" aproximadamente a las 16:50, luego generé un nuevo shell bash, luego ejecuté el comando "ps -p 1 -p $$" dentro de ese shell poco después ... .)
ps -p <pid> -o lstart
? Parece que funciona, pero no estoy seguro de por qué no es la respuesta obvia inmediata para las muchas veces que esta pregunta parece surgir.