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
Alle Prozesse im System loggen
Re: Alle Prozesse im System loggen
Suchst Du
?
Code: Alles auswählen
ps -A > myprocesses.log
Re: Alle Prozesse im System loggen
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.badera hat geschrieben:Suchst Du?Code: Alles auswählen
ps -A > myprocesses.log
ciao
katzenfan
Re: Alle Prozesse im System loggen
Wenn dir diese Ausgabe reicht, dann pack doch einfach eine while-Schleife darum und hänge die Ausgabe an die Datei.
Dies wird nun alle 10 Sekunden ausgeführt.
Code: Alles auswählen
while true
do
ps -A >> process.list.log
sleep 10
done
Oh, yeah!
Re: Alle Prozesse im System loggen
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
acct). 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...
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
![Debian](/pics/debianpackage.png)
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.
Re: Alle Prozesse im System loggen
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
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