開關機定時執行腳本

這幾天接到一個任務,通過一臺鏈接UPS低地位自動關機功能的linux系統,觸發其他系統自動關機。昨天研究了一天,終於實現linux在關機或重啓的時候執行某個任務。
   現在把實現過程描述如下:
  先寫一個腳本放在/etc/rc.d/init.d下,chmod -f 777  , 再ln -s 到 /etc/rc.d/rc0.d/K01腳本名 與 /etc/rc.d/rc6.d/K01腳本名,同時也要 ln -s 到 /etc/rc.d/rc3.d/S99腳本名 與/etc/rc.d/rc5.d/S99腳本名。
  K開頭的代表系統關閉的時候執行,S開頭的代表開機的時候執行。注意服務器腳本編寫的規範,因爲有K開通的軟鏈接並不一定會在關機的時候自動去執行,這是爲什麼呢?剛開始一直沒搞明白,後來從網上看到,執行K腳本的時候會查詢/var/lock/subsys/下是否有與K開頭腳本同名的空文件名,如果沒有就不去執行,所以要按照服務器腳本編寫的規範,啓動的時候要在/var/lock/subsys/先touch一個與K01後面同名的空文件.同時也要調用/etc/rc.d/init.d/functions能夠接受star與stop命令信號,具體可以參考/etc/rc.d/rc文件,本人是在/etc/rc.d/rc0.d/K01yum基礎上改寫實現的

/etc/rc0.d 包含關機腳本K* 
/etc/rc6.d 包含重啓腳本K* 

Linux關機過程:
init同樣也用來控制系統關機或者重新啓動,通過shutdown命令可以實現關機操 
作。要立即關閉計算機,可以使用shutdown   -h   now命令,h代表的意思就是halt,也就 
是切斷了電源,如果是重新啓動,直接把h參數換成r就可以了:shutdown   -r   now 
關機過程需要一些時間,這個過程中不應該手工切斷電源或者按下reset鍵。上面的 
例子裏now參數表示的就是立即的意思,也有許多其他的參數可以選用,比如+n設定倒 
計時時間,n就是你想要的時間,這些都可以通過man   shutdown瞭解一下。 
舉例說明,要使系統10分鐘後重新起動:shutdown   -r   +10 
在linux系統裏,shutdown命令會通知已經登錄進來的用戶它即將關機,不過意義不 
大罷了。如果定義了倒計時關機,shutdown命令會生成一個/etc/nologin文件,這個文 
件的存在能夠阻止其他用戶再進行登錄操作,當然了,root用戶除外。 

在系統關機時,shutdown命令會告訴init程序轉換到0運行級別,如果是重新啓動則 
轉換到第6運行級別。當進入0或者6運行級別後,系統將會依照下面的順序運行: 

1,init關閉所有它能關閉的進程(轉換到其他運行級別也一樣) 
2,rc0.d/rc6.d目錄下的第一個命令開始運行,鎖定系統文件爲關機作準備 
3,rc0.d/rc6.d目錄下的第二個命令運行,卸載除根文件系統以外的所有文件系統( 
如掛載的windows分區) 
4,rc0.d/rc6.d中的命令將把根文件系統重新掛載爲只讀屬性 
5,rc0.d/rc6.d中的命令調用sync程序把緩存中的數據寫入文件系統 
6,最後的命令是重新啓動或者關閉內核程序
發佈了166 篇原創文章 · 獲贊 16 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章