Cara paling elegan untuk memeriksa apakah suatu proses sedang berjalan, dan mulai jika tidak?

8

Saya telah bermain-main dengan berbagai cara untuk melakukan ini di bash, dan saya telah menemukan pgrep program > /dev/null || programcara terpendek / paling elegan untuk melakukan ini. Apakah ada metode yang lebih baik dari ini?

seseorang
sumber

Jawaban:

9

Dengan pgrep, Anda mungkin cocok dengan program lain dari hanya program Anda. Jika Anda ingin memastikan cocok dengan program yang tepat, gunakan pidofsaja.

Anda juga dapat menggunakan start-stop-daemondengan file PID. start-stop-daemonakan memeriksa apakah program sedang berjalan dan mulai jika diperlukan. Inilah yang digunakan di sebagian besar skrip init.

ℝaphink
sumber
Akan melalui file manual start-stop-daemon dan itu terlihat bagus. Terima kasih atas wawasannya!
aperson
1
Anda mungkin juga tertarik pada /lib/lsb/init-functionspustaka, yang sebagian besar skrip init menguraikan untuk menggunakan fungsi wrapper seperti start_daemonatau pidofproc.
ℝaphink
1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 
SergioAraujo
sumber
Bisakah Anda jelaskan kepada OP apa yang harus dilakukan dengan perintah ini?
nanofarad