Die eleganteste Methode, um zu überprüfen, ob ein Prozess ausgeführt wird, und zu starten, wenn nicht?

8

Ich habe mit verschiedenen Methoden herumgespielt, um dies in Bash zu tun, und ich habe festgestellt pgrep program > /dev/null || program, dass dies die kürzeste / eleganteste Art ist, dies zu tun. Gibt es eine bessere Methode als diese?

eine Person
quelle

Antworten:

9

Mit pgrepkönnen Sie andere Programme als nur Ihre abgleichen. Wenn Sie sicher sein möchten, dass Sie das richtige Programm finden, verwenden Sie pidofstattdessen.

Sie können auch start-stop-daemonmit einer PID-Datei verwenden. start-stop-daemonprüft, ob das Programm läuft und startet es bei Bedarf. Dies wird in den meisten Init-Skripten verwendet.

ℝaphink
quelle
Wenn Sie die Man-Datei von Start-Stop-Daemon durchgehen, sieht es gut aus. Danke für den Einblick!
Aperson
1
Möglicherweise interessiert Sie auch die /lib/lsb/init-functionsBibliothek, die von den meisten Init-Skripten analysiert wird, um Wrapper-Funktionen wie start_daemonoder zu verwenden pidofproc.
inkaphink
1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 
SergioAraujo
quelle
Könnten Sie dem OP bitte erklären, was mit diesem Befehl zu tun ist?
Nanofarad