我有一個進程,其他進程正試圖殺死,如果他們設法做到這一點,我怎麼才能確保進程將再次運行?如果使用sigkill殺死一個進程,我該如何讓它再次運行?
回答
結賬inittab。尋找重生:)
這一進程將重新啓動 無論何時終止
這是從我自己的inittab文件的例子:
c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux
c1
是一個ID(是有是唯一的),2,3,4,5
是適用的運行級別,respawn聲明我之前說過的,其餘的是命令。在那裏你可以簡單地添加你的命令,它應該運行良好。
有趣。我沒有想到,我通常只考慮啓動設置。我猜這可能適用於由用戶手動啓動的進程?對於Windows,我想他必須將他的進程編寫成一個自動重啓的Windows進程(我認爲*可能)... – FrustratedWithFormsDesigner 2010-05-21 14:06:01
我也會對在Windows上執行此操作的方式感興趣。編輯:我發現這個:http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/trun_processrestart.html但還沒有測試過。 – nc3b 2010-05-21 14:10:03
我認爲他假設他正在運行WebSphere服務器,但他甚至沒有說這是一個服務器進程。 – FrustratedWithFormsDesigner 2010-05-21 14:27:01
信號處理的信號不同。大多數信號到達信號處理器可以處理它的目標處理過程,例如, SIGTERM是kill
通常發送的信息。如果使用kill -sigkill
(或kill -9
,它們是等效的),則信號永遠不會到達該過程;該進程會盡可能以對OS安全的方式被終止(如果它在系統調用中處於忙碌狀態,系統調用結束後會立即終止進程,因爲在內核中運行的線程被終止模式可能會chrash操作系統,如果鎖沒有被釋放等)。
因此,無論程序設計語言如何,一個進程都無法阻止或恢復SIGKILL。
某些Linux版本(如Ubuntu)更喜歡/etc/event.d而不是inittab。這是一個類似的概念,但不同的實現。
您可以從inittab
重新生成,但您幾乎無法控制何時以及如何重新啓動進程 - 您必須編輯inittab以停止重新生成。而且,inittab respawning無法執行任何有關佔用大量CPU或RAM資源的鎖定進程和進程。您也不會注意到您的過程每兩秒鐘重新啓動一次。
您可以使用進程監視守護進程來獲得額外的功能和靈活性。監控守護進程允許您爲過程控制添加任意複雜的行爲。當然,如果你的要求太過分了,你可能不得不編寫自己的守護進程。
最好使用滿足您需求的現有解決方案。
我用Monit已經有了很好的結果。配置語言非常強大,如果需要,你可以做相當複雜的事情。您還可以啓用Web界面,以便您遠程停止,啓動和禁用進程。查看presentation以獲得總覽。
你總是可以拉一個Robin Hood/Friar Tuck的東西,但是現在你可以同時殺死兩個進程。
- 1. SIGKILL殺死進程
- 2. 我該如何殺死Windows上由exec運行的子進程?
- 3. 我如何用SIGKILL殺死java進程中的Linux進程Process.destroy()做SIGTERM
- 4. 我該如何殺死這個過程?
- 5. 我該如何殺死一個無限的PHP進程?
- 6. 我該如何在每秒之後殺死一個進程?
- 7. 在Python 2.5中,我該如何殺死一個子進程?
- 8. NodeJS assert.AssertionError:我該如何殺死它?
- 9. 我該如何殺死應用程序?
- 10. 殺死一個進程,如果它存在
- 11. 如果它尚未運行,請讓javascript運行一個進程
- 12. 如何使用powershell強行殺死一個進程?
- 13. 如何殺死一個進程?
- 14. 如何殺死一個web進程
- 15. 如何殺死一個C#進程?
- 16. 如何殺死一個子進程
- 17. 如何殺死一個服務進程?
- 18. 如何在殺死一個php腳本時殺死passthru進程?
- 19. 如何編寫一個Resque條件,指出「如果一個進程運行時間超過n秒,殺死它」?
- 20. 如果進程正在運行,我如何讓timer2只運行一次函數?
- 21. 如何一次性殺死一個進程的許多實例?
- 22. 我應該殺死一個以線程運行的函數(.Net)
- 23. 我將如何去殺死一個進程/應用程序?
- 24. 使用GetProcessesByName再次獲取被殺死的進程
- 25. 。我如何殺死它?
- 26. C#如何殺死使用Process.Start()強制殺死我的程序時運行的進程
- 27. 如何一次殺死多個龍捲風進程?
- 28. android如何殺死一個進程或應用程序並檢測一些應用程序再次啓動
- 29. 如何殺死nohup進程?
- 30. 如何根據它的參數殺死一個進程
你嘗試過死靈法術嗎? – FrustratedWithFormsDesigner 2010-05-21 14:01:06
[CoreWars](http://www.corewars.org/)! – 2010-05-21 14:01:08
@Marcelo Cantos:太棒了!我以後要檢查一下。 – FrustratedWithFormsDesigner 2010-05-21 14:06:50