2015-11-19 40 views

回答

1

一般在旧的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上应该仍然是一样的,但一般方法将是相同的。如果您有任何问题,请告诉我。