Prüfen, ob beim Start ein Programm/Skript ausgeführt wurde?

Prüfen, ob beim Start ein Programm/Skript ausgeführt wurde?

Unter Linux gibt es viele Dateien, die wir ändern können, um ein beim Start ausgeführtes Programm hinzuzufügen (/etc/rc.local, bashrc, bash_profile, $HOME/.config/autostart, ...)? Jetzt habe ich eine umgekehrte Frage: Ich habe ein Programm. Kann ich überprüfen, ob dieses Programm beim Start ausgeführt wurde?

**Hinweis: Das Programm kann einmal beim Start und beim Beenden ausgeführt werden

Antwort1

Sie können sich dieZugriffszeitfür das Skript. Dies ist nicht 100% zuverlässig (da einige Dateisysteme gesetzt sein können noatime). Aber es ist normalerweise nützlich für Init-Skripte, z. B.

find /etc -type f -atime -1

Ich fand es nützlich füreine ganze Weile.

Antwort2

pstreegibt Ihnen eine detaillierte Ausgabe des laufenden Prozesses in einem Baumformat.

Beispielausgabe hier

init─┬─auditd───{auditd} ├─crond ├─docker─┬─10*[bash] │ ├─docker───5*[{docker}] │ ├─docker───4*[{docker}] │ ├─2*[docker───3*[{docker}]] │ ├─start-app.sh─┬─java───40*[{java}] │ │ └─tail │ ├─start-app.sh─┬─java───81*[{java}] │ │ └─tail

Antwort3

Sie können den nächsten Befehl ausführen:

ps aux | grep PROCESS_NAME

pingFür einen Prozess lautet das Ergebnis beispielsweise :

user  9639  0.0  0.0   6508   732 pts/16   S+   08:44   0:00 ping 192.168.0.1
user  9641  0.0  0.1  12972  2420 pts/15   R+   08:44   0:00 grep --colour=auto ping

Wenn Sie nur die zweite Zeile erhalten, bedeutet dies, dass der Prozess nicht ausgeführt wird.

Wenn Sie vermuten, dass der Prozess abstürzt, können Sie verwenden atop, Sie finden eine weitere Frage zuatop Hier.

Antwort4

Ich würde mir die Initialisierungsorte ansehen und prüfen, ob das Programm dort zur Ausführung eingerichtet ist.

Ehrlich gesagt, wenn das Programm irgendwiekönnteausgeführt, aber Sie wissen nicht, ob es ausgeführt wurde oder nicht. Die einzige Möglichkeit, dies festzustellen, besteht darin, entweder zu prüfen, ob es eine Möglichkeit zum Ausführen gab (z. B. ob es irgendwo registriert war local.rcoder so), oder die Ergebnisse zu prüfen (z. B. berührt das Programm immer die Datei /home/someuser/a, und nichts anderes hätte sie berühren sollen).

Das Obige setzt voraus, dass Sie keine Protokolle haben.

verwandte Informationen