Découvrez Linux: Le répertoire /etc/init.d

Si vous utilisez Linux, vous avez probablement entendu parler du répertoire init.d. Mais que fait exactement ce répertoire? En fin de compte, il fait une chose, mais il le fait pour l’ensemble de votre système, donc init.d est très important. Le répertoire init.d contient un certain nombre de scripts de démarrage / d'arrêt pour divers services sur votre système. Tout, de acpid à x11-common, est contrôlé depuis ce répertoire. Bien sûr, ce n'est pas si simple.

Si vous regardez le répertoire / etc, vous trouverez les répertoires qui se présentent sous la forme rc # .d (où # est un nombre qui correspond à un niveau d’initialisation spécifique - de 0 à 6). Dans chacun de ces répertoires se trouvent un certain nombre d'autres scripts contrôlant les processus. Ces scripts commenceront par un "K" ou un "S". Tous les scripts "K" sont exécutés avant les scripts "S". Et en fonction de l'emplacement des scripts, vous déterminez à quel moment les scripts sont lancés. Entre les répertoires, les services système fonctionnent ensemble comme une machine bien huilée. Mais il est parfois nécessaire de démarrer ou d’arrêter un processus proprement et sans utiliser les commandes kill ou killall. C’est là que le répertoire /etc/init.d est utile.

Maintenant, si vous utilisez une distribution comme Fedora, vous trouverez peut-être ce répertoire dans /etc/rc.d/init.d . Indépendamment de l'emplacement, il sert le même but.

Pour contrôler manuellement les scripts dans init.d, vous devez avoir un accès root (ou sudo). Chaque script sera exécuté en tant que commande et sa structure ressemblera à ceci:

/etc/init.d/command OPTION

commande est la commande à exécuter et OPTION peut être l'un des éléments suivants:

  • début
  • Arrêtez
  • recharger
  • redémarrer
  • rechargement forcé

Le plus souvent, vous utiliserez soit démarrer, arrêter ou redémarrer. Donc, si vous voulez arrêter votre réseau, vous pouvez lancer la commande:

/etc/init.d/networking stop

Ou si vous modifiez votre réseau et devez le redémarrer, vous pouvez le faire avec la commande suivante:

/etc/init.d/networking restart

Certains des scripts init les plus courants dans ce répertoire sont:

  • la mise en réseau
  • samba
  • Apache2
  • ftpd
  • sshd
  • pigeonnier
  • mysql

Bien sûr, votre répertoire contient peut-être des scripts plus souvent utilisés - cela dépend de ce que vous avez installé. La liste ci-dessus provient d'une installation d'Ubuntu Server 8.10, de sorte qu'une installation de bureau standard aurait moins de scripts de type réseau.

Mais qu'en est-il de /etc/rc.local?

Il y a une troisième option que j'avais l'habitude d'utiliser un peu. Cette option est le script /etc/rc.local . Ce fichier est exécuté une fois que tous les autres scripts de niveau init ont été exécutés. Par conséquent, il est prudent de saisir les différentes commandes que vous souhaitez émettre au démarrage. Plusieurs fois, je placerai des instructions de montage pour des choses comme nfs dans ce script. C’est également un bon endroit pour placer des scripts de "dépannage". Par exemple, une fois que j’ai eu une machine qui, pour une raison quelconque, samba semblait ne pas vouloir démarrer. Même après avoir vérifié que le démon Samba était configuré pour s’initialiser au démarrage. Au lieu de passer tout mon temps au début avec cela, j'ai simplement placé la ligne:

/etc/init.d/samba start

dans le script /etc/rc.local et Samba a fonctionné comme un charme. Finalement, je reviendrais et réglerais le problème.

Dernières pensées

Linux est flexible. Linux est tellement flexible qu'il y a presque inévitablement de nombreuses façons de résoudre un seul problème. Le démarrage d’un service système est l’un de ces problèmes. Avec l’aide du système /etc/init.d (ainsi que /etc/rc.local ), vous pouvez être assuré que votre service démarrera.