J'ai démarré un programme et écrit la sortie de ps -p PID -o lstart=
dans un fichier, comme ceci :
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
Mais quand je relance ps
plus tard, j'obtiens un résultat légèrement différent :
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
J'avais l'impression que lstart=
imprimerait l'heure de début d'un processus donné. Pourquoi ai-je une heure de début différente lorsque je rappelle ps
?
Réponse acceptée :
J'avais soupçonné (mais je n'avais pas pu reproduire) que le problème était en quelque sorte lié à un exec
call ou quelque chose de similaire qui remplaçait le processus en cours d'exécution, en gardant le même PID mais en réinitialisant l'heure de début. Il s'avère que l'explication est beaucoup plus simple (et malheureusement, je n'ai pas inclus suffisamment de détails dans la question d'origine).
Comme détaillé dans ce suivi, une mise à jour NTP changeait mon horloge système entre le ps
appels. Apparemment lstart
respecte les mises à jour de l'horloge (ce qui est logique, mais m'a quand même quelque peu surpris), ce qui signifie que vous ne pouvez pas vous fier à la sortie de lstart
pour rester cohérent tout au long de la durée de vie d'un processus unique.