~ read.

Utilisation de update-rc.d sous Debian ou comment lancer des scripts au démarrage du système

update-rc.d est une commande bien pratique puisqu'elle vous permet d'exécuter des scripts quand le runlevel du système change (au démarrage ou à la fermeture du système par exemple). C'est notamment grâce à ça que tous vos services se lancent au démarrage et s'arrêtent à l'extinction du système sans que vous n'ayez (presque) rien à faire ;-).

Nous allons voir ici comment créer un script tout simple qui se contentera d'écrire dans un fichier lors du démarrage et de la fermeture du système.

Nous n'allons pas voir ici l'utilisation avancée de la commande update-rc.d que nous le verrons peut-être dans un prochain article.

Le script

Comme je vous l'ai expliqué dans l'introduction, le script que nous allons créer sera tout simple. Tout ce qu'il doit faire c'est écrire dans un fichier au démarrage et à la fermeture du système.

Bien sûr ce script n'est qu'un exemple, le but étant de vous expliquer le fonctionnement de base de la commande update-rc.d.

Les scripts qui doivent être lancés lors d'un changement de runlevel doivent toujours se trouver dans le dossier /etc/init.d/ (question d'organisation).

Commencez donc par créer le script que je nommerais, dans un grand moment d'inspiration, helloworld :

nano /etc/init.d/helloworld

Entrez-y les commandes suivantes :

#!/bin/sh

# Placez ici des commandes à exécuter à chaque appel du script
echo 'Le script a été appelé !' >> /root/helloworld.txt

# Le switch case ci-dessous permet de savoir si le système souhaite lancer ou arrêter le script (on le lance au démarrage et l'arrête à la fermeture du système)
case "$1" in
    start)
        # Placez ici les commandes à exécuter uniquement au lancement du script
        echo 'Le script a été lançé !' >> /root/helloworld.txt
    ;;

    stop)
        # Placez ici les commandes à exécuter uniquement à l'arrêt du script
        echo 'Le script a été arrêté !' >> /root/helloworld.txt
    ;;

    *)
        # On indique ici comment utiliser le script, c'est dans le cas où le script est appelé sans argument ou avec un argument invalide
        echo 'Usage: /etc/init.d/helloworld {start|stop}'
        exit 1
    ;;
esac

exit 0

Lorsque le système va appeler notre script, il va lui passer soit un paramètre start soit un paramètre stop. C'est ainsi que l'on pourra savoir si le système veut démarrer le script (donc que le système est en cours de démarrage) ou si il veut l'arrêter (donc que le système est en cours de fermeture).

Enregistrez maintenant le fichier (Ctrl + O) et fermez le (Ctrl + X).

Comme avec tous les scripts, il faut encore le rendre exécutable par le système avec la commande chmod :

chmod 755 /etc/init.d/helloworld

Pour que le système exécute le script automatiquement au changement de runlevel (ici démarrage et fermeture), nous devons créer des liens symboliques vers notre script dans les dossiers /etc/rcX.d correspondants. C'est à ça que nous sert la commande update-rc.d.

Nous allons ici l'utiliser avec les options par défault. C'est dans un prochain article que nous verrons l'utilisation avancée de cette commande.

Exécutez la commande ci-dessous pour créer les liens symboliques :

update-rc.d helloworld defaults

Il ne vous reste plus qu'à redémarrer le système puis à ouvrir le fichier /root/helloworld.txt pour vérifier le bon fonctionnement du script.

Si vous ne souhaitez plus que le script s'exécute automatiquement, vous pouvez simplement supprimer les liens symboliques créés précédemment avec la commande suivante (seul les liens symboliques seront supprimés, le script en lui même ne sera pas touché) :

update-rc.d -f helloworld remove