Як дізнатися, у якому порядку /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 evidenceNSense.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 для додавання до системного журналу замість перенаправлення, щоб ви випадково один день не написали ">" і не витерли свої журнали.
DanB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.