在SysVinit中关闭之前执行具有curl调用的脚本

时间:2015-11-19 11:27:42

标签: linux centos shutdown runlevel

所以默认情况下我处于运行级别3.在关机期间我切换到运行级别0.但是如果我在curl中放置我的脚本(进行/etc/rc0.d/调用),我就没有取得任何成功,在运行级别0网络已经停止,因此它无法进行curl调用。

如何获得理想的结果?

1 个答案:

答案 0 :(得分:1)

通常在较旧的SysVinit系统中,引导顺序和关闭顺序由位于/etc/init.d(或/etc/rc.d/)下每个运行级别目录中的init-script的符号链接的字母数字顺序控制。编号为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控制网络启动和关闭,{{1}关闭时1}}因此,如果您想在网络关闭之前创建一个自定义脚本以在关闭时运行K18network,则需要创建一个init脚本并在curl中创建一个软链接并使其编号为被删除的网络服务(/etc/init.d/rc3.d等)。如果您创建并编写了kill脚本ssh的软链接(关闭时卷曲),则会在K10curlonsd关闭后运行,但在任何网络服务被删除之前运行。

虽然您的cron可能是/etc/init.d等,但该计划在centos上仍应相同,但一般方法将是相同的。如果您有任何问题,请告诉我。