Как узнать, в каком порядке скрипты /etc/init.d загружаются в Debian?


13

Я хочу запустить один скрипт sysvinit перед другим и выяснить, как это сделать.

Чтобы убедиться, что это на самом деле происходит в том порядке, который мне нравится, я хотел бы увидеть список, в каком порядке это происходит.

Я sudo insserv --showallуже нашел , но не могу разобраться с этим, так как в нем несколько раз перечислены сценарии инициализации.

Как узнать, в каком порядке скрипты /etc/init.d загружаются в Debian?


Пользователи BusyBox, прибывающие на этот пост: unix.stackexchange.com/questions/59018/… Обратите внимание на комментарий «выполнение их в числовом порядке»
dtmland

Ответы:


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.startдля 2 3 4 5уровней и .depend.stopдля 0 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», чтобы начать e «K», чтобы остановить. Сценарии выполняются в лексической манере сортировки имени файла , другими словами, S10script будет выполняться первым, чем S20myscript. Например :

у нас есть два простых сценария, сценарий second.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 для добавления в системный журнал вместо перенаправления, чтобы вы случайно не случайно написали «>» и не стерли ваши журналы.
ДанБ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.