【发布时间】:2026-02-12 01:25:01
【问题描述】:
所以默认情况下我处于运行级别 3。在关机期间我切换到运行级别 0。但是如果将我的脚本(有一个 curl 调用)放在 /etc/rc0.d/ 中,我不会获得任何成功,就像在运行级别 0 网络中一样已停止,因此无法进行curl 调用。
如何得到想要的结果?
【问题讨论】:
标签: linux centos shutdown runlevel
所以默认情况下我处于运行级别 3。在关机期间我切换到运行级别 0。但是如果将我的脚本(有一个 curl 调用)放在 /etc/rc0.d/ 中,我不会获得任何成功,就像在运行级别 0 网络中一样已停止,因此无法进行curl 调用。
如何得到想要的结果?
【问题讨论】:
标签: linux centos shutdown runlevel
通常在较旧的 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/
如果您查看/etc/init.d/rc3.d/ 中runlevel-3 的启动/关闭顺序,您会发现网络启动和关闭由启动时的S05network 和关闭时的K18network 控制。因此,如果您想创建一个自定义脚本以在网络关闭之前在关机时运行curl,您需要创建一个初始化脚本并在/etc/init.d/rc3.d 中创建一个软链接,并在网络服务之前对其进行编号(ssh 等)被删除。上面如果您创建了指向您的终止脚本K10curlonsd 的软链接并为其编号(关机时卷曲),它将在cron 关机之后运行,但在任何网络服务被取消之前运行。
方案在centos上应该还是一样的,虽然你的/etc/init.d可能是/etc/rc.d等,但是大体的做法还是一样的。如果您有任何问题,请告诉我。
【讨论】: