思想:系統啟動的時候生成乙個檔案,正常關機的時候則刪除這個檔案,則可以根據系統開機時有沒有那個檔案來判斷是不是非正常關機。
步驟:
在/etc/rc.d/init.d/下程式設計指令碼。
判斷是否正常關機,和生成檔案的指令碼:touch-file.sh
#!/bin/sh
file=/tmp/check
if [ -e $ ];then
echo "this is not normal shutdown" >>/var/log/checkmessage
else
echo "this is normal shutdown and touch file" >>/var/log/checkmessage
touch $
fi正常關機刪除檔案的指令碼:rm-file.sh
#!/bin/sh
file=/tmp/check
echo "this is normal shutdown and rm file" >>/var/log/checkmessage
rm -rf $
讓指令碼自動執行。
ln -s /etc/rc.d/rc0.d/k01rm-file /etc/rc.d/init.d/rm-file.sh
注意:
#ll /etc/rc.d/rc0.d/
軟連線兩邊的名字不哪呢個相同,後乙個可以用絕對路徑或是相對路徑,千萬保證兩邊的名字不一樣。
ln -s /etc/rc.d/rc6.d/k01rm-file /etc/rc.d/init.d/rm-file.sh
ln -s /etc/rc.d/rc3.d/s01touch-file /etc/rc.d/init.d/touch-file.sh
我的系統沒用到x-window,所以沒有level5,也就是不用在/etc/rc.d/rc5.d/下放指令碼。
特別注意:
k開頭的代表系統關閉的時候執行,s開頭的代表開機的時候執行。注意伺服器指令碼編寫的規範,因為有k開通的軟鏈結並不一定會在關機的時候自動去執行,這是為什麼呢?執行k指令碼的時候會查詢/var/lock/subsys/下是否有與k開頭指令碼同名的空檔名,如果沒有就不去執行,所以要按照伺服器指令碼編寫的規範,啟動的時候要在/var/lock/subsys/先touch乙個與k01後面同名的空檔案:
#/var/lock/subsys
#touch fm-file
Linux環境下判斷伺服器是否正常關機
2009 05 17 來自 zdnet 收藏系統啟動的時候生成乙個檔案,正常關機的時候則刪除這個檔案,則可以根據系統開機時有沒有那個檔案來判斷是不是非正常關機。系統啟動的時候生成乙個檔案,正常關機的時候則刪除這個檔案,則可以根據系統開機時有沒有那個檔案來判斷是不是非正常關機。步驟 在 etc rc....
Linux環境下判斷伺服器是否正常關機
啟動時生成乙個檔案,然後關機時把它刪掉。下次啟動時,如果這個檔案還在,就說明上次不是正常關機了。把刪除檔案的指令碼寫在 etc rc6.d 和 etc rc0.d 下,把判斷是否正常關機和生成檔案的指令碼放在 etc rc3.d 和 etc rc5.d 下。如果系統沒有預設的方法,我就按照flw的方...
Linux的正常關機
azure 上的iaas 虛擬機器可使用多種方式關閉,例如通過 azure 管理門戶 azure powershell cmdlet 或cli 工具,甚至還可以由互動式登入的使用者關閉。azure 平台本身甚至也能關閉虛擬機器以執行平台維護。執行在本地裸機中的 linux 系統的關閉流程很好理解,但...