Grundlegendes zum ps-Format für verstrichene Zeit für Prozesse mit langer Laufzeit

10

Ich verwende einen psBefehl als Teil einer Übung, um Prozesse zu identifizieren, die länger als ein bestimmter Schwellenwert ausgeführt werden.

Ich verwende die folgende Vorlage, um die verstrichene Zeit für einen Know-Prozess-Befehl abzurufen:

ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'

Ich stelle bei kurz laufenden Prozessen fest, dass der Wert für etime (verstrichene Zeit) das Format annimmt, minutes:secondsund anhand dessen kann ich leicht feststellen, wie lange ein Prozess ausgeführt wurde.

Bei sehr langen Prozessen (Tage) verstehe ich das Format nicht.

Ich habe einen MySQL-Serverprozess, der htop126 Stunden lang ausgeführt wird.

Das Ausführen ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'gibt mir einen Wert von 9-03:35:32.

Meine beste Vermutung ist, dass dies 9 etwas, 3 Stunden, 35 Minuten, 32 Sekunden bedeutet. Ich kann nicht herausfinden, was die Einheiten für die 9 sind.

Der fragliche Prozess lief 126 Stunden, ungefähr 5,25 Tage. Dies deutet darauf hin, dass die 9 in der obigen Ausgabe keine Tage darstellt. Sie können auch keine halben Tage sein, da (9 * 12) Stunden + 3 Stunden + 35 Minuten + 32 Sekunden weniger als 5 Tage sind.

Wie interpretiere ich den Wert der verstrichenen Zeit, den ich für lang laufende Prozesse sehe? Welche Einheiten begleiten die 9 in der obigen Ausgabe?

Jon Cram
quelle
Hier sehen Sie das POSIX-Zeitformat. Minuten: Sekunden ist das BSD-Zeitformat. Linux pszeigt das eine oder andere an, abhängig von den Optionen, die Sie übergeben.
Gilles 'SO - hör auf böse zu sein'
Um doppelte Kontrolle, versuchen etimesstatt etimeund die Ergebnisse zu vergleichen.
Ruslan

Antworten:

16

Nach dem Standard :

Im POSIX-Gebietsschema die seit dem Start des Prozesses verstrichene Zeit in folgender Form:

[[dd-]hh:]mm:ss

wobei dd die Anzahl der Tage, hh die Anzahl der Stunden, mm die Anzahl der Minuten und ss die Anzahl der Sekunden darstellt. Das Feld dd muss eine Dezimalzahl sein. Die Felder hh, mm und ss müssen zweistellige Dezimalzahlen sein, die links mit Nullen aufgefüllt sind.

Die 9 bedeutet also Tage, ob Sie es glauben oder nicht. Könnten Sie die Ausgabe von htop falsch interpretieren? Was sagt top (mit einem Zeitformat von minutes:seconds)? Sind Sie sicher, dass das Feld, das Sie in htop betrachten, etime entspricht? (zum Beispiel könnte es Mittel 126 Minuten von CPU Zeit?)

Random832
quelle
Danke für die Bestätigung. htop zeigt definitiv 126 Stunden an, aber ich denke, dies ist möglicherweise keine Wandzeit, sondern eine andere Zeit (möglicherweise CPU-Zeit). Das Feld in htop ist nicht äquivalent zu etime, ich habe hier falsch angenommen.
Jon Cram
1
@ JonCram Bist du sicher, dass es Stunden sind? Das ursprüngliche Oberteil zeigt nur Minuten an (dh es werden Minuten über 60 angezeigt, anstatt bis zu Stunden), eine Zahl wie 126: 37 bedeutet 126 Minuten und 37 Sekunden. Ich dachte, htop könnte das gleiche sein. 126 Stunden CPU-Zeit in 9 Tagen scheinen viel zu sein.
Random832