web-dev-qa-db-fra.com

Comment modifier la commande de démarrage / démarrage des services Linux?

Comme la question est claire du titre, comment modifier la commande de démarrage/démarrage des services Linux?

14
Gnanam

Vous pouvez modifier la commande en renommant les symboles sous /etc/rcx.d/ où X sera votre niveau d'exécution.

Vous verrez un tas de fichiers commençant par SXX ou KXX. S Les liens sont tracés pendant le démarrage tandis que les K sont analysées pour l'arrêt. Le XX représente ici la commande.

Mais cet ordre est fixé pour une raison, alors soyez prudent tout en les changeant. Portez exemple. NTPD ne devrait commencer qu'après l'initialisation du sous-système de réseautage.

11
rags

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 indiquera chkconfig d'ajouter le service aux runlevels 3 et 5, avec une position de départ de 90 et une position de tuerie de 10.

21
Christian

Vous voulez lire un peu sur votre runlevels et rc.d répertoires. Dans les répertoires RC.D, vous trouverez les liens S et K, tels que S20APACHE K10APACHACH, qui est essentiellement de quelles commandes de démarrage/arrêt des scripts.

Certains changements sont faits sur cette architecture, mais la plupart des Linuxes l'utilisent toujours.

7
coredump

Si vous êtes arrivé ici, il y a de fortes chances que vous ayez deux services où l'on dépend de l'autre mais, car ils commencent dans le mauvais ordre, celui avec la dépendance échoue de commencer. Les suggestions sur la modification des symboles sont informatives, en termes d'illustration de la manière dont la séquence de démarrage fonctionne et fonctionnerait bien jusqu'à ce que quelqu'un ait un "chkconfig sur" sur votre service à quel point les symboles seraient recréés comme ils étaient à l'origine. Vraiment, vous voulez faire face à la question au niveau du script Init, qui est en fait beaucoup moins désordonnée à faire de toute façon. Il sera également cohérent dans les différents runlevels. Vous n'aurez probablement pas besoin d'ajouter une ligne "# chkconfig" comme suggérée dans la réponse 4, car il y aura probablement une ligne similaire là-bas déjà.

Je vais utiliser un exemple de serveur exécutant OpenLDap (SLAPD) avec un backend de base de données MySQL (mysqld). Configuration de cette paire et pourquoi vous pourriez vouloir, est une autre histoire.

Au démarrage, OpenLDAP ne parvient pas à démarrer car cela dépend de MySQL et de la séquence de démarrage qu'il tente de démarrer avant - 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 cherche des valeurs définies dans les deux scripts init:

[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 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 sur" et revérifier 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 commence avant SLAPD et tout va bien avec le monde.

7
Jim Smyth