Sommaire |
Les daemons (ou démons) sont des programmes résidents chargés au démarrage. A chaque runlevel, correspond une liste de daemons à lancer (1 à 5) ou à arrêter (6 ou 0).
D'autres programmes que des démons peuvent également être lancés dès le démarrage de la machine, avec le même mécanisme.
Les runlevels ou "niveaux d'exécution", correspondent aux services qui vont être lancés au démarrage de la machine. En général (mais toutes les distributions n'utilisent pas la même numérotation), on peut avoir les niveaux d'éxécution suivant :
Le niveau d'exécution est déterminé (dans l'ordre) soit :
Les services sont lancés par des scripts situés dans (ou dans , (qui sont souvent le même fichier, l'un étant un lien vers l'autre). Chaque script contient une description ce qui permet de savoir ce que fait chaque daemon en début de script.
Le répertoire contient aussi des répertoires nommés (avec X numéro de runlevel). Chacun de ces répertoires contient un lien vers les scripts situés dans init.d.
Exemple:
La 1ère lettre détermine si le daemon est activé (S comme start) dans ce niveau d'exécution (runlevel) ou arrêté (K comme kill).
Les 2 chiffres permettent de trier l'ordre d'exécution des services (dans l'exemple, est démarré avant ).
Plutôt que de modifier directement les liens, on va utiliser la commande suivante :
ou
. À ce propos, je recommande d'utiliser "bash-completion" qui permet d'améliorer la complétion automatique de la ligne de commande, et par exemple de lister tous les services disponibles, en tapant "service" puis la touche [Tab].
Exemple:
ou :
pour l'arrêter.
pour Mandrake et RedHat
La commande est un peu plus puissante.
Pour ajouter un daemon dans tous les niveaux de demarrage:
Note: le daemon doit obligatoirement se trouver dans ou .
Pour lister tous les daemons avec leurs status:
Autre option:
pour ne lister que celui souhaité.
Pour activer ou désactiver un service au démarrage :
(avec 123456 le(s) runlevel(s) pour le(s)quel(s) le service doit être ou non activé).
Pour plus de détails, voir la man page.
C'est bien beau, mais si je dois me tapper tout ça à la mimine ?! Stop ! Linux a pensé à nous, et pour se simplifier la tache, on a plusieurs outils : Linuxconf via Panneau de configuration/gestion des services (qui stoppe ou arrête un daemon pour tous les runlevels), Runleveleditor (qui permet de choisir pour chaque runlevel les daemons à activer ou non), ksysv, etc. Fais ton choix camarade ;-)
pour (K)(X)(Ed)Ubuntu
La commande remplit la même fonction que la commande chkconfig ci-dessus mentionnée pour les distributions basées sur ubuntu (et sauf erreur debian, à vérifier).
Pour ajouter ou enlever un daemon dans tous les niveaux de demarrage:
Note: le daemon doit obligatoirement se trouver dans ou .
Pour lister tous les daemons avec leurs status:
Pour lister un daemon déterminé avec son status:
Pour activer ou désactiver un service au démarrage :
(avec 123456 le(s) runlevel(s) pour le(s)quel(s) le service doit être ou non activé).
Enfin il existe un mode interactif:
sans arguments ouvre un utilitaire graphique en mode texte listant tous les services et permettant d'éditer leur comportement dans chacun des runlevels
Pour plus de détails, voir la man page.
pour Gentoo
La configuration des services passe par la commande . Son fonctionnement est des plus simples.
Par exemple, supposons que vous ayez un script qui démarre votre connexion internet, pour qu'elle démarre automatiquement, il suffit de faire :
Pour arrêter un service c'est exactement pareil :
À partir de maintenant, votre speedtouch ne démarrera plus automatiquement.
Pour lister les services d'un runlevel particulier :
Nous allons détailler les étapes nécessaires pour configurer un nouveau service et l'ajouter à la base de . Nous allons prendre l'exemple d'un service nommé , qui devra être démarré aux runlevels 3, 4 et 5.
Pour écrire le script , on peut s'inspirer d'un script existant dans ce répertoire. Ci-dessous un exemple de ce script que nous allons détailler
Attention la syntaxe des 2 dernières lignes est à respecter à la lettre pour que le service puisse être ajouté correctement par la commande . Nous devons spécifier 2 mots clé :
On charge ici en mémoire les fonctions définies dans le fichier . Nous allons en effet utiliser certaines d'entre elles comme , , .
On démarre ici le traitement des arguments de gestion du service. Pour le démarrage, on vérifie d'abord qu'il n'existe pas de fichier de lock, ce qui permet d'éviter de démarrer 2 fois le même service. S'il existe alors on sort du script. Dans le cas contraire, on affiche un message sur la console indiquant le démarrage de et c'est la fonction qui se charge de lancer le service. Enfin au moment du lancement, on crée le fichier de lock.
En ce qui concerne l'arrêt du service, on utilise la fonction qui récupère le numéro de processus de notre service et le tue avec la commande . On efface également le fichier de lock afin de permettre éventuellement le redémarrage du service.
Le redémarrage du service consiste simplement à utiliser ce même script pour l'arrêter puis le démarrer
Cet argument permet de vérifier si le service est lancé, au moyen de la fonction .
Ce cas de figure traite le cas où l'utilisateur ne rentre pas le bon argument. On lui renvoie donc un message d'erreur lui indiquant ceux qui doivent être utilisés.
Ouf ! Nous avons terminé le script. Il ne reste plus qu'à le rendre exécutable :
Le plus gros du travail est fait ! Il ne reste plus qu'à ajouter le service à la base des services gérée par . Pour ce faire, rien de plus simple :
Le service fait maintenant partie de la base, les liens symboliques de démarrage ont été créés automatiquement de la manière suivante :
Si vous n'avez pas chkconfig ou désirez faire cette opération manuellement, il vous suffit de créer les liens symboliques listés ci-dessus.
Nous pouvons également vérifier de la manière suivante :
Le principe est le même que dans la section précédente, mais les fonctions disponibles sont différentes.
Un script de démarrage de Gentoo doit forcément être stocké dans et commencer par :
Vous pouvez remarquer qu'il ne commence pas par comme le fait habituellement un script. En fait c'est un habillage de qui met en place tout ce qui est nécessaire aux services de démarage.
Ensuite, on précise ce qui est nécessaire à notre script ainsi que ce qu'il fournit comme service (si le nom du service est différent de celui du script) :
Ce qui signifie :
La fonction est appelée en interne par pour déterminer l'ordre de démarrage des services ainsi que ceux qu'il faut démarrer.
Ensuite, il nous faut écrire ce qui doit se passer quand on démarre un service.
Ici, nous avons utilisé trois fonctions qui simplifient la rédaction d'un script de démarrage pour Gentoo :
L'utilisation de ces fonctions n'est absolument pas nécessaires. Mais elle est bien pratique.
Puis, nous devons écrire la fonction appelé quand on veut stopper le service :
Je pense que c'est assez clair.
Voilà c'est tout ! Le reste est géré par le programme . Si vous sauvez ce script dans , vous l'activez par :
La classe quoi ! Qui a dit que Gentoo était complexe ?
Dans mon cas et à titre d'exemple (internet, pas d'imprimante, travail sous X, son) je ne garde en activité que : , , .
Pour information, voici une liste (non exhaustive) de quelques daemons et de leur fonctions.
: nécessaire uniquement pour les ordinateurs portables
: Network time protocol
: nécessaire si vous utilisez un service rpc, comme NIS ou NFS
: configuration des sons (ma carte fonctionne très bien sans ??? ndlr:normal si le fichier est bien conçu)
: c'est le client , utilisé pour mounter des filesystems depuis un serveur
, , , : ne pas exécuter tous les services car ils fournissent trop d'informations aux utilisateurs à distance
: Utilisé par les clients sans lecteur de disquette (vulnérable)
: serveur proxy
: nécessaire si vous êtes un serveur NIS (extrêmement vulnérable)
: nécessaire si vous êtes un serveur NIS (extrêmement vulnérable)
: démarre le daemon du serveur dhcp
: utilisé pour le service at, similaire à cron, mais n'est pas nécessaire
: parle de lui-même
: daemon SNMP, peut donner à des utilisateurs distants des informations détaillées sur votre système
: serveur DNS
: RIP, n'exécutez cela que si vous en avez vraiment besoin
: services d'impression
: fichier Netware et serveur d'impression
: Utilisé pour le serveur NFS, lancez le que si vous en avez absolument besoin
: daemon AutoMount, sert à mounter les filesystems distants
: sert à lancer d'autres protocoles de routage comme OSPF
: Vous pourrez toujours envoyer/recevoir des emails par Netscape (ou autre) sans lui.
: serveur web Apache
: nécessaire si vous êtes un client NIS
: xfont server (indispensable si vous êtes sous X).
: serveur de news
: off par défaut. Rapport d'activité de datagrammes IP via mail
: détection des periphériques. A réactiver à l'occasion
: reprise de jobs de la crontab après un crash
: si vous ne savez pas ce qu'est une [../admin/automate.php3 crontab], désactivez-le.
: partitions spécifique sous ORACLE ou autre SGBD
: améliore la génération aléatoire de nombres (peut être utile pour les joueurs)
: redhat network
: j'utilise linuxconf sans ce daemon (peut être est-ce utile pour l'administration à distance ?)
: si vous n'êtes pas serveur NFS, désactivez-le
: parle de lui-même
: fournit des fonctions pour le support de la souris en mode texte (utile pour midnight commander en particulier)
Ouf, c'est fini...
@ Retour à la rubrique Administration système
Copyright © 08/07/2001, Philippe
| | Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 2.0 : http://creativecommons.org/licenses/by-sa/2.0/ |