
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
pstree
gibt 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
ping
Fü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.rc
oder 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.