[英]python-twisted and SIGKILL
我有一個使用扭曲框架的python應用程序。
我利用存儲在twistd生成的pidfile中的值。 啟動程序腳本會檢查它是否存在,如果pidfile已存在,則不會生成守護程序進程。
但是,twistd在獲取SIGKILL
信號時不會刪除.pid文件。 這使得啟動程序腳本認為守護程序已在運行。
我意識到停止守護進程的正確方法是使用SIGTERM
信號,但問題是當啟動守護進程的用戶注銷時,守護進程永遠不會收到SIGTERM
信號,所以顯然它被SIGKILL
殺死了。 這意味着一旦用戶注銷,他將永遠無法再次啟動守護進程,因為pidfile仍然存在。
在這種情況下,有什么方法可以讓文件消失嗎?
從signal(2)
手冊頁:
無法捕獲或忽略信號
SIGKILL
和SIGSTOP
。
因此,該進程無法運行任何清理代碼來響應該信號。 通常,您只使用SIGKILL
來終止不響應SIGTERM
(可以捕獲)的進程。
您可以更改啟動器(或將其包裝在另一個啟動器中)並在嘗試重新啟動twistd之前刪除pid文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.