Bagaimana cara mengetahui skrip urutan /etc/init.d dimuat di Debian?

13

Saya ingin menjalankan satu skrip sysvinit sebelum yang lain dan menemukan cara untuk melakukannya.

Untuk memastikan, ini benar-benar terjadi dalam urutan yang saya suka, saya ingin melihat daftar, di mana urutan itu terjadi.

Saya sudo insserv --showallsudah menemukan , tetapi tidak dapat membuat kepala atau ekor dari itu, karena itu daftar skrip init beberapa kali.

Bagaimana cara mengetahui skrip urutan /etc/init.d dimuat di Debian?

adrelanos
sumber
Pengguna BusyBox tiba di pos ini: unix.stackexchange.com/questions/59018/... Catat komentar "mengeksekusi mereka dalam urutan numerik"
dtmland

Jawaban:

9

Ada beberapa file di direktori /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

Setiap kali Anda menjalankan update-rc.dfile akan berubah. .depend.bootFile untuk Slevel, .depend.startuntuk 2 3 4 5level dan .depend.stopuntuk 0 1 6.

Dalam kasus saya, saya memiliki urutan sebagai berikut .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

Anda juga dapat melihat mengapa pesanan ditampilkan seperti yang Anda lihat di atas. Setiap baris berikutnya terlihat seperti ini:

cgrulesengd: rsyslog cgconfig

yang berarti bahwa cgrulesengdkebutuhan rsyslog cgconfigakan dimulai sebelumnya.

Mikhail Morfikov
sumber
4

Untuk setiap runlevel (0 6) ada folder /etc/rc[N[.d

Di setiap direktori ada tautan simbolik yang dimulai dengan "S" atau dengan "K". "S" untuk memulai e "K" untuk berhenti. Script dieksekusi dengan cara semacam leksikal dari nama file , dengan kata lain S10script akan dieksekusi lebih dulu dari S20myscript. Sebagai contoh :

kami memiliki dua skrip sederhana, skrip second.sh harus dijalankan setelah skrip fist.sh di runlevel saat ini.

    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

Apa level saya saat ini?

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

Sekarang kita memerlukan tautan simbolis mulai yaitu S (N) myScript untuk yang pertama dan 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

Kami dapat reboot dan memeriksa log pesan:

    [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)]: 

Diuji pada Centos5 lama

Sira
sumber
Saya sarankan menggunakan / usr / bin / logger untuk menambahkan ke log sistem alih-alih pengalihan, jadi suatu hari Anda tidak sengaja menulis ">" secara tidak sengaja dan menghapus log Anda.
DanB