GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie protokolliere ich die CPU-Nutzung pro Prozess?

Lösung 1:

Sie könnten versuchen, so etwas zu tun:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

das würde Ihnen die Top-Ten-Prozesse in Bezug auf die CPU-Auslastung zeigen. Sie können die Anzahl der angezeigten Prozesse ändern, indem Sie die 10 in „head -10“ in eine andere Zahl ändern, und wie oft sie aktualisiert wird, indem Sie die 3 in „sleep 3“ ändern oder den Teil „sleep 3“ vollständig entfernen.

Lösung 2:

Schauen Sie sich oben an, es wird ein Binärprotokoll von so ziemlich allem schreiben, was Sie möglicherweise möchten, und dann können Sie eine Top-ähnliche GUI verwenden, um die Zeitscheiben des Tages durchzugehen (standardmäßig werden die Daten alle 5 Minuten erfasst). http://www.atcomputing.nl/Tools/atop/

Lösung 3:

Ich denke, dass Munin eines der guten Überwachungswerkzeuge ist, das Ihnen helfen wird, einige Informationen über die Aktivitäten Ihrer Box zu erhalten. Außerdem gibt es einige Befehlszeilenwerkzeuge wie sar, iostat, ps, top für solche Zwecke.

Lösung 4:

Die anderen Antworten haben Ihnen nur gezeigt, wie Sie sehen können, was gerade passiert, was nicht hilft, wenn das System neu gestartet wurde.

Wenn Sie möchten, dass diese Informationen für die Nachwelt aufgezeichnet werden (oder für die Rechnungsstellung oder was auch immer Sie für eine andere Verwendung haben), möchten Sie die Prozessbuchhaltung.

Hier ist ein HOWTO, das ich gefunden habe, aber ich will ehrlich sein – es ist ein Jahrzehnt her, seit ich die Prozessbuchhaltung verwendet habe.

http://tldp.org/HOWTO/Process-Accounting/

Lösung 5:

Ein benutzerfreundlicherer Ansatz für Shawns Lösung für nahezu Echtzeit-Überwachung:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Dadurch wird eine statische Ansicht der 20 wichtigsten Prozesse bereitgestellt, die alle 1 Sekunde aktualisiert wird. Die Option "c" im Befehl ps gibt den Namen der ausführbaren Datei des Prozesses aus und nicht den gesamten Befehl args. Sie können diese Option weglassen, wenn Sie stattdessen die gesamten Befehlsinformationen benötigen. Spalte %Speicherauslastung ebenfalls hinzugefügt.


Linux
  1. CPU-Auslastung und Speicherauslastung eines einzelnen Prozesses unter Linux abrufen?

  2. Begrenzung der Prozessspeicher-/CPU-Nutzung unter Linux

  3. Abrufen einer CPU-Statistik pro Thread

  4. Wie kann ich die Netzwerk-E/A-Nutzung pro Prozess unter Linux überwachen?

  5. So beenden Sie einen <defunct>-Prozess mit übergeordnetem 1

So begrenzen Sie die CPU-Auslastung eines Prozesses in Linux

So zeigen Sie die CPU-Auslastung über die Befehlszeile an

So erhalten Sie die CPU-Auslastung eines einzelnen Prozesses in Linux

So überprüfen Sie die Linux-CPU-Auslastung oder -Auslastung

Wie wird die Speichernutzung in Linux gemeldet?

Linux - Wie sehe ich, wann ein Prozess gestartet wurde?