每當我給出重啓命令時,我的進程正在接收SIGTERM信號並正在處理它。如果SIGTERM由於重新啓動,我不想處理它。處理系統重啓產生的信號
請給我任何想法。
當我做system("reboot")
時,有什麼辦法可以發送kill -9
信號給我的程序嗎?
我正在使用Cent OS(Linux)。
每當我給出重啓命令時,我的進程正在接收SIGTERM信號並正在處理它。如果SIGTERM由於重新啓動,我不想處理它。處理系統重啓產生的信號
請給我任何想法。
當我做system("reboot")
時,有什麼辦法可以發送kill -9
信號給我的程序嗎?
我正在使用Cent OS(Linux)。
無論何時我給重新啓動命令,我的進程正在接收SIGTERM信號並正在處理它。如果SIGTERM由於重新啓動,我不想處理它。
你可以嘗試在你的信號處理程序運行/sbin/runlevel
(好吧,也許過程產卵甚至是不可能的信號處理程序雖然)來獲得當前的運行級別。運行級別6重新啓動。
有沒有辦法發送kill -9信號到我的進程當我做系統(重新啓動)。
如果您的進程是由init腳本啓動的,您可以更改腳本以便使用kill -KILL
而不是其他方式執行停止。
我正在使用Cent OS(linux)。
我不知道以下情況是否適用於CentOS。
在Debian中,所有剩餘的進程(在所有kill腳本運行後都運行的進程)通過/etc/init.d/sendsigs
發送信號。如果您有管理員訪問權限,則可以嘗試對其進行自定義,以便特殊命名的進程(您的)在沒有TERMing的情況下獲得KILL。
儘管如此,所有與/run/sendsigs.omit
相關的pid和/run/sendsigs.omit.d/
中的所有與文件相關的pid都沒有收到任何信號。
如果您的進程正在發出重啓系統的命令,顯然它知道重啓即將到來。事先設置合適的信號處理器,例如
signal(SIGTERM, SIG_IGN); // or SIG_DFL to restore default action (terminate process)
system("reboot");
你的過程將最終仍然被打死(通過SIGKILL
)系統停機權之前,但是這不會發生,直到在重啓過程中稍晚。
我找到了我上面的問題的解決方案,只是想在這裏更新。 在/etc/init.d中有一個文件「halt」。 此停止僅在運行級別0和6上執行。 在向所有進程發送SIGTERM之前,我添加了一行「pkill -9 processname」。
我如何處理,如果我在Linux控制檯中運行重新啓動。 – user3822453