Ich habe ein Programm gestartet und die Ausgabe von ps -p PID -o lstart=
geschrieben in eine Datei, etwa so:
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
Aber wenn ich ps
erneut ausführe später bekomme ich ein etwas anderes Ergebnis:
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
Ich hatte den Eindruck, dass lstart=
würde die Startzeit eines bestimmten Prozesses drucken. Warum erhalte ich eine andere Startzeit, wenn ich ps
erneut aufrufe ?
Akzeptierte Antwort:
Ich hatte vermutet (aber nicht replizieren können), dass das Problem irgendwie mit einer exec
zusammenhängt Aufruf oder etwas Ähnliches, das den laufenden Prozess ersetzte, die gleiche PID beibehielt, aber die Startzeit zurücksetzte. Es stellt sich heraus, dass die Erklärung viel einfacher ist (und leider habe ich in der ursprünglichen Frage nicht genügend Details angegeben).
Wie in diesem Followup beschrieben, änderte ein NTP-Update meine Systemuhr zwischen den ps
Anrufe. Anscheinend lstart
respektiert Uhraktualisierungen (was sinnvoll ist, mich aber dennoch etwas überrascht hat), was bedeutet, dass Sie sich nicht auf die Ausgabe von lstart
verlassen können um über die Lebensdauer eines einzelnen Prozesses konsistent zu bleiben.