Solution 1 :
Au lieu de le faire manuellement, comme suggéré dans les autres réponses, vous pouvez également modifier le script d'initialisation. Ajoutez simplement une telle ligne à l'en-tête :
# chkconfig: 35 90 10
Cela instruira chkconfig
pour 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.
Solution 2 :
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 au démarrage tandis que les liens K sont analysés pour l'arrêt. Le xx représente ici la commande.
Mais cet ordre est défini pour une raison, alors soyez prudent lorsque vous les modifiez, par exemple. ntpd ne doit démarrer qu'après l'initialisation du sous-système réseau.
Solution 3 :
Vous voulez en savoir un peu plus sur vos niveaux d'exécution et vos répertoires rc.d. Dans les 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.
Certaines modifications ont été apportées à cette architecture, mais la plupart des Linux l'utilisent toujours.
Solution 4 :
Si vous êtes arrivé ici, il y a de fortes chances que vous ayez deux services où 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, auquel cas 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.
Je vais utiliser un exemple de serveur exécutant Openldap (slapd) avec un backend de base de données MySQL (mysqld). Configurer cette paire, et pourquoi vous pourriez vouloir, est une toute autre histoire.
Au démarrage, Openldap ne démarre pas car il dépend de MySQL et la séquence de démarrage tente 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
J'édite la ligne chkconfig dans /etc/rc.d/init.d/slapd pour avoir une position de départ supérieure à celle de /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 pour le monde.