因此,默认情况下我处于运行级别 3。在关机期间,我切换到运行级别 0。但是如果将我的脚本(正在curl
调用)放入,我不会获得任何成功/etc/rc0.d/
,因为在运行级别 0 网络已经停止,因此它无法打电话curl
。
如何得到想要的结果?
通常在较旧的 SysVinit 系统中,启动顺序和关闭顺序由符号链接的字母数字顺序控制,这些符号链接位于/etc/init.d
(或/etc/rc.d/
) 下的每个运行级别目录中,其中编号为S##
(start) 的链接在启动期间运行和K##
( kill/stop) 脚本在关机期间运行。在任何给定时间点可用的服务由启动或关闭序列期间运行的内容控制。例如,较旧的 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
取下来。如果您在上面创建并编号了指向您的终止脚本的软链接K10curlonsd
(关机时卷曲),它将在cron
关机后运行,但在任何网络服务被取消之前运行。
该方案在 centos 上应该仍然是相同的,尽管您/etc/init.d
可能是/etc/rc.d
等,但一般方法将是相同的。如果您有任何问题,请告诉我。