Ist es möglich, die Startzeit eines alten laufenden Prozesses abzurufen? Es scheint, dass ps
das Datum (nicht die Uhrzeit) gemeldet wird, wenn es heute nicht gestartet wurde, und nur das Jahr, wenn es dieses Jahr nicht gestartet wurde. Ist die Präzision für alte Prozesse für immer verloren?
250
ps -p <pid> -o lstart
? Scheint so, als ob es funktioniert, aber ich bin mir nicht sicher, warum es nicht die unmittelbare offensichtliche Antwort für die vielen Male ist, in denen diese Frage auftaucht.ps -p <pid> -o lstart=
, um zu vermeiden, dass zusätzliche Zeilen (Überschriften) gedruckt werden.ps -p <pid> -o lstart
? Vielleicht die Tatsache, dass eslstart
weder in der Ausgabe 2004 noch in der Ausgabe 2013 des POSIX 1003.1-Standards gibt?Antworten:
Sie können einen Formatierer angeben und
lstart
wie folgt verwenden:Der obige Befehl gibt alle Prozesse mit Formatierern aus, um PID, Befehlsausführung und Datum + Uhrzeit zu starten.
Beispiel (über die Debian / Jessie-Befehlszeile)
Sie können die
ps
Manpage lesen oder auf der Opengroup-Seite nach den anderen Formatierern suchen .quelle
etime
ist die Zeit, die seit dem Start des Prozesses vergangen ist.ps axo pid,cmd,lstart
funktioniert auchlstart
Zeit ändern kann. Die folgendenstat
Methoden sind sicherer - unix.stackexchange.com/questions/274610/… .Der Befehl ps (zumindest die von vielen Linux-Distributionen verwendete procps-Version) enthält eine Reihe von Formatfeldern, die sich auf die Prozessstartzeit beziehen, einschließlich
lstart
der Angaben zum vollständigen Datum und zur Uhrzeit des Starts des Prozesses:Eine Diskussion darüber, wie die Informationen im Dateisystem / proc veröffentlicht werden, finden Sie unter /unix/7870/how-to-check-how-long-a-process-has-been-running
(Nach meiner Erfahrung unter Linux scheint sich der Zeitstempel in den Verzeichnissen / proc / auf einen Moment zu beziehen, in dem kürzlich auf das virtuelle Verzeichnis zugegriffen wurde, und nicht auf die Startzeit der Prozesse:
Beachten Sie, dass ich in diesem Fall gegen 16:50 Uhr einen Befehl "ps -p 1" ausführte, dann eine neue Bash-Shell erzeugte und kurz darauf den Befehl "ps -p 1 -p $$" in dieser Shell ausführte ... .)
quelle
e
(Standardsyntaxps
) oderax
(BSD-Syntax) hinzu: dhps -ewo pid,lstart,cmd
oderps -axwo pid,lstart,cmd
Als Folge der Antwort von Adam Matan ist der
/proc/<pid>
Zeitstempel des Verzeichnisses als solcher nicht unbedingt direkt nützlich, aber Sie können ihn verwendenum die Startzeit in Uhrzecken seit dem Systemstart zu erhalten. 1
Dies ist eine etwas knifflige Einheit; Siehe auch Konvertieren von Jiffies in Sekunden für Details.
Dies sollte Ihnen Sekunden geben, an die Sie übergeben können
strftime()
, um einen (für Menschen lesbaren oder anderweitig lesbaren) Zeitstempel zu erhalten.Aktualisiert mit einigen Korrekturen von Stephane Chazelas in den Kommentaren; danke wie immer!
Wenn Sie nur Mawk haben, versuchen Sie es vielleicht
1 Mann proc ; Suche nach Startzeit .
quelle
strftime()
undsystime()
nicht vorhandenmawk
sind. Dies ist die Standardeinstellungawk
in meinen Debian 8 VPS-Bildern. Daher kann ich nur davon ausgehen, dass sie spezifisch fürgawk
den Dialekt sind.Die PID von Google Chrome lautet beispielsweise 11583:
quelle
ps
dieinvalid option
alle in anderen Antworten genannten Optionen angibt .grep
? Warum nichtls -ldh /proc/$pid
? Oder noch besserdate -r /proc/$pid
?quelle
quelle