Cách thanh lịch nhất để kiểm tra nếu một quá trình đang chạy, và bắt đầu nếu không?


8

Tôi đã loay hoay với nhiều cách khác nhau để làm điều này trong bash, và tôi thấy đó pgrep program > /dev/null || programlà cách ngắn nhất / thanh lịch nhất để làm việc này. Có một phương pháp tốt hơn thế này?

Câu trả lời:


9

Với pgrep, bạn có thể phù hợp với các chương trình khác không chỉ của bạn. Nếu bạn muốn chắc chắn phù hợp với chương trình phù hợp, pidofthay vào đó hãy sử dụng .

Bạn cũng có thể sử dụng start-stop-daemonvới một tập tin PID. start-stop-daemonsẽ kiểm tra xem chương trình có đang chạy hay không và khởi động nó nếu cần. Đây là những gì được sử dụng trong hầu hết các tập lệnh init.


Đi qua tập tin người đàn ông của start-stop-daemon và nó trông thật tuyệt. Cảm ơn vì sự sáng suốt!
aperson

1
Bạn cũng có thể quan tâm đến /lib/lsb/init-functionsthư viện, hầu hết các tập lệnh init phân tích để sử dụng các hàm bao bọc như start_daemonhoặc pidofproc.
ℝaphink

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

Bạn có thể vui lòng giải thích cho OP phải làm gì với lệnh này?
nanofarad
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.