因此,默認情況下我處於運行級別3.在關機期間,我切換到運行級別0.但是,如果將腳本(curl
調用)放入/etc/rc0.d/
,因爲在運行級別0網絡已經停止,因此它不能執行curl
調用。在SysVinit中關閉之前執行卷曲調用的腳本
如何得到想要的結果?
因此,默認情況下我處於運行級別3.在關機期間,我切換到運行級別0.但是,如果將腳本(curl
調用)放入/etc/rc0.d/
,因爲在運行級別0網絡已經停止,因此它不能執行curl
調用。在SysVinit中關閉之前執行卷曲調用的腳本
如何得到想要的結果?
一般在舊的SysVinit系統啓動順序和關機順序是由符號鏈接位於每個級別目錄/etc/init.d
(或/etc/rc.d/
)在你的init腳本的字母數字順序控制其中的鏈接編號S##
(啓動)在啓動過程中運行,在關機期間運行K##
(終止/停止)腳本。在任何特定時間點可用的服務都由引導或關閉過程中運行的內容來控制。例如一個較早的SUSE方案是:
/etc/init.d/
boot.d/
rc0.d/ # runlevel 0
rc1.d/ # runlevel 1
rc2.d/ # runlevel 2
rc3.d/ # runlevel 3
...
S01random # S## - Start init script ## in order 00 -> XX
S01resmgr
S02consolekit
S03haldaemon
S05network # network start
...
K01stopblktrace # KXX - Kill (stop) init script ## in order
K02atieventsd
K09cron
...
K14sshd
K15smbfs
K16apcupsd
K16auditd
K16nmb
K16portmap
K16splash_early
K17syslog
K18network # network shutdown
...
rc4.d/
rc5.d/
rc6.d/
rcS.d/
如果你看一下開機/關機順序運行級別的3在/etc/init.d/rc3.d/
你看到網絡啓動和關機是由S05network
在引導和K18network
上控制關掉。因此,如果您想在網絡關閉之前創建一個在關機時運行curl
的自定義腳本,則需要創建一個init腳本並在/etc/init.d/rc3.d
中創建一個軟鏈接,並在網絡服務之前編號(ssh
等)被撤下。在上面,如果您創建了編號爲kill kill腳本的軟鏈接K10curlonsd
(關閉時爲curl),它將在cron
關閉後運行,但在任何網絡服務被取消之前運行。
雖然您的/etc/init.d
可能是/etc/rc.d
等,但該方案在centos上應該仍然是一樣的,但一般方法將是相同的。如果您有任何問題,請告訴我。