La commande ps (au moins la version procps utilisée par de nombreuses distributions Linux) a un certain nombre de champs de format qui se rapportent à l'heure de début du processus, y compris lstart
qui donne toujours la date et l'heure complètes de démarrage du processus:
# 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
Pour une discussion sur la façon dont les informations sont publiées dans le système de fichiers / proc, voir
/unix/7870/how-to-check-how-long-a-process-has-been-running
(D'après mon expérience sous Linux, l'horodatage sur les répertoires / proc / semble être lié à un moment où le répertoire virtuel a été récemment accédé plutôt qu'à l'heure de début des processus:
# 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
Notez que dans ce cas, j'ai exécuté une commande "ps -p 1" vers 16h50, puis j'ai généré un nouveau shell bash, puis j'ai exécuté la commande "ps -p 1 -p $$" dans ce shell peu de temps après ... .)
ps -p <pid> -o lstart
? Il semble que cela fonctionne, mais je ne sais pas pourquoi ce n'est pas la réponse évidente immédiate pour les nombreuses fois où cette question semble se poser.