class="23244">
;
思想:系統啟動的時候生成一個文件,正常關機的時候則刪除這個文件,則可以根據系統開機時有沒有那個文件來判斷是不是非正常關機。
步驟:
在/etc/rc.d/init.d/下編程腳本。
判斷是否正常關機,和生成文件的腳本:touch-file.sh
#!/bin/sh
file=/tmp/check
if [ -e ${file} ];then
echo "this is not normal shutdown" >>/var/log/checkmessage
else
echo "this is normal shutdown and touch file" >>/var/log/checkmessage
touch ${file}
fi
正常關機刪除文件的腳本:rm-file.sh
#!/bin/sh
file=/tmp/check
echo "this is normal shutdown and rm file" >>/var/log/checkmessage
rm -rf ${file}
讓腳本自動執行。
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