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?
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 rsyslog
cgconfig
doit être démarré avant.
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