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?

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.


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 

Könnten Sie dem OP bitte erklären, was mit diesem Befehl zu tun ist?
Nanofarad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.