Il comando ps (almeno la versione procps utilizzata da molte distribuzioni Linux) ha un numero di campi di formato che si riferiscono all'ora di inizio del processo, incluso il lstart
quale fornisce sempre la data e l'ora complete di inizio del processo:
# 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
Per una discussione su come le informazioni sono pubblicate nel filesystem / proc, vedere
/unix/7870/how-to-check-how-long-a-process-has-been-running
(Nella mia esperienza con Linux, il timestamp nelle directory / proc / sembra essere correlato a un momento in cui la directory virtuale è stata recentemente aperta anziché l'ora di inizio dei processi:
# 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
Si noti che in questo caso ho eseguito un comando "ps -p 1" verso le 16:50, quindi ho generato una nuova shell bash, quindi ho eseguito il comando "ps -p 1 -p $$" all'interno di quella shell poco dopo ... .)
ps -p <pid> -o lstart
? Sembra che funzioni, ma non sono sicuro del perché non sia la risposta ovvia immediata per le molte volte che questa domanda sembra sorgere.