chkconfig : activer les services au démarrage sous RedHat / CentOS

Sous Linux en général, les services sont démarrés via des scripts présents dans le répertoire /etc/init.d.

C'est bien, mais cela demande une intervention manuelle. Il existe alors des répertoires /etc/rcX.d, qui permettent de lancer / arrêter les scripts en fonction du runlevel de la machine.

Red Hat & Co

En fait, les scripts présents dans ces répertoires ne sont rien d'autre que des liens symboliques vers les scripts présents dans /etc/init.d. Mais faire tout ça à la main, c'est parfois pénible. Dans les distributions basées sur Red Hat, l'utilitaire chkconfig permet de simplifier tout cela.

Imaginons que je vienne d'installer un serveur OpenLDAP, lancé par /etc/init.d/slapd. Je voudrais maintenant qu'il démarre automatiquement au boot de la machine. On détermine d'abord le niveau de runlevel actuel :

# runlevel
N 3

On regarde le paramétrage de chkconfig pour le process slapd :

# chkconfig --list | grep slapd
slapd              0:arrêt    1:arrêt    2:arrêt    3:arrêt    4:arrêt    5:arrêt    6:arrêt

Effectivement, le processus n'est pas lancé, quel que soit le runlevel. On va donc corriger cela pour le niveau actuel :

chkconfig --level 3 slapd on

On peut alors vérifier que ceci a été pris en compte :

# chkconfig --list | grep slapd
slapd              0:arrêt    1:arrêt    2:arrêt    3:marche    4:arrêt    5:arrêt    6:arrêt

Dans le répertoire /etc/rc3.d, on a maintenant un script de démarrage :

# ls /etc/rc3.d/*slapd*
/etc/rc3.d/S27slapd

Au prochain boot de la machine, le processus slapd sera bien lancé.

Si on veut empêcher un service de se lancer, il faut utiliser la commande chkconfig avec l'option off. Par exemple pour ne pas démarrer iptables :

# chkconfig --level 3 iptables off

 

Debian / Ubuntu

A noter que sur Ubuntu (et Debian), chkconfig est également disponible dans les dépôts.

On peut faire la même chose avec la commande update-rc.d. Par exemple pour supprimer le démarrage automatique de apache2 :

sudo update-rc.d -f apache2 remove
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K09apache2
   /etc/rc1.d/K09apache2
   /etc/rc2.d/S91apache2
   /etc/rc3.d/S91apache2
   /etc/rc4.d/S91apache2
   /etc/rc5.d/S91apache2
   /etc/rc6.d/K09apache2

 

Arrêt et démarrage par init / Upstart

Depuis l'utilisation de upstart, on trouve également des fichiers de configuration dans le répertoire /etc/init. Par exemple, pour php5-fpm, il s'agit du fichier /etc/init/php5-fpm.conf.

Le contenu du fichier est le suivant :

# php5-fpm - The PHP FastCGI Process Manager

description "The PHP FastCGI Process Manager"
author "Ondřej Surý <ondrej@debian.org>"

# Do not start at init
#start on runlevel [2345]
stop on runlevel [016]

pre-start exec /usr/lib/php5/php5-fpm-checkconf

respawn
exec /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf

On constate que les niveaux de démarrage sont fixés dans les ordres start ou stop. Par défaut, pour notre exemple, on démarre le service pour les runlevel 2, 3, 4 et 5.

Si on veut désactiver le service en totalité (pour le lancer manuellement, par exemple), on peut simplement mettre en commentaire la ligne commençant par start.

 

 

 

 

 

Catégorie