Création d’un script de démarrage sous Linux

Date: 17/03/2009 | Catégories: Open-source,Systeme | Tags: ,,,,,

Dans cet article nous allons voir comment automatiser le démarrage d'un service ainsi que son arrêt sur un système GNU/Linux (plus particulièrement sur une distribution Ubuntu 8.04 Server).

A titre d'exemple, nous allons voir comment lancer un portail Liferay au démarrage de la machine, et comment l'arrêter proprement lors d'un reboot ou d'un shutdown.

Création du script

Nous allons donc créer un script nommé 'liferay' que l'on va placer dans le répertoire /etc/init.d .

Maintenant, il faut donner les permissions d'exécution sur ce script

Automatisation

Maintenant que le script est créé, il ne reste plus qu'à faire en sorte que le service se lance au démarrage de la machine et qu'il se stoppe à l'arrêt de celle-ci. Le runlevel qui nous intéresse ici est le numéro 2, mais on peut appliquer cette configuration pour les autres.

Il existe 2 méthodes pour procéder: la première consiste à créer des liens symboliques à la main dans le répertoire /etc/rc2.d en respectant les conventions de nommage, et la seconde (plus simple), consiste à utiliser la commande update-rc.d (c'est cette méthode que nous allons utiliser).

Avant tout chose, il faut déterminer le moment exact où le script s'exécutera:

  • Démarrage du service
    Le service liferay doit se lancer une fois que le serveur de base de données est démarré (en l'occurrence, il s'agit de MySQL).
    En regardant dans le répertoire /etc/rc2.d, on voit que le service mysql démarre à la position 19 (ce numéro peut changer suivant les configurations), donc nous allons démarrer le service liferay à la position 20.
  • Arrêt du service
    Le service liferay doit s'arrêter avant que le serveur de base de données ne s'arrête.
    En regardant dans le répertoire /etc/rc6.d (le runlevel 6 est consacré à l'arrêt de la machine), on voit que le service mysql s'arrête en position 18. Nous allons donc arrêter le service liferay en position 17.

Voici donc la commande qui permet de configurer le service comme décrit précédemment:

Désactiver un service

Pour désactiver le lancement automatique d'un service au démarrage, il existe 3 possibilités:

  • utiliser la commande update-rc.d

  • supprimer le lien symbolique du répertoire /etc/rcX.d (où X représente le numéro de runlevel désiré)
  • retirer les permissions d'exécution sur le script situé dans le répertoire /etc/init.d

Pour plus d'infos, consulter la documentation de la commande update-rc.d.

  • Doom

    C’est didactique… Mais un lien symbolique n’aurait pas suffit pour l’exemple que tu montres ?

  • Nicolas Richasse

    En fait le but était aussi de montrer l’utilisation de la commande update-rc.d sous ubuntu, qui crée dans ce cas 2 liens symboliques en 1 commande 😉

  • Hello,

    Super billet, petite question : Comment fait on pour éviter que l’éxécution d’un script ne pollue l’output de la console au démarrage et empeche l’affichage du reste de la console et du passage au prompt de login. Le serveur fonctionne très bien du reste et on peut se connecter en SSH etc… Juste que si je branche un écran (ou VNC) je ne vois que l’output de mon script.

    D’avance merci 🙂