Da "Uptime" mehrere Bedeutungen hat, ist hier ein nützlicher Befehl.
ps -eo pid,comm,lstart,etime,time,args
Dieser Befehl listet alle Prozesse mit verschiedenen zeitbezogenen Spalten auf. Es hat die folgenden Spalten:
PID COMMAND STARTED ELAPSED TIME COMMAND
PID
= Prozess - ID
zuerst COMMAND
= nur die Befehlsnamen ohne Optionen und ohne Argumente
STARTED
= die absolute Zeit wurde der Prozess gestartet
ELAPSED
verstrichene Zeit = , da der Prozess gestartet wurde ( Wanduhr Zeit ), das Format [[dd-] hh:] mm: ss
TIME
= kumulative CPU-Zeit, "[dd-] hh: mm: ss" -Format
second COMMAND
= erneut der Befehl, diesmal mit allen bereitgestellten Optionen und Argumenten
etimes
mich selbst - verstrichene Zeit in Sekunden - damit es maschinenlesbar istWenn Sie eine eingeschränkte Version von haben,
ps
wie sie in zu finden istbusybox
, können Sie die Startzeit des Prozesses anhand des Zeitstempels von abrufen/proc/<PID>
. Wenn zum Beispiel die gewünschte PID 55 ist ...... und dann mit dem aktuellen Datum vergleichen ...
quelle
Ich denke du kannst einfach laufen:
1234 ist die Prozess-ID.
Beispiel mit zwei Prozessen, die zur selben Stunde, Minute, Sekunde, aber nicht in derselben Millisekunde gestartet wurden:
quelle
So eine einfache Sache wird nach 5 Jahren nicht richtig beantwortet?
Ich glaube nicht, dass Sie Millisekunden genau erhalten können. z.B. Wenn Sie sehen
man procfs
und sehen,/proc/$$/stat
welches Feld 22 als Startzeit hat, was in "Uhr-Ticks" steht, würden Sie etwas genaueres haben, aber die Uhr-Ticks laufen nicht mit einer vollkommen konstanten Rate (relativ zur "Wanduhr-Zeit") und werden ausschlafen ... und bestimmte Dinge (ntpd nehme ich an) glichen es aus. Beispiel: Auf einem Computer, auf dem ntpd ausgeführt wird, der 8 Tage verfügbar ist und noch nie geschlafendmesg -T
hat, tritt dasselbe Problem auf (glaube ich ...), und Sie können es hier sehen:Hier ist Sekunden:
quelle
ja, zu alt und doch zu hart. Ich habe es mit der oben vorgeschlagenen "stat" -Methode versucht, aber was ist, wenn ich gestern die PID-Prozedur "berührt" habe? Dies bedeutet, dass mein einjähriger Prozess mit dem Zeitstempel von gestern angezeigt wird. Nein, nicht was ich brauche :(
In den neueren ist es einfach:
so einfach ist das. Die Zeit ist in Sekunden angegeben. Mach, wofür du es brauchst. Bei einigen älteren Boxen ist die Situation schwieriger, da es keine Zeiten gibt. Man kann sich verlassen auf:
die ein "bisschen" komisch aussehen, da sie im dd-hh: mm: ss-Format vorliegen. Nicht zur weiteren Berechnung geeignet. Ich hätte es in Sekunden vorgezogen, daher habe ich diese verwendet:
quelle
pidof java
=> Prozess-ID für Java-Prozessetimes=
=> Zeit in Sekunden und '=' dient zum Entfernen des Headersquelle