Documentations - Système & Réseau
Update-rc.d ou comment mettre à jour ses scripts de démarrage
Edi Stojicevic
| Historique des versions | ||
|---|---|---|
| Version 0.1 | 26 Janvier 2005 | Revu par : ES |
| Première version | ||
- Table des matières
- 1. Introduction
- 2. Prérequis
- 3. update-rc.d
- 4. Références
1. Introduction
Vous vous êtes déjà sûrement posé la question "comment démarrer tel ou tel programme, service au démarrage de mon système ?". Le système Debian GNU/Linux dispose d'un petit utilitaire permettant de mettre à jour automatiquement les liens vers les différents scripts d'initialisation. Ceux-ci sont généralement amorcés par init quand on change de "runlevel" ou lors du démarrage du système et servent à démarrer ou arrêter les différents services.
2. Prérequis
Avant de commencer il faut s'assurer que la commande soit bien présente sur votre système. Cela devrait être le cas car elle fait partie du paquet sysvinit installé lors de l'installation du système. Mais pour s'en assurer faire :
# dpkg -s update-rc.d [...] Listing de différentes choses, la ligne qui nous intéresse est la suivante sysvinit : /usr/sbin/update-rc.dCette ligne indique la commande est bien présente et qu'elle fait partie du paquet sysvinit. Nous pouvons remarquer que cette commande n'est utilisable que par l'utilisateur root car généralement les commandes sous /usr/sbin ne sont pas disponibles pour les utilisateurs normaux.
Un autre prérequis est une connaissance minimale de l'écriture de scripts en shell et du fonctionnement des "runlevels". Concernant la programmation en shell, vous trouverez de nombreux liens ici. Vous pouvez également vous abonner à la liste de diffusion shellscript-fr où de nombreuses personnes viendront à votre secours en cas de besoin.
3. update-rc.d
La commande update-rc.d met à jour automatiquement les liens placés dans le répertoire /etc/rcrun-level.d/NNom, où rcrun-level.d est le numéro du runlevel à exécuter (par exemple, /etc/rc3.d/ indique le répertoire de scripts du runlevel 3), vers les scripts d'initialisation placés dans /etc/init.d/. Ces scripts sont exécutés lors d'un changement de fonctionnement (runlevel).
Sous Debian GNU/Linux, dix runlevels existent :
* 0 --> halt * 1 --> single-user sans réseau. Utilisé surtout pour des tâches d'administration * 2-5 --> multi-user avec réseau * 6 --> reboot * 7-9 --> Très peu documentés et utilisés du fait que les Unix traditionnels ne les utilisent pas * S --> Pas employé directement, les scripts s'en servent lors du passage en runlevel 1Afin de connaître votre runlevel, vous pouvez exécuter la commande suivante :
# who -r niveau d'exécution 2 Jan 17 08:27 dernier=SLe runlevel par défaut qui est utilisé lors du démarrage du système est indiqué dans le fichier /etc/inittab à la ligne
id:2:initdefault:Nous pouvons observer ici que le runlevel est le 2. Le fait de connaître son runlevel est indispensable pour positionner son lien dans le bon répertoire. En effet, si je le place dans le répertoire /etc/rc3.d, il ne serait pas, dans notre exemple, exécuté.
3.1. Création de scripts
Pour faciliter l'écriture de scripts, un exemple est disponible sous /etc/init.d/. Cet exemple est le fichier skeleton. Si la compréhension de ce script vous pose des problèmes vous pouvez me contacter ou vous pouvez vous abonner à la liste de diffusion cité ci-dessus pour poser vos questions.
Donc sous /etc/init.d de nombreux scripts sont disponibles comme le script apache pour redémarrer le serveur Web Apache, networking permettant de relancer la configuration des interfaces réseaux, l'atttribution d'adresse ip par DHCP, etc ...
Vous pouvez donc placer dans ce répertoire votre script modifié puis nous utiliserons la commande update-rc.d pour créer les liens vers ces scripts en fonction du runlevel.
3.2. Utilisation de la commande update-rc.d
Cet utilitaire va donc nous permettre de créer ou de supprimer des liens vers le script que vous aurez placé au préalable dans le répertoire /etc/init.d/.
Voici la liste des commandes pour ajouter ou supprimer un lien :
$ update-rc.d -n script1 defaults 90Cette commande utilise l'option defaults qui va créer des liens pour démarrer le script dans les runlevels 2, 3 ,4 et 5 et des liens pour l'arrêter dans les runlevels 0, 1 et 6. L'option -n permet de simuler l'installation du lien. Le 90 correspond à NN dans la syntaxe générale de la commande et permet de définir l'ordre d'exécution des scripts. Ainsi, un lien S20 démarrera avant un S50, si aucune valeur n'est indiquée, par défaut, elle est mise à 20.
$ update-rc.d script2 start 50 2 3 4 5 . stop 50 0 1 6 .Cette commande créé des liens pour un démarrage en runlevel 2, 3, 4 et 5 avec une priorité de 50 et un arrêt en runlevel 0, 1 et 6 avec également une priorité de 50.
$ update-rc.d script3 removeCette commande permet de retirer le lien pointant vers script3 du répertoire /etc/rcX.d/. Toutefois, il faut que le script "script3" soit supprimer au préalable du répertoire /etc/init.d/ L'option -f permet d'effacer les liens même si /etc/init.d/script3 existe encore.
4. Références
Pour plus d'informations sur cet outil, réferrez-vous aux pages de manuels de update-rc.d et init(8)
- Ajouter un commentaire
