384 votes

Comment obtenir l'heure de démarrage d'un processus Linux qui s'exécute depuis longtemps ?

Est-il possible d'obtenir l'heure de démarrage d'un ancien processus en cours ? Il semble que ps indiquera la date (et non l'heure) s'il n'a pas été lancé aujourd'hui, et seulement l'année s'il n'a pas été lancé cette année. La précision est-elle perdue à jamais pour les anciens processus ?

1 votes

Voici une page détaillée sur le sujet : linuxcommando.blogspot.com/2008/09/

30 votes

Y a-t-il quelque chose de mal à utiliser ps -p <pid> -o lstart ? Il semble que cela fonctionne, mais je ne sais pas pourquoi ce n'est pas la réponse la plus évidente et la plus immédiate aux nombreuses fois où cette question semble se poser.

14 votes

@ajwood Il serait préférable d'utiliser ps -p <pid> -o lstart= pour éviter l'impression d'une ligne supplémentaire (en-tête).

581voto

birryree Points 29165

Vous pouvez spécifier un formateur et utiliser lstart comme cette commande :

ps -eo pid,lstart,cmd

La commande ci-dessus affichera tous les processus, avec des formateurs pour obtenir le PID, la commande exécutée, et la date et l'heure de démarrage.

Exemple (à partir de la ligne de commande de Debian/Jessie)

$ ps -eo pid,lstart,cmd
  PID CMD                                          STARTED
    1 Tue Jun  7 01:29:38 2016 /sbin/init                  
    2 Tue Jun  7 01:29:38 2016 [kthreadd]                  
    3 Tue Jun  7 01:29:38 2016 [ksoftirqd/0]               
    5 Tue Jun  7 01:29:38 2016 [kworker/0:0H]              
    7 Tue Jun  7 01:29:38 2016 [rcu_sched]                 
    8 Tue Jun  7 01:29:38 2016 [rcu_bh]                    
    9 Tue Jun  7 01:29:38 2016 [migration/0]               
   10 Tue Jun  7 01:29:38 2016 [kdevtmpfs]                 
   11 Tue Jun  7 01:29:38 2016 [netns]                     
  277 Tue Jun  7 01:29:38 2016 [writeback]                 
  279 Tue Jun  7 01:29:38 2016 [crypto]                    
      ...

Vous pouvez lire ps ou la page de manuel de consultez la page d'Opengroup pour les autres formateurs.

0 votes

Lorsque les commandes contiennent de longues chaînes de caractères, une partie du texte est coupée, par exemple : 3538 sendmail : Queue runner@01:0 4-05:19:43` Comment faire pour que la chaîne de caractères soit imprimée dans son intégralité ?

0 votes

Pour ceux qui veulent l'utiliser sur Android, utilisez plutôt ps de busybox, et le nom de la colonne de commande est comm, c'est-à-dire busybox ps -eo pid,comm,etime

3 votes

@bobbyrne01 : changez l'ordre, par exemple pid,etime,cmd fonctionne pour moi sur Debian Wheezy.

51voto

Nathan Points 61

La commande ps (du moins la version procps utilisée par de nombreuses distributions Linux) possède un certain nombre de champs de format qui concernent l'heure de début du processus, notamment lstart qui donne toujours la date et l'heure complètes du début 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 https://unix.stackexchange.com/questions/7870/how-to-check-how-long-a-process-has-been-running

(D'après mon expérience sous Linux, l'horodatage des 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émarrage 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" à environ 16:50, puis j'ai créé un nouveau shell bash, et j'ai exécuté la commande "ps -p 1 -p $$" dans ce shell peu de temps après....).

0 votes

Pour voir tous les processus (et pas seulement le vôtre), ajoutez une option e (standard ps syntaxe) ou ax (syntaxe BSD) à la commande ps : i.e. ps -ewo pid,lstart,cmd ou ps -axwo pid,lstart,cmd

20voto

Adam Matan Points 15690
ls -ltrh /proc | grep YOUR-PID-HERE

Par exemple, le PID de mon Google Chrome est 11583 :

ls -l /proc | grep 11583
dr-xr-xr-x  7 adam       adam                     0 2011-04-20 16:34 11583

6 votes

Cela ne fonctionne pas pour moi - il imprime le temps de modification (change fréquemment) Peut-être à cause de cela : unix.stackexchange.com/questions/20460/

0 votes

L'horodatage du /proc/<pid> n'est pas fiable.

1 votes

Cela a donné une heure 9 minutes plus tard que le début d'un processus sur lequel j'ai des informations.

7voto

bash-o-logist Points 2088
 ps -eo pid,etime,cmd|sort -n -k2

1voto

PEdroArthur Points 446

Je pense que vous pouvez l'obtenir à partir de /proc. Quelque chose comme :

stat /proc/$(pidof process)

ou peut-être avec :

ls /proc/$(pidof process)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X