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.