Spustil jsem program a napsal výstup ps -p PID -o lstart=
do souboru, například takto:
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
Ale když znovu spustím ps
později dostanu trochu jiný výsledek:
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
Měl jsem dojem, že lstart=
vytiskne čas zahájení daného procesu. Proč se mi při opětovném volání na ps
zobrazuje jiný čas zahájení ?
Přijatá odpověď:
Měl jsem podezření (ale nebyl jsem schopen replikovat), že problém nějak souvisí s exec
volání nebo něco podobného, co nahrazovalo běžící proces, zachovává stejné PID, ale resetuje čas zahájení. Ukázalo se, že vysvětlení je mnohem jednodušší (a bohužel jsem do původní otázky nezahrnul dost podrobností).
Jak je podrobně popsáno v tomto pokračování, aktualizace NTP měnila moje systémové hodiny mezi ps
hovory. Zřejmě lstart
respektuje aktualizace hodin (což dává smysl, ale přesto mě poněkud překvapilo), což znamená, že se nemůžete spolehnout na výstup lstart
aby zůstaly konzistentní po celou dobu životnosti jednoho procesu.