在UNIX中,我有一個實用程序,比如'Test_Ex',一個二進制文件。我如何編寫一個作業或shell腳本(作爲一個cron作業),始終在後臺運行,它會持續檢查'Test_Ex'是否每5秒仍在運行(並可能隱藏此作業)。如果它正在運行,則什麼也不做。如果不是,請刪除指定路徑中的目錄。編寫後臺進程來檢查進程是否仍然有效
1
A
回答
2
試試這個腳本:
pgrep Test_Ex > /dev/null || rm -r dir
如果沒有pgrep
,使用
ps -e -ocomm | grep Test_Ex || ...
代替。
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只是浪費資源。
相關問題
- 1. 檢查後臺進程
- 2. Android後臺進程檢查
- 3. 如何檢查給定ID的進程是否仍然存在?
- 4. 檢測主進程是否已從後臺進程退出
- 5. 如何檢查正在運行的進程是否是後臺進程?
- 6. 有沒有辦法檢查子進程是否仍在運行?
- 7. 查找後臺進程的進程ID
- 8. 編程檢查某個進程在後臺中運行
- 9. 客戶端斷開連接後,進程是否仍然繼續
- 10. Grails後臺進程檢查時間
- 11. 如何運行後臺進程來檢查用戶會話是否結束
- 12. Excel進程仍在後臺運行
- 13. 編寫一個unix或perl腳本來檢查進程是否正在運行
- 14. 是否仍然有效?
- 15. Sharekit是否仍然有效?
- 16. PHP後臺進程仍然影響頁面加載
- 17. 爲後臺進程編寫測試(如後臺作業)
- 18. 如何檢查殭屍進程是否仍在偵聽端口?
- 19. 檢查Process.Start啓動的進程是否仍在運行?
- 20. 如何檢查進程是否仍在c內核中運行?
- 21. 如何檢查子進程是否仍在運行?
- 22. C#,Windows 7:如何可靠地檢查進程是否仍在寫入文件?
- 23. 批處理程序來檢查進程是否存在
- 24. 程序是否仍然編譯錯誤?
- 25. 檢查一個URL是否仍然有效或永久移動
- 26. 檢查自動更新訂閱是否仍然有效
- 27. JavaScript Boolean檢查Google Auth令牌是否仍然有效?
- 28. 如何檢查訪問令牌是否仍然有效?
- 29. 典雅地檢查HTTPSession引用是否仍然有效
- 30. 如何檢查內存分配是否仍然有效?
謝謝..程序是編輯crontab並添加這一行。這個手動任務可以使用shell腳本作爲安裝過程的一部分來完成嗎? – Abhishek 2010-06-30 13:34:28
@Abhi:是的,只需將該行放入腳本文件即可。該文件的第一行應該是'#!/ bin/sh',並且'pgrep ...'命令行應該像'while:做pgrep ...;睡5次;完成「,然後在後臺運行腳本:'scriptname&'。您可能需要保存PID,以便在某個時候可以殺死它。 – 2010-06-30 15:18:33