2010-06-30 35 views
1

在UNIX中,我有一個實用程序,比如'Test_Ex',一個二進制文件。我如何編寫一個作業或shell腳本(作爲一個cron作業),始終在後臺運行,它會持續檢查'Test_Ex'是否每5秒仍在運行(並可能隱藏此作業)。如果它正在運行,則什麼也不做。如果不是,請刪除指定路徑中的目錄。編寫後臺進程來檢查進程是否仍然有效

回答

2

試試這個腳本:

pgrep Test_Ex > /dev/null || rm -r dir 

如果沒有pgrep,使用

ps -e -ocomm | grep Test_Ex || ... 

代替。

+0

謝謝..程序是編輯crontab並添加這一行。這個手動任務可以使用shell腳本作爲安裝過程的一部分來完成嗎? – Abhishek 2010-06-30 13:34:28

+0

@Abhi:是的,只需將該行放入腳本文件即可。該文件的第一行應該是'#!/ bin/sh',並且'pgrep ...'命令行應該像'while:做pgrep ...;睡5次;完成「,然後在後臺運行腳本:'scriptname&'。您可能需要保存PID,以便在某個時候可以殺死它。 – 2010-06-30 15:18:33

2

upstart這樣的工具,我認爲最初是Ubuntu linux發行版的一部分,對於監視正在運行的任務很有用。

2

做到這一點的最好方法就是不要這樣做。

 
#!/bin/sh 
Test_Ex 
logger "Test_Ex died" 
rm /p/a/t/h 

 
#!/bin/sh 
while ! Test_ex 
do 
    logger "Test_Ex terminated unsuccesfully, restarting in 5 seconds" 
    sleep 5 
done 

查詢PS經常是一個壞主意,並試圖對其進行監控:如果你想知道,如果Test_Ex仍在運行,然後從腳本,看起來像啓動來自cron是一個可怕的,可怕的想法。看來crond總是在運行,但你不能再依賴於這個想法,而不是依靠包裝器腳本保持活力;任何一個人都可以隨時被殺死。每10秒喚醒一次查詢ps只是浪費資源。

相關問題