Ähnlich wie bei Frage Wie wird die CPU-Last protokolliert? Ich möchte den Speicher eines Prozesses protokollieren.
Der Prozess, den ich protokollieren möchte, wird auf einem Remoteserver beendet und ich möchte die CPU-Auslastung und die Speicherauslastung ermitteln, kurz bevor er beendet wurde.
[aktualisieren]
Sowohl Stefano Palazzos nette kleine Pythonschrift als auch
Michałs einzeilige Ausgabewerte sind kleiner als in top
für CPU und Mem. Hast du eine Idee warum?
Ausgabe oben:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2312 schXX 20 0 1241m 328m 58m S 100 0.3 11:56.68 MATLAB
Ausgabe des Python-Skripts von Stefano Palazzo:
python memlogger.py 2312
%CPU %MEM
76.00 0.20
76.00 0.20
command-line
cpu-load
logging
memory-usage
Framester
quelle
quelle
ps
sich unterscheiden kann vontop
: stackoverflow.com/questions/131303/…Antworten:
Sie können einen Einzeiler in der Shell erstellen:
um den Prozess mit pid = 123 zu protokollieren:
oder um das Protokoll zu sehen und in die Datei zu schreiben:
Wenn andere Daten protokolliert werden sollen, ändern Sie die
-o {this}
Optionen.man ps
Informationen zu den verfügbaren Parametern finden Sie im Abschnitt "STANDARDFORMAT-SPEZIFIKATIONEN". Wenn Sie eine andere Zeitauflösung wünschen, ändern Sie diesleep {this}
Funktionlogpid()
.quelle
Wenn Sie genau hinter den
top
Statistiken her sind, können Sietop
im Batch-Modus die PID des Prozesses angeben, nach dem Sie suchen. Nehmen Sie das Beispiel von dieser Seite ( http://www.dedoimedo.com/computers/linux-cool-hacks.html ), wenn Sie tipptenSie müssten "top running" im Batch-Modus (-b) ausführen. Es wird alle 10 Sekunden aktualisiert, wie durch das Delay-Flag (-d) angegeben, um insgesamt 3 Iterationen (-n) zu erhalten. Die Ausgabe wird gesendet in eine Datei. " Inklusive können
-p
Siepid
den Prozess angeben, nach dem Sie suchen . Dies wird natürlich mehr als nur CPU und RAM zurückgeben, aber es wird diese Felder enthalten. In meinem Fall würde ich zum Beispiel Folgendes erhalten, wenn ich die PID 9189 überwachetop -b -d 10 -n 3 -p 9189 >> ~/top-file
:quelle
watch
scheint mir dafür nicht ideal zu sein: superuser.com/questions/281347/filtering-top-command-outputDieses einfache Python-Skript sollte tun, was Sie wollen:
Sie müssen zuerst die Prozess-ID des zu überwachenden Programms ermitteln, bevor Sie das Skript mit der PID als Argument ausführen können:
Die CPU-Auslastung und die RAM-Auslastung werden zweimal pro Sekunde in Prozent ausgegeben:
Anschließend können Sie die Ausgabe in eine Datei umleiten, um sie später in eine Tabelle zu importieren (
python log.py 9391 > firefox_log.txt
) und die Daten in eineTab
als Trennzeichen ausgewählte Tabelle zu importieren .Das Programm wird beendet, wenn Sie Strg + C drücken oder wenn der Vorgang abgebrochen wird.
quelle