OVH Cloud OVH Cloud

[FAQ] lancement au demarrage

12 réponses
Avatar
Rakotomandimby Mihamina
Bonjour,
Je suis a la recherche d'informations pour lancer un script en fin de
demarrage:

- pour MDK, RH, Fedora, Slackware, Suse il y a rc.local. Pour quelles
autres distros rc.local existe ? rc.local est un peu "systeme D" . Pour
chacune de ces distro (pour ceux qui connaissent), comment inserer
proprement un script dans la sequence de boot (aidez-moi un peu en
indiquant le repertoire /etc/rc.d/xx/ , et aussi comment faire si on
veut cibler un runlevel particulier, et aussi si on veut que les scripts
d'un meme runlevel soient lancés dans un certain ordre. Ces trois info
me semblent interessantes et limite importantes)

- pour Debian et Gentoo, ca se passe respaectivement a base de
"update-rc.d script defaults" et "rc.update add script defaults". Reste
a savoir comment avoir les scripts dans un certain ordre ( c'est dans
/etc/inittab qu'on regle le default ? )

- enfin, pour chacunes des distros, comment retirer un script (il y a
toujours possibilité de l'effacer physiquement, mais c'est pas 'propre')

Je demande tout cela parcequ'en fonction des distribs, on peut trouver
une procedure differente. Ce n'est pas une methode uniforme comme
"shutdown -r now" pour rebooter par exemple .... A moins que je me
trompe :-)
Les resultats de cette requete seront synthetisés (euh ... on en fera
une synthese) et seront ensuite publié sur http://fcolc.rktmb.org .
Merci d'avance.

--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina

2 réponses

1 2
Avatar
TiChou
Dans le message <news:cdid5t$ejs$,
*Rakotomandimby Mihamina* tapota sur f.c.o.l.configuration :

Bonjour,


Bonjour,

Je suis a la recherche d'informations pour lancer un script en fin de
demarrage:

- pour MDK, RH, Fedora, Slackware, Suse il y a rc.local.


Sur SUSE c'est plutôt le fichier /etc/rc.d/boot.local. Le fichier rc.local
existe, mais c'est un lien symbolique.

Pour quelles autres distros rc.local existe ?


/etc/rc.local existe sur les *BSD, SunOS/Solaris. Oups, le hors charte. :P

/etc/rc.d/rc.local existe sur les dernières versions d'IPCop et sur les
précédentes on plaçait ce qu'il fallait dans le fichier
/etc/rc.d/rc.sysinit.

On retrouve aussi /etc/rc.d/rc.local sur toutes les Red Hat like, comme les
SME, les PLD, les YDL, Aurox, ...


Pour chacune de ces distro (pour ceux qui connaissent), comment inserer
proprement un script dans la sequence de boot (aidez-moi un peu en
indiquant le repertoire /etc/rc.d/xx/ , et aussi comment faire si on
veut cibler un runlevel particulier, et aussi si on veut que les scripts
d'un meme runlevel soient lancés dans un certain ordre. Ces trois info
me semblent interessantes et limite importantes)


Sur la Red Hat et sur les Red Hat like (MDK, SME, etc), on place les scripts
dans le répertoire /etc/rc.d/init.d et on utilise l'outil chkconfig pour
activer ou supprimer le script au démarrage. Pour savoir dans quel runlevel
sera activé le script, on doit placer dans les en-têtes de chaque script les
lignes suivantes :

#!/bin/sh
#
# mon_service Ce magnifique script a le pouvoir vous faire patienter
# au démarrage en vous servant un café
#
# chkconfig: 2345 80 10
# description: mon_service is THE service

La ligne chkconfig a 3 paramètres, le premier la liste des runlevels, le
deuxième la priorité de lancement au démarrage par rapport aux autres
scripts et le troisième la priorité d'arrêt à l'arrêt ou au reboot.
La ligne description une description sommaire du service.

- pour Debian et Gentoo, ca se passe respaectivement a base de
"update-rc.d script defaults" et "rc.update add script defaults". Reste
a savoir comment avoir les scripts dans un certain ordre


Sur debian, on place les scripts dans le répertoire /etc/init.d et on
utilise l'outil update-rc.d de la manière suivante :

$ update-rc.d mon_service start 80 2 3 4 5 . stop 10 0 1 6 .

Le paramètre start est suivit de la liste des runlevels espacés et terminés
par un point et de la même manière avec le paramètre stop.

Sur Gentoo, les scripts sont eux aussi à placer dans le répertoire
/etc/init.d et la gestion des runlevels a été revue et améliorée. Il y a
principalement 4 runlevels qui sont només et non numérotés, boot, default,
nonetwrok et single.
L'ordre de lancement des services se fait de manière intelligente en
indiquant dans chacun des scripts de quoi ils dépendent, de quoi ils ont
besoin, avant ou après quel service et quel type de service ils
représentent.
Exemple du service named :

$ cat /etc/init.d/named

[...]

depend() {
need net
use logger
provide dns
}

Le service a besoin du service réseau (need net) et ne sera donc lancé que
quand le service réseau sera opérationnel. Il utilise le service syslog (use
logger). Et il fournit le service dns (provide dns).

Autre exemple, avec le service apache :

$ cat /etc/init.d/apache

[...]

depend() {
need net
use mysql dns logger netmount postgres
after sshd
}

Apache a besoin du réseau pour être lancé.
Il utilise MySQL, le service DNS, syslog, les systèmes de fichiers réseau et
Posgres, et ces services devront être alors lancés s'ils sont disponibles
sur le système.
Et enfin Apache devra être lancé après que le service sshd ait été lancé.

Enfin, pour mettre en place le script au démarrage, on utilise l'outil
rc-update (et pas rc.update) :

$ rc-update add mon_service default

Et automatiquement les dépendances des services sera mis à jour.

( c'est dans /etc/inittab qu'on regle le default ? )


Non, cf ce qui a été dit précédement.

- enfin, pour chacunes des distros, comment retirer un script (il y a
toujours possibilité de l'effacer physiquement, mais c'est pas 'propre')


Systèmes Red Hat :

$ chkconfig --del mon_service

Debian :

$ update-rc.d mon_service remove

Gentoo :

$ rc-update del mon_service default

Merci d'avance.


De rien.

--
TiChou

Avatar
TiChou
Dans le message <news:,
*TiChou* tapota sur f.c.o.l.configuration :

[...]

J'ai oublié de parler en détail le fonctionnement des scripts sur la SuSE...

Les scripts sont à placer dans le répertoire /etc/init.d.
L'outil de la SuSE pour manipuler les scripts est insserv mais il existe
aussi l'outil Red Hat chkconfig.
Avec insserv, pour ajouter un service au démarrage :

$ insserv mon_service

Pour le retirer :

$ insserv -r mon_service

Le script doit comporter dans ses en-têtes :

#!/bin/sh
#
### BEGIN INIT INFO
# Provides: café
# Required-Start: network
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mon_service version 0.0.1
# Description: Mon service qu'il est beau mais qu'il fonctionne mieux
# sous Gentoo.
### END INIT INFO

Et une dernière chose, sur certaines distributions (sur Debian et SuSE de
souvenir) on peut trouver un fichier script d'exemple (un squelette,
skeleton en anglais).

--
TiChou
1 2