[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-team] Les run levels
- To: linux-team@rtfm.be
- Subject: Re: [linux-team] Les run levels
- From: "Pascal Bleser" <pbleser@atos-group.com>
- Date: Mon, 28 Jun 1999 10:31:04 +1
- Comments: Authenticated sender is <pab@mail>
- Comments: Sender has elected to use 8-bit data in this message. If problems arise, refer to postmaster at sender's site.
- In-reply-to: <>
- Organization: ATOS Payment Systems
- Reply-to: linux-team@rtfm.be
- Sender: owner-linux-team@rtfm.be
> Quelqu'un peut-il me dire comment sont executes les scripts dans rc[0-9].d.
> Ce que je sais:
> . quand le systeme entre dans un Run Level (x), il execute tous les S* scripts dans rc[x].d dans l'ordre alphanumerique avec "start" comme argument.
exact
> Ce que je voudrais savoir
> . quand on quite un Run Level, i.e. quand on passe d'un run level a un autre, quand sont executes les scripts K* du Run Level se terminant ?
En fait, c'est assez simple... (enfin... ;))
Le 1er process qui est éxécuté sur tout système UNIX (pas seulement Linux), c'est "init".
Tu peux d'ailleurs remarquer qu'il a toujours le PID 1 ;)
C'est init qui éxécute les scripts qui se trouvent dans les différents runlevels.
D'abord, 1 (multi-user, sans réseau) puis 2 (multi-user, avec réseau) et éventuellement
3 (multi-user, réseau + XDM).
init va regarder dans /sbin/init.d/rc*.d (aussi accessible par /etc/rc.d/rc*.d (lien symbolique))
où * est le runlevel. Lorsque tu passes de 1 à 2, p.ex., init passe en revue tous les liens
symboliques se trouvant dans /sbin/init.d/rc2.d commençant avec S* et les éxécute en leur
passant l'argument "start". Avant ça, il quitte le runlevel 1: là-bas, il éxécute tous les
scripts commençant par K* dans /sbin/init.d/rc1.d **et qui ne se trouvent pas sous la forme
S?? dans le runlevel dans lequel tu entres!** (*) avec l'argument "stop".
(*) évidemment... sinon, si les runlevels 2 et 3 ont un lien, disons S10apache et K10apache,
quand tu passes de 2 à 3, il arrêterait et relancerait apache (or ce n'est pas le cas ;))
Maintenant, dans les .../rc*.d/, il n'y a que des liens symboliques vers les scripts de
démarrage se trouvant dans /sbin/init.d/
Tu peux jeter un oeil sur ceux-ci: tu verras que les arguments possibles sont toujours
au moins "start" et "stop" (évidemment ;)), mais aussi "reload", "restart", "probe".
Ces scripts peuvent aussi être appelés manuellement par root, p.ex.:
# /sbin/init.d/apache reload
Encore un détail: quand les scripts sont éxécutés par init (donc lors d'un changement
de runlevel), la plupart des scripts vérifient le contenu d'une variable se trouvant
dans /etc/rc.config et qui indique des paramètres ou bien s'ils doivent se lancer ou
non. Un exemple, pour Apache: START_HTTPD="yes"
C'est pourquoi chaque script dans /sbin/init.d commence par un ". /etc/rc.config"
("." est un synonyme pour "source", ce qui équivaut à un "#include" du C ;))
J'espère que c'était clair ;)
Note que tu trouves qqes explications dans le manuel là-dessus...
-o) Pascal Bleser | Instead of giving Windows
/\\ C++/UNIX Development | the "three-finger-salute",
_\_v ATOS Payment Systems | give it the "one-finger-
Aachen, Germany | goodbye" <jfk/propaganda>
pbleser@atos-group.com------------------guru@linuxbe.org
---------
This message was sent by Majordomo 1.94.3. Please report problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.