Alle Prozesse im System loggen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Alle Prozesse im System loggen

Beitrag von katzenfan » 24.11.2008 04:43:37

Hallo an alle,

mal 'ne dumme Frage. Ich will bei mir alle Prozesse loggen und in einer separaten Datei ausgeben lassen. Wie bastel ich am besten?

ciao
katzenfan

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Re: Alle Prozesse im System loggen

Beitrag von badera » 24.11.2008 07:25:41

Suchst Du

Code: Alles auswählen

ps -A > myprocesses.log
?

katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Re: Alle Prozesse im System loggen

Beitrag von katzenfan » 24.11.2008 13:17:55

badera hat geschrieben:Suchst Du

Code: Alles auswählen

ps -A > myprocesses.log
?
Nun, merci für diesen Tip. Der funktioniert auch, nur erneuert der sich nicht automatisch; ich will hier etwas, daß ständig nonstop alle Prozesse lokal mitschneidet.

ciao
katzenfan

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Alle Prozesse im System loggen

Beitrag von Duff » 24.11.2008 13:35:28

Wenn dir diese Ausgabe reicht, dann pack doch einfach eine while-Schleife darum und hänge die Ausgabe an die Datei.

Code: Alles auswählen

while true
do
ps -A >> process.list.log
sleep 10
done
Dies wird nun alle 10 Sekunden ausgeführt.
Oh, yeah!

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Alle Prozesse im System loggen

Beitrag von cosmac » 24.11.2008 14:02:10

hi,

die "offizielle" Lösung nennt sich Process Accounting. Das muß im Kernel eincompiliert sein (ist es beim Debian Kernel) und muß nach jedem Boot mit accton eingeschaltet werden (das erledigt ein Init-Script aus Debianacct). Für die Auswertung gibt es im gleichen Paket die Befehle lastcomm und sa, die Log-Datei ist nämlich binär (man 5 acct).

Der Vorteil gegenüber den "ps"-Lösungen ist, dass jeder Prozess registriert wird, weil es im Kernel gemacht wird. Der Nachteil ist, dass die Info erst in die Datei geschrieben wird, sobald ein Prozess beendet wird. Bei Stromausfall werden die gerade laufenden Prozesse also nicht erfasst.

Für ein Logging, das alle Prozesse ab dem Start erfasst, müsste man eine Kombination aus ps und acct basteln. Dazu könnte man aus /proc/loadavg die aktuell höchste PID auslesen und für diese und die nächst kleineren PIDs aus /proc die Details (Kommandozeile, etc.) holen. Wenn dabei eine PID nicht mehr zu finden ist (weil der Prozess beendet wurde, bevor wir ihn erfassen konnten), holt man die Daten ersatzweise aus /var/log/pacct.

so ungefähr vielleicht...
Beware of programmers who carry screwdrivers.

katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Re: Alle Prozesse im System loggen

Beitrag von katzenfan » 25.11.2008 13:48:17

Hallo an alle,

grundsätzlich funktioniert es, habe aber festgestellt, daß das Aufrufen eines Scriptes mit untenstehendem Code zur Bootlaufzeit nix bringt, weil das System schlicht stehenbleibt.

Prozess Accounting läuft bei mir zwar auch, aber wenn ich beides vergleiche, stehen vollkommen unterschiedliche Prozesse drin; die Dateien sind inhaltlich nicht identisch.

ciao
katzenfan

Antworten