Il modo più elegante per verificare se un processo è in esecuzione e iniziare in caso contrario?


8

Ho pasticciato con vari modi per farlo in bash e ho scoperto pgrep program > /dev/null || programdi essere il modo più breve / elegante per farlo. Esiste un metodo migliore di questo?

Risposte:


9

Con pgrep, potresti abbinare altri programmi oltre al tuo. Se vuoi essere sicuro di abbinare il programma giusto, usa pidofinvece.

È inoltre possibile utilizzare start-stop-daemoncon un file PID. start-stop-daemoncontrollerà se il programma è in esecuzione e lo avvierà se necessario. Questo è ciò che viene utilizzato nella maggior parte degli script init.


Scorrendo il file man di start-stop-daemon e sembra carino. Grazie per la comprensione!
aperson,

1
Potresti anche essere interessato alla /lib/lsb/init-functionslibreria, che la maggior parte degli script init analizza per usare le funzioni wrapper come start_daemono pidofproc.
ℝaphink,

1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 

Potresti spiegare all'OP cosa fare di questo comando?
nanofarad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.