Ich verwende einen ps
Befehl 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:seconds
und 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 htop
126 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?
etimes
statt etime
und die Ergebnisse zu vergleichen.
ps
zeigt das eine oder andere an, abhängig von den Optionen, die Sie übergeben.