Ich versuche, ein Skript zu schreiben, mit dem die CPU-Auslastung eines Prozesses über einen bestimmten Zeitraum überwacht werden kann (um ein Diagramm zu erstellen).
Bisher ist dies der Befehl, den ich verwende
ps -p $PROCID -o cputime,etimes
Meine einzige Sorge ist, dass die Ausgabe von Cputime zu sein scheint [dd]hh:mm
(oder etwas Ähnliches, kann mich jetzt nicht mehr aus dem Kopf erinnern)
Gibt es eine Möglichkeit, die Cputime in Sekunden zu formatieren, ähnlich wie etime -> etimes, um die verstrichene Zeit in Sekunden zu ermitteln?
Bearbeiten: Dies ist die Ausgabe, die ich gerade erhalte
2-03:01:33 2653793
Ich möchte, dass der erste Parameter in Sekunden und nicht in Tagen, Stunden, Minuten und Sekunden formatiert wird.
bash
ps
text-formatting
dreadiscool
quelle
quelle
Antworten:
Dies konvertiert das erste Mal in Sekunden:
Beispielsweise erzeugt der Befehl ps Folgendes:
Der
awk
Befehl verarbeitet das und gibt Folgendes zurück:Erläuterung
-F'[: ]+'
Dies weist awk an, sowohl Doppelpunkte als auch Leerzeichen als Feldtrennzeichen zu behandeln. Auf diese Weise werden die Stunden, Minuten und Sekunden als separate Felder angezeigt.
/:/ {t=$3+60*($2+60*$1); print t,$NF}
Die Initiale
/:/
beschränkt den Code darauf, nur in Zeilen zu arbeiten, die einen Doppelpunkt enthalten. Dadurch werden die Kopfzeilen entfernt. Die Anzahl der Sekunden berechnet sich aus Stunden, Minuten, Sekunden übert=$3+60*($2+60*$1)
. Der resultierende Wert fürt
wird dann zusammen mit der verstrichenen Zeit gedruckt.Bearbeitungstage
Wenn
ps
produziert Tage, Stunden, Minuten, Sekunden, wie in:Verwenden Sie dann stattdessen diesen Code:
Wenn der Ausgabe Tage vorangestellt werden oder nicht, verwenden Sie diesen Kombinationsbefehl:
quelle
Wenn du awk nicht ins Spiel bringen willst, eine reine Bash-Lösung (t_str enthält den formatierten String, t_sec die dekodierte Zeit in Sekunden):
quelle
Sie geben nicht an, für welches Betriebssystem dies ist. Wenn es sich um Linux handelt und Sie an der Überwachung eines bestimmten Prozesses interessiert sind, lohnt es sich möglicherweise, ihn zu analysieren. Weitere Informationen finden Sie auf
/proc/$PROCID/stat
derproc(5)
Handbuchseite.quelle