La commande Chkconfig est utilisée pour configurer, afficher ou modifier les services qui sont configurés pour démarrer automatiquement lors du démarrage du système.
Cet article contient 7 exemples pratiques qui expliquent comment utiliser la commande chkconfig.
1. Vérifier l'état de démarrage du service à partir du script Shell
Lorsque vous exécutez la commande chkconfig uniquement avec le nom du service, elle renvoie true si le service est configuré pour le démarrage. L'extrait de code suivant montre comment vérifier si un service est configuré pour le démarrage ou non à partir d'un script shell.
# vi check.sh chkconfig network && echo "Network service is configured" chkconfig junk && echo "Junk service is configured" # ./check.sh Network service is configured
Vous pouvez également vérifier spécifiquement s'il est configuré pour un niveau d'exécution particulier ou non.
# vi check1.sh chkconfig network --level 3 && echo "Network service is configured for level 3" chkconfig network --level 1 && echo "Network service is configured for level 1" # ./check1.sh Network service is configured for level 3
2. Afficher l'état actuel des services de démarrage
L'option –list affiche tous les services avec l'état de configuration de démarrage actuel.
# chkconfig --list abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off ...
Pour afficher uniquement les services configurés pour être démarrés lors du démarrage du système, procédez comme suit. Veuillez noter que cela suppose que le niveau de démarrage de votre système est 3.
chkconfig --list | grep 3:on
Remarque :Pour afficher tous les niveaux d'exécution système disponibles, reportez-vous à 6 étapes du processus de démarrage Linux
Pour afficher la configuration de démarrage d'un service particulier, grep la sortie de 'chkconfig -list' pour ce service.
chkconfig --list | grep network
3. Ajouter un nouveau service au démarrage
Utilisez l'option –add pour ajouter un service spécifique à la liste des services qui seront démarrés lors du redémarrage du système.
L'exemple suivant montre comment ajouter un nouveau service (par exemple, iptables) à la liste des services qui doivent être démarrés. La commande « chkconfig –add » activera également automatiquement les niveaux 2, 3, 4 et 5, comme indiqué ci-dessous.
# chkconfig --list | grep iptables # chkconfig --add iptables # chkconfig --list | grep iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Remarque :"chkconfig –add" ajoute uniquement un service existant à la liste de démarrage. Si le service n'existe pas, vous devez d'abord l'installer avant de l'ajouter à la liste de démarrage du système. Bien que cela soit assez évident, cela vaut la peine de le mentionner, car un débutant pourrait faire cette erreur.
4. Supprimer un service de la liste de démarrage
L'exemple suivant montre que les services ip6tables sont configurés pour le démarrage.
# chkconfig --list | grep ip6tables ip6tables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
Pour le supprimer de la liste de démarrage, utilisez l'option –del comme indiqué ci-dessous.
# chkconfig --del ip6tables # chkconfig --list | grep ip6tables
5. Activer ou désactiver un service pour un niveau d'exécution sélectionné
Parfois, vous ne voudrez peut-être pas supprimer tout le service. Au lieu de cela, vous pouvez simplement activer ou désactiver l'indicateur pour un niveau d'exécution particulier (pour un service particulier).
L'exemple suivant désactivera le service nfserver pour le niveau 5
# chkconfig --level 5 nfsserver off
Vous pouvez également combiner plusieurs niveaux. L'exemple suivant désactivera nfsserver pour les niveaux 3 et 5.
# chkconfig --level 35 nfsserver off
6. Fichiers de script sous les sous-répertoires rc.d
Chaque fois que vous ajoutez ou supprimez un service du contrôle chkconfig, il effectue les opérations suivantes dans les sous-répertoires /etc/rc.d.
- Lorsque la commande chkconfig –add est exécutée, elle crée un fichier de lien symbolique pour démarrer et arrêter le service sous le répertoire rc correspondant.
- Lorsque la commande chkconfig –del est exécutée, elle supprime le fichier de lien symbolique du répertoire rc correspondant.
L'exemple suivant montre que xinetd est activé pour les niveaux d'exécution 3 et 5.
Ainsi, xinetd aura deux fichiers sous le répertoire rc3.d et deux fichiers sous le répertoire rc5.d. Le fichier qui commence par K est utilisé lors de l'arrêt (K signifie kill). Le fichier qui commence par S est utilisé au démarrage (S signifie start).
# chkconfig --list | grep xinetd xinetd 0:off 1:off 2:off 3:on 4:off 5:on 6:off xinetd based services: # cd /etc/rc.d/rc3.d # ls | grep xinetd K08xinetd S14xinetd # cd /etc/rc.d/rc5.d # ls | grep xinetd K08xinetd S14xinetd
7. rcx.d Modifications du répertoire pour l'opération d'ajout
Lorsque vous ajoutez un nouveau service au contrôle chkconfig, les niveaux d'exécution par défaut pour ce service seront automatiquement activés et les fichiers seront créés sous les répertoires rcx correspondants.
Par exemple, si le service nfsserver n'existe pas dans le contrôle chkconfig, aucun fichier de démarrage du service nfsserver ne sera présent dans les répertoires /etc/rc.d/rc*.d comme indiqué ci-dessous.
# chkconfig --list | grep nfsserver nfsserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off # ls /etc/rc.d/rc3.d | grep nfsserver # ls /etc/rc.d/rc5.d | grep nfsserver
Après avoir ajouté le service nfsserver, vous verrez les liens symboliques sous ces répertoires.
# chkconfig --add nfsserver nfsserver 0:off 1:off 2:off 3:on 4:off 5:on 6:off # cd /etc/rc.d/rc3.d # ls -l | grep nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver # cd /etc/rc.d/rc5.d # ls -l | grep nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver
Lorsque vous désactivez le service à l'aide de l'option –del ou de l'option –level, le fichier de lien symbolique correspondant sous le répertoire rcx.d sera supprimé comme indiqué ci-dessous.
# chkconfig --level 5 nfsserver off # ls /etc/rc.d/rc5.d | grep nfsserver