navigation
Home
admin
|
insserv
October 18th, 2016
|
| Table des matières |  |
Commandes
Notes diverses de présentation d'insserv
Fonctionnement
Autres systèmes de boot
Exemple
In Debian releases prior to 6.0, a service could be added with update-rc.d:
update-rc.d mydaemon defaults |
Starting with Debian 6.0, the insserv command is used instead, if dependency-based booting is enabled:
Where mydaemon is an executable init script placed in /etc/init.d. insserv will produce no output if everything went OK. Examine the error code in $? if you want to be sure.
Both the old and the new way requires an init script to be present in /etc/init.d. For dependency-based booting, the script needs to be an LSB init script.
Source : https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot
| Commandes |  |
Ajouter un service
ou
Supprimer un service
Seul le script dans /etc/init.d est conservé
Tester l'ajout d'un service
root@deb1:/etc/init.d# insserv -n lanc_b1
insserv: enable service ../init.d/lanc_b1 -> /etc/init.d/../rc2.d/S20lanc_b1
insserv: enable service ../init.d/lanc_b1 -> /etc/init.d/../rc3.d/S20lanc_b1
insserv: enable service ../init.d/lanc_b1 -> /etc/init.d/../rc4.d/S20lanc_b1
insserv: enable service ../init.d/lanc_b1 -> /etc/init.d/../rc5.d/S20lanc_b1
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop |
| Notes diverses de présentation d'insserv |  |
Note 1
Depuis Squeeze, Debian est entièrement passée à une séquence de boot LSB, les dépendances déterminent l'ordre relatif de démarrage/arrêt des services ce qui implique que insserv gère lui-même l'ordre des scripts au sein des différents runlevels, et ça doit sûrement poser des problèmes quand tu veux définir cet ordre à la main.
La Debian way réside maintenant dans des en-têtes LSB adéquats, et nulle part ailleurs.
Source : http://www.debian-fr.org/probleme-ordre-de-demarrage-services-runlevel-t35430.html
Note 2
The simple sequential initialization system (the classical System V style boot system) was used up to the Debian lenny system.
The recent Debian system is optimized to execute the initialization scripts concurrently, instead.
The insserv(8) command uses the LSB package dependency information and calculates the dependencies between all scripts.
See "/usr/share/doc/insserv/README.Debian".
The LSB package dependency information defined in the header of init scripts ensures availabilities of required resources.
See Linux Standard Base Core Specification 3.1, VII. System Initialization.
Announcement of "Parallel booting enabled by default"
Source : http://www.debian.org/doc/manuals/debian-reference/ch03.en.html#_sysv_style_init
Note 3
Dans Squeeze, le système de démarrage par défaut utilise insserv, un système de démarrage où l'ordonnancement se fait en fonction des dépendances entre scripts. Chaque script de démarrage déclare ainsi les contraintes qui s'appliquent à lui (par exemple, s'il doit démarrer avant ou après tel autre service); init les lance alors dans un ordre qui satisfait les contraintes. La numérotation statique des scripts n'est donc plus prise en compte (mais ils doivent toujours s'appeler d'un nom composé d'un «S» suivi de deux caractères, suivis à leur tour du véritable nom du script utilisé pour les dépendances).
Source : http://debian-handbook.info/browse/fr-FR/stable/unix-services.html
Note 4
Si:
/etc/default/rcS contient CONCURRENCY=none ou /etc/init.d/.legacy-bootordering existe -> démarrage sysV classique
sinon si les fichiers /etc/init.d/.depend.{boot,start,stop} existent et sont non vide -> démarrage "startpar -M"
tout les autres cas, -> démarrage sysV classique
Source : http://doc.cliss21.com/index.php?title=Script_rc_debian
Note 5
"Dans le cas de Debian, les scripts init doivent utiliser uniquement dash (The Debian Almquist Shell (dash) is a POSIX-compliant shell derived from ash), le shell par défaut "/bin/sh" est maintenant un lien symbolique vers dash. Les script init ont été corrigés, les rapports de bug étaient taggués "bashism"."
Source : http://linuxfr.org/news/petit-etat-de-l-art-des-systemes-d-initialisation-1
| Fonctionnement |  |
insserv enables an installed system init script (boot script) by reading the comment header of the script (i.e les tags LSB présents dans les entêtes des scripts).
System Facilities
insserv scans for System Facilities in the configuration file /etc/insserv.conf and each file in the directory /etc/insserv.conf.d/. Each line which begins with $ and a following name defines a system facility accordingly to the Linux Standard Base Specification (LSB), All names followed by such a system facility will declare the required dependencies of the facility.
$all : This facility indicates that a service should be inserted at the end of all services at starting and at the very beginning at stopping. Clearly all services using this facility will be grouped into one starting or stopping order.
Entête LSB
# more /etc/init.d/cups
#! /bin/sh
### BEGIN INIT INFO
# Provides: cups
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Should-Start: $network avahi
# Should-Stop: $network
# X-Start-Before: samba
# X-Stop-After: samba
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: CUPS Printing spooler and server
### END INIT INFO |
# Required-Stop: boot_facility_1 [ boot_facility_2 ...]
declares facilities which must be available during shutdown of the service declared in the Provides tag.
# Should-Stop: boot_facility_1 [ boot_facility_2 ...]
declares facilities which should be available during shutdown of the service declared in the Provides tag.
In both cases the script system should avoid stopping services which are declared by these two Stop tags until the script including these tags is stopped.
The optional X−Interactive keyword implies that the script using this keyword should be started alone in a concurrent boot configuration because it interact with the user at the console. Only the value true is recognised. All other are ignored.
The optional X−Start−Before keyword implies that the script using this keyword should be started before the specified service names.
Whereas the optional X−Stop−After keyword implies that the script using this keyword should be stopped after the specified service names.
Both implies that those services now depend on the specifying script.
With known dependencies and runlevel(s) insserv sets and reorders the corresponding symbolic links of the concerned runlevels directories.
Source : man page. Version web : http://man.flashnux.com/en/debian/6/6.0.1/man8/insserv.8.html
Fichiers /etc/init.d/.depend.*
/etc/init.d/.depend.boot
/etc/init.d/.depend.start
/etc/init.d/.depend.stop
| Autres systèmes de boot |  |
upstart
Le système upstart, apparu plus récemment, n'est pas encore parfaitement testé sous Debian. Il fonctionne avec des événements plutôt que des niveaux de fonctionnement prédéfinis; les scripts de lancement ne sont plus déclenchés par le changement de runlevel mais par l'aboutissement des scripts précédents dont ils dépendent. Ce système, initié par Ubuntu, est présent dans Debian Squeeze mais n'est pas le système par défaut: il vient en fait en remplacement de sysvinit, et une des tâches lancées par upstart est de lancer les scripts écrits pour les systèmes traditionnels, notamment ceux du paquet sysv-rc (avec le mode de démarrage parallèle comme précédemment).
Source : http://debian-handbook.info/browse/fr-FR/stable/unix-services.html
systemd
Un autre nouveau venu est systemd, mais il n'a pas encore la maturité nécessaire pour faire partie de Squeeze. Son approche est à rebours des précédentes: au lieu de lancer préemptivement tous les services, en se posant la question de l'ordonnancement, systemd fait le choix de les démarrer à la demande, un peu selon le principe d'inetd. Mais cela implique que le système de démarrage doit être mis au courant de la manière dont les services sont rendus disponibles (qu'il s'agisse de serveurs qui écoutent sur le réseau, de systèmes de fichiers ou autres), et nécessite donc une modification partielle desdits services.
Source : http://debian-handbook.info/browse/fr-FR/stable/unix-services.html
| Exemple |  |
Une petite boucle :
root@deb1:~# cat /root/b1
#!/bin/bash
while true
do
echo "$(date) en cours ..." >> /tmp/b1.log
sleep 2
done |
Un lanceur :
root@deb1:~# cat /etc/init.d/lanc_b1
#! /bin/sh
### BEGIN INIT INFO
# Provides: lanc_b1
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /root/b1
### END INIT INFO
/root/b1 & |
Une prise en charge par insserv :
root@deb1:~# insserv
root@deb1:~# find /etc -name '*b1' -exec ls -al {} \;
-rwxr-xr-x 1 root root 213 oct. 2 21:20 /etc/init.d/lanc_b1
lrwxrwxrwx 1 root root 17 oct. 2 21:21 /etc/rc3.d/S20lanc_b1 -> ../init.d/lanc_b1
lrwxrwxrwx 1 root root 17 oct. 2 21:21 /etc/rc5.d/S20lanc_b1 -> ../init.d/lanc_b1
lrwxrwxrwx 1 root root 17 oct. 2 21:21 /etc/rc4.d/S20lanc_b1 -> ../init.d/lanc_b1
lrwxrwxrwx 1 root root 17 oct. 2 21:21 /etc/rc2.d/S20lanc_b1 -> ../init.d/lanc_b1 |
Une vérification :
root@deb1:~# tail -f /tmp/b1.log
Wed Oct 2 21:41:24 CET 2013 en cours ...
Wed Oct 2 21:41:26 CET 2013 en cours ...
Wed Oct 2 21:41:28 CET 2013 en cours ... |
|
|
Contact
|
|---|
Pour m'envoyer un mail, Pour me laisser un commentaire :richard.brunooo chez gmail.com |  |
|
|