web-dev-qa-db-fra.com

Comment savoir dans quel ordre /etc/init.d scripts sont chargés sur Debian?

Je veux exécuter un script sysvinit avant un autre et j'ai compris comment faire ça.

Pour vous assurer, cela se produit réellement dans la commande que j'aime, j'aimerais voir une liste dans laquelle ordonnance qui se passe.

J'ai trouvé Sudo insserv --showall Déjà, mais ne peut pas faire la tête ni la queue, puisqu'il répertorie plusieurs scripts plusieurs fois.

Comment savoir dans quel ordre /etc/init.d scripts sont chargés sur Debian?

13
adrelanos

Il y a des fichiers dans /etc/init.d//fuge:

$ 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

Chaque fois que vous courez update-rc.d Les fichiers vont changer. .depend.boot Fichier est pour le niveau S, .depend.start est pour 2 3 4 5 niveaux et .depend.stop pour 0 1 6.

Dans mon cas, j'ai l'ordre suivant en .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

Vous pouvez également voir pourquoi l'ordre présente de la manière dont vous voyez ci-dessus. Chaque ligne suivante ressemble à ceci:

cgrulesengd: rsyslog cgconfig

ce qui signifie que cgrulesengd a besoin de rsyslogcgconfig doit être démarré avant.

9
Mikhail Morfikov

Pour chaque runlevel (0 6) il y a un dossier /etc/rc[n].d

Dans chaque répertoire, il y a une liaison symbolique commence par un "s" ou avec un "k". "S" pour commencer e "k" à arrêter. Les scripts sont exécutés sous une manière lexicale du nom de fichier, en d'autres termes, S10Script sera exécuté d'abord que S20Myscript. Par exemple :

nous avons deux scripts simples, le script de second.sh doit être exécuté après le script Fist.sh dans le niveau d'exécution actuel.

    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

Quel est mon niveau actuel?

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

Maintenant, nous avons besoin d'un lien symbolique, notamment, nommément s (n) myscript pour les premier et 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

Nous pouvons redémarrer et vérifier le journal des messages:

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

Testé sur OLD CENTOS5

4
Sirà