Réponses:
Vous pouvez changer l'ordre en renommant les liens symboliques sous /etc/rcX.d/ où x sera votre niveau d'exécution.
Vous verrez un tas de fichiers commençant par Sxx ou Kxx. Les liens S sont tracés lors du démarrage tandis que les K sont analysés pour l'arrêt. Le xx représente ici l'ordre.
Mais cet ordre est défini pour une raison, alors soyez prudent lorsque vous les changez, par exemple. ntpd ne doit démarrer qu'après l'initialisation du sous-système réseau.
Au lieu de le faire manuellement, comme suggéré dans les autres réponses, vous pouvez également modifier le script init. Ajoutez simplement une telle ligne à l'en-tête:
# chkconfig: 35 90 10
Cela demandera chkconfig
d'ajouter le service aux niveaux d'exécution 3 et 5, avec une position de départ de 90 et une position d'arrêt de 10.
chkconfig off servicename && chkconfig on servicename
Vous voulez en savoir un peu plus sur vos niveaux d'exécution et les répertoires rc.d. À l'intérieur des répertoires rc.d, vous pouvez trouver les liens S et K, comme S20apache K10apache, c'est essentiellement ce qui ordonne le démarrage / l'arrêt des scripts.
Il y a quelques changements en cours sur cette architecture mais la plupart des linux l'utilisent toujours.
rcorder
existent depuis un certain temps.
svc
, mais je pourrais me passer des trucs xml
Si vous êtes arrivé ici, il y a de fortes chances que vous ayez deux services dont l'un dépend de l'autre mais, parce qu'ils démarrent dans le mauvais ordre, celui avec la dépendance ne démarre pas. Les suggestions sur la modification des liens symboliques sont informatives, en termes d'illustration du fonctionnement de la séquence de démarrage, et fonctionneraient bien jusqu'à ce que quelqu'un fasse un "chkconfig on" sur votre service, moment auquel les liens symboliques seraient recréés tels qu'ils étaient à l'origine. Vraiment, vous voulez traiter le problème au niveau du script d'initialisation, ce qui est en fait beaucoup moins compliqué à faire de toute façon. Il sera également cohérent à travers les différents niveaux d'exécution. Vous n'aurez probablement pas besoin d'ajouter une ligne "# chkconfig" comme suggéré dans la réponse 4 car il y aura probablement déjà une ligne similaire.
J'utiliserai un exemple de serveur exécutant Openldap (slapd) avec un backend de base de données MySQL (mysqld). Configurer cette paire, et pourquoi vous voudrez peut-être, est une toute autre histoire.
Au démarrage, Openldap ne démarre pas car cela dépend de MySQL et la séquence de démarrage a essayé de démarrer avant lui - slapd a la position 27 et mysqld a la position 64
Les liens symboliques pertinents dans /etc/rc3.d/ sont
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Je recherche les valeurs définies dans les deux scripts d'initialisation:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
Je modifie la ligne chkconfig dans /etc/rc.d/init.d/slapd pour avoir une position de départ supérieure à celle dans /etc/rc.d/init.d/mysqld (j'ai choisi 85)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
Je fais "chkconfig slapd on" et revérifie les liens symboliques
[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx 1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx 1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd
Maintenant, lorsque ce serveur démarre, mysqld démarre avant slapd et tout va bien avec le monde.