Debian'da /etc/init.d komut dosyalarının hangi sırada yüklendiğini nasıl öğrenebilirim?


13

Bir sysvinit betiğini diğerinden önce çalıştırmak ve bunu nasıl yapacağımı anladım.

Emin olmak için, bu aslında benim istediğim sırada olur, hangi sırayla gerçekleşen bir liste görmek istiyorum.

sudo insserv --showallZaten buldum , ancak başını veya kuyruğunu yapamıyorum, çünkü init komut dosyalarını birkaç kez listeliyor.

Debian'da /etc/init.d komut dosyalarının hangi sırada yüklendiğini nasıl öğrenebilirim?


Bu mesaja gelen BusyBox kullanıcıları: unix.stackexchange.com/questions/59018/… "Sayısal sırada onları yürütme" yorumuna dikkat edin
dtmland

Yanıtlar:


9

/Etc/init.d/ dizininde bazı dosyalar var:

$ 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

Her çalıştırdığınızda update-rc.ddosyalar değişecektir. .depend.bootdosya içindir S, seviyeye .depend.startiçindir 2 3 4 5düzeyleri ve .depend.stopiçin 0 1 6.

Benim durumumda, aşağıdaki sırayla var .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

Ayrıca, siparişin neden yukarıda gördüğünüz şekilde sunulduğunu da görebilirsiniz. Sonraki her satır şöyle görünür:

cgrulesengd: rsyslog cgconfig

bu da daha önce başlatılması cgrulesengdgerektiği anlamına gelir rsyslog cgconfig.


4

Her çalışma seviyesi için (0 6) /etc/rc[Nunan.d adlı bir klasör vardır.

Her dizinde "S" veya "K" ile başlayan sembolik bağlantı vardır. "S" başlatmak için e "K" durdurmak için. Komut dosyaları dosya adının sözcüksel bir şekilde yürütülür , diğer bir deyişle S10script S20myscript'ten önce yürütülür. Örneğin :

iki basit komut dosyamız var, ikinci çalışma.sh betiği mevcut çalışma seviyesindeki fist.sh betiğinden sonra yürütülmelidir.

    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

Mevcut seviyem nedir?

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

Şimdi ilk için S (N) myScript ve S (N + 1) mysecondScript olarak başlayan sembolik bir bağlantıya ihtiyacımız var:

    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

Mesajlar günlüğünü yeniden başlatabilir ve kontrol edebiliriz:

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

Eski Centos üzerinde test edildi5


/ Usr / bin / logger'ı yeniden yönlendirme yerine sistem günlüğüne eklemek için kullanmanızı öneririz, bu nedenle yanlışlıkla bir gün ">" yazıp günlüklerinizi silmeyin.
DanB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.