Linux-Befehl zur Ausgabe jeder neuen Prozess-PID

Linux-Befehl zur Ausgabe jeder neuen Prozess-PID

Gibt es einen Linux-Befehl, der nach neuen Prozessen Ausschau hält?

Mein Ziel dabei ist, dass ich sehen möchte, wann ein neuer gulpBefehl aufgerufen wird, die Befehlszeile mit etwas wie ausführen lassen psund sie dann mit filtern möchte sed.

Wichtig ist das Beobachten neuer Prozesse, da ich eine PID nicht mehr nachschlagen kann, wenn sie einmal fertig ist.

Antwort1

Sie können das auditdSubsystem verwenden, um die auf Ihrem System ausgeführten Befehle zu protokollieren. Es ist in den Kernel eingebunden und protokolliert daher sehr zuverlässig alles, was ausgeführt wird.

Meine Beispiele beziehen sich auf Fedora Linux. Abhängig von Ihrer Distribution können Sie kleine Unterschiede feststellen. (Das auditdSubsystem ist recht komplex, daher kann es schwierig sein, dies richtig zu machen.)

Überprüfen Sie zunächst, ob auditd bereits installiert und ausgeführt wird, und zwar mit:

$ systemctl status auditd.service

Anschließend können Sie prüfen, welche Regeln geladen sind. Standardmäßig erhalten Sie unter Fedora:

$ sudo auditctl -l
-a never,task

Daher müssen wir diese „Task“-Liste (die Systemaufrufe unterdrückt) entfernen und eine hinzufügen, die „execve“ protokolliert (das ist der Systemaufruf, der Befehle ausführt).

$ sudo auditctl -d never,task
$ sudo auditctl -a always,exit -F arch=b64 -S execve

Sobald dies erledigt ist, werden alle Befehle im Prüfsystem protokolliert.

Sie können es dann mit dem Befehl durchsuchen ausearch. Um beispielsweise alle Ausführungen zu finden, die „gulp“ aufrufen, können Sie Folgendes verwenden:

$ sudo ausearch -c gulp

Die Ausgabe wird recht ausführlich sein... Konzentrieren Sie sich auf die Zeile type=EXECVE. Die Argumente werden wie folgt aufgelistet:a0="gulp" a1="first_argument" a2="second_argument" ...

Wenn Sie anstelle einer Zeichenfolge in Anführungszeichen eine lange Zahlenfolge erhalten, verwenden Sie -izur Interpretation.

Das Protokollieren aller Befehle, die auf Ihrem System ausgeführt werden, kann sehr aufwändig sein und viel Speicherplatz beanspruchen! Es ist möglich, dass es auch die Leistung beeinträchtigt. Wenn Sie diese Änderungen rückgängig machen möchten, können Sie den Standardregelsatz mit diesem Befehl neu laden:

$ sudo augenrules --load

Sie können auch einen Filter auf die Protokollierungsregel anwenden, um beispielsweise nur Ausführungen von /usr/bin/gulp zu protokollieren:

$ sudo auditctl -a always,exit -F arch=b64 -F exe=/usr/bin/gulp -S execve

Das ist vielleicht übertrieben, aber es ist so zuverlässig, wie es nur sein kann. Ich hoffe, Sie finden sich im auditdSubsystem zurecht und es liefert Ihnen die Informationen, nach denen Sie suchen!

verwandte Informationen