Shell-Script
使用關機時執行的 shell 腳本防止關機
背景:
我有一個 Python 腳本,它在 Ubuntu 伺服器的後台啟動時(無限地)執行。該過程通過發送 SIGINT 結束,該腳本由腳本處理,該腳本在退出之前完成所有作業。如果有人關閉伺服器,從而終止腳本,重要數據將會失去。我想知道是否有辦法在關閉之前等待腳本完成,或者完全阻止關閉(如果阻止它可以顯示一條消息會很好)。
試圖:
我的 Python 腳本 (test.py) 有一個 SIGINT 處理程序,當它接收到 SIGINT 時,它會在退出之前完成所有任務。我編寫了以下 shell 腳本:
PROCESS=$(pgrep -f 'python test.py') echo $PROCESS kill -2 $PROCESS while kill -2 $PROCESS 2> /dev/null; do sleep 1 done
該腳本將不斷向
kill
python 腳本發送命令,直到它退出(它在執行時工作)。我將腳本放在/etc/init.d
目錄中,在腳本上執行,對名稱以 K99 開頭的目錄進行chmod -x
符號連結。由於/目錄中的腳本在關機/重啟時執行,因此腳本應該(理論上)執行並等待 python 腳本完成關機/重啟。這似乎不起作用。它在未完成任務的情況下關閉/重新啟動。/etc/rc0.d``/etc/rc6.d``/etc/rc0.d``/etc/rc6.d
幫助將不勝感激。
您將腳本連結到
K99
. 更改執行級別時,使用 option 呼叫 K* 腳本,使用 option 呼叫stop
S* 腳本start
,或者stop
執行級別為 0(關閉)。它們按數字順序呼叫。因此,您應該刪除
K99
連結並用連結替換它們,K00
以便首先執行它們(在實際停止系統的腳本之前!)。