如何确定在Debian中以什么顺序加载/etc/init.d脚本?


13

我想先运行一个sysvinit脚本,然后弄清楚该怎么做。

为了确保,这实际上是按照我喜欢的顺序进行的,我想查看一个列表,按照这种顺序进行。

sudo insserv --showall已经找到了,但是无法说明问题,因为它多次列出了初始化脚本。

如何确定在Debian中以什么顺序加载/etc/init.d脚本?


BusyBox用户到达此职位:unix.stackexchange.com/questions/59018/…请注意注释“按数字顺序执行它们”
dtmland

Answers:


9

/etc/init.d/目录中有一些文件:

$ ls -al /etc/init.d/ | grep -i depend
-rw-r--r--   1 root root  2739 Feb 17 05:20 .depend.boot
-rw-r--r--   1 root root  2221 Feb 17 05:20 .depend.start
-rw-r--r--   1 root root  1855 Feb 17 05:20 .depend.stop

每当您运行update-rc.d文件时,它们都会更改。.depend.boot文件是S水平, .depend.start2 3 4 5水平和.depend.stop0 1 6

就我而言,我的订单如下.depend.start

TARGETS = killprocs motd nvidia-kernel nfs-common rsyslog privoxy virtualbox
linuxlogo acpi-fakekey binfmt-support fancontrol openvpn hddtemp cgconfig 
dropbox-container dbus dnscrypt-proxy pulseaudio atd cryptmount exim4 
qbittorrent-nox ddclient acpi-support smartmontools ssh ntp loadcpufreq acpid 
cron rsync cgrulesengd cpufrequtils bootlogs bootchart-done single rmnologin 
rc.local stop-bootlogd

您还可以查看订单为何以上述方式显示。接下来的每一行如下所示:

cgrulesengd: rsyslog cgconfig

这意味着cgrulesengd需要rsyslog cgconfig先启动。


4

对于每个运行级别(0 6),都有一个文件夹/etc/rc[N].d

在每个目录中,都有以“ S”或“ K”开头的符号链接。“ S”开始,“ K”停止。脚本以文件名的词法排序方式执行也就是说,将先执行S10script而不是S20myscript。例如 :

我们有两个简单的脚本,第二个.sh脚本必须在当前运行级别的fist.sh脚本之后执行。

    root@localhost init.d]# cat /etc/init.d/first.sh 
    #!/bin/bash
    #
    echo 'I am the first'  >> /var/log/messages

    root@localhost init.d]# cat /etc/init.d/second.sh   
    #!/bin/bash
    #
    echo 'I am the second'  >> /var/log/messages

我目前的水平是多少?

    [root@localhost init.d]# runlevel 
    N 5

现在我们需要一个符号链接,第一个链接是S(N)myScript,而第一个S(N + 1)mysecondScript:

    root@localhost rc5.d]# ln -s /etc/init.d/first.sh /etc/rc5.d/S1first
    root@localhost rc5.d]# ln -s /etc/init.d/second.sh /etc/rc5.d/S2second

我们可以重新启动并检查消息日志:

    [root@localhost ~]# cat /var/log/messages | grep "I am" -A 1 -B 1
    Dec 13 13:53:36 localhost rpc.statd[3468]: Version 1.0.9 Starting
    I am the first
    Dec 13 13:53:37 localhost hcid[3532]: Bluetooth HCI daemon
    --
    Dec 13 13:53:40 localhost automount[3689]: lookup_read_master:       lookup(nisplus): couldn't locate nis+ table auto.master
    I am the second
    Dec 13 13:53:41 localhost gpm[3785]: *** info [startup.c(95)]: 

在旧的Centos5上测试


我建议您使用/ usr / bin / logger附加到系统日志中,而不是重定向,这样一来,您一天就不会意外地写“>”并清除日志。
DanB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.