2017-07-12 97 views
1

當系統停止/關閉時,我需要執行一些命令。如何檢查Linux是否停機或重新啓動

我需要知道這個在我的腳本/etc/init.d/myScript裏,當系統關閉時會調用它。

我以前通過檢查$ runlevel變量來實現它,如果它設置爲0,那麼系統正在停止運行,幾年前它在Raspbian中工作。但是,在我的Linux cubieboard2 4.9.12-sunxi Armbian中沒有設置這個變量,當我在myScript中的「STOP」情況下執行「runlevel」命令時,它說它在N 5 runlevel中,這是不正確的,因爲我已執行關機

歡迎提供所有提示。

+0

我想的方法有兩種:( a)使用'last'命令,它可以根據選項爲您提供上次關機或最後一次重啓時間,或者(b)解析'/ var/log/messages'文件。這些工作是否有用? – Pierre

+1

是不是通過切換到運行級別0來停止系統,從而執行'/ etc/rc0.d /'目錄中的所有腳本?因此,即使通過'$ runlevel'(根據我的手冊頁應該是'$ RUNLEVEL')或'runlevel'命令來識別當前運行級別,您可以在/ etc/rc0中放置一個符號鏈接。 d /'到一個特殊的腳本,只有當系統暫停時纔會被調用。 – Alfe

+0

如果您正在運行systemd,則可以嘗試通過「systemctl get-default」獲取運行級別 –

回答

0

如果您遵守LSB標準,則無需處理腳本中的runlevel。 根據LSB規範,您可能想要將腳本標頭。以下是一個示例 標題。

### BEGIN INIT INFO 
# Provides:   scriptname 
# Required-Start: $remote_fs $syslog 
# Required-Stop:  $remote_fs $syslog 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Start daemon at boot time 
# Description:  Enable service provided by daemon. 
### END INIT INFO 

LSB standard

另外第20章的更多細節,你可以控制runlevel在該腳本將invoked.It也可以通過chkconfig命令控制

相關問題