Shell-Script

使用關機時執行的 shell 腳本防止關機

  • April 16, 2016

背景:

我有一個 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

該腳本將不斷向killpython 腳本發送命令,直到它退出(它在執行時工作)。我將腳本放在/etc/init.d目錄中,在腳本上執行,對名稱以 K99 開頭的目錄進行chmod -x符號連結。由於/目錄中的腳本在關機/重啟時執行,因此腳本應該(理論上)執行並等待 python 腳本完成關機/重啟。這似乎不起作用。它在未完成任務的情況下關閉/重新啟動。/etc/rc0.d``/etc/rc6.d``/etc/rc0.d``/etc/rc6.d

幫助將不勝感激。

您將腳本連結到K99. 更改執行級別時,使用 option 呼叫 K* 腳本,使用 option 呼叫stopS* 腳本start,或者stop執行級別為 0(關閉)。它們按數字順序呼叫。

因此,您應該刪除K99連結並用連結替換它們,K00以便首先執行它們(在實際停止系統的腳本之前!)。

引用自:https://unix.stackexchange.com/questions/276835