因此,默认情况下我处于运行级别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上应该仍然是一样的,但一般方法将是相同的。如果您有任何问题,请告诉我。