Richard Bruno
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:

insserv mydaemon



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

insserv service


ou

insserv



Supprimer un service

insserv -r 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 ...





Dernières modifs
Debian (December 28th, 2020)
Gestion des paquets (November 21st, 2020)
Ubuntu (November 21st, 2020)
Squeeze (October 18th, 2016)
Wheezy (October 18th, 2016)
Wheezy et Dell precision M 6700 (October 18th, 2016)
insserv (October 18th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno