================== =========================================================== =================================================================== CETTE PAGE - SOUS UNE FORME RÉVISÉE - A ÉTÉ TRANSFÉRÉE À L'ADRESSE SUIVANTE :
http://wiki.mandriva.com/fr/Services
NOUS VOUS CONSEILLONS DE VOUS Y RENDRE… ==================================================================
Services du système I
- 1 Introduction aux services du système
- 2 Les commandes 'service' et 'chkconfig'
- 3 Avantages généraux des services
- 4 DrakXServices
- 5 Comment fonctionnent les services
- 6 Les scripts associés aux services
- 7 Liens avec les niveaux d'exécution (runlevel)
- 8 Qu'est-ce que les niveaux d'exécution (runlevels) ?
- 9 Comment utiliser ce système
- 10 Autres ressources
Navigation :
Sous-section précédente : La planification des tâches
Page suivante : Liste des services les plus courants a-h
Index de la section Administration du système - Index de la Base de Connaissances
Introduction aux services du système
Si vous vous rendez dans la rubrique consacrée aux services du Centre de Contrôle Mandriva (MCC), en faisant par exemple un clic gauche sur l'étoile jaune puis 'Système/Configuration/Configurer votre ordinateur' et en choisissant ensuite 'Système/Activez ou désactivez les services système', vous verrez apparaître un écran affichant des informations en colonnes. Vous êtes dans l'interface graphique DrakXServices (voir aussi plus bas dans cette page) :
La première colonne contient un nom de service plus ou moins compréhensible.
La deuxième colonne contient l'indication 'actif' ou 'arrêté'.
La troisième colonne est un bouton qui permet d'obtenir quelques informations sur le service.
Ensuite, vient une case à cocher nommée 'Au démarrage', suivie par deux boutons :'Démarrer' et 'Arrêter'. Ceci représente ce que vous pouvez faire avec un service : vous pouvez le démarrer ou l'arrêter, et vous pouvez choisir si le service doit être automatiquement lancé au démarrage du PC ou pas.
Toutefois, avant de vous lancer dans des modifications en cochant ou décochant des cases, mieux vaudrait lire le contenu de cette page et des pages suivantes...
Mais qu'est-ce qu'un service ? Par rapport à un programme, un service n'a pas besoin d'information en provenance de l'utilisateur (il fonctionne à l'arrière-plan), sauf pour le démarrer et l'arrêter, et même cela peut être fait automatiquement.
Il existe deux sortes de services :
- Les services qui fonctionnent pendant toute la durée de la session (jusqu'à ce que le système soit arrêté). En termes Unix, ils sont appelés aussi des daemons ('esprit bienfaisant'), expression que l'on traduit le plus souvent en français par 'démon'. Ce sont habituellement des serveurs qui sont démarrés et qui attendent en permanence des requêtes entrantes, comme un serveur Web, un serveur de messagerie, le service d'impression ou un serveur de polices, ou encore un planificateur de tâches comme crond.
- Les services qui sont démarrés, utilisés puis arrêtés lorsqu'ils ont fini leur travail. Ce sont en général des scripts pour la maintenance du système ou pour activer certaines fonctionnalités, comme le script 'numlock' dont le seul but est d'activer le pavé numérique en mode 'chiffre' pendant la phase de démarrage du PC, ou le service anacron.
Bien que le Centre de Contrôle Mandrake fasse ce qui doit être fait, vous pouvez préférer l'un de ces autres outils. Ne craignez pas de rendre le système incohérent en utilisant des outils différents : ils utilisent tous les mêmes commandes, à savoir 'service' et 'chkconfig', dont nous allons parler maintenant.
Index de la section - Index de la Base de Connaissances
Les commandes 'service' et 'chkconfig'
La commande 'service', un simple script shell sous le répertoire '/sbin', est utilisée pour afficher l'état du service (status), pour l'arrêter (stop) ou pour le démarrer (start ou restart). Cette commande prend deux arguments : le nom du service (qui est le nom d'un fichier qu'on trouve dans le répertoire '/etc/init.d'), et ce qui doit être fait (à lancer sous 'root) :
service nom_du_service start service nom_du_service stop service nom_du_service restart service nom_du_service status
'restart' et 'status' ne sont pas supportés par tous les scripts associés aux services.
La commande 'service' n'a pas d'effet permanent au-delà de la session courante, au prochain démarrage du système elle n'aura plus le moindre effet.
La commande 'chkconfig' liste, ajoute, supprime et configure de façon permanente les services. Pour qu'un service soit lancé automatiquement au démarrage du PC, vous pouvez utiliser, sous 'root' :
chkconfig nom_du_service on
pour qu'il ne le soit pas :
chkconfig nom_du_service off
pour lister tous les services disponibles et leur configuration courante faites :
chkconfig --list
chkconfig --list nom_du_service
Ce qui est affiché par ces deux dernières commandes deviendra plus clair pour vous lorsque vous aurez lu la section suivante. Pour plus d'informations sur cette commande voyez man chkconfig.
Comme les outils graphiques dérivés, ces commandes nécessitent que vous soyez 'root'. Rien ne vous oblige à les utiliser à la place du Centre de Contrôle Mandrake ou d'un autre outil graphique ; pour ma part, je les préfère parce que je vais plus vite en tapant une commande qu'en cliquant sur une interface graphique !!
Index de la section - Index de la Base de Connaissances
Avantages généraux des services
Pouvoir contrôler les services a plusieurs avantages :
- Réduire la charge du système :
Bien que les daemons dorment la plupart du temps, ils utilisent néanmoins de la mémoire système. La commande 'service' vous permet de démarrer les services à la demande ; par exemple vous pouvez démarrer le service d'impression juste avant d'imprimer et l'arrêter juste après. - Améliorer la sécurité du système :
Les daemons écoutent sur certains ports. Plus de daemons actifs implique plus de ports ouverts et donc plus de points d'attaque possibles. En parallèle il y a des services qui améliorent la sécurité du système, comme le service bastille-firewall'. - Éviter les redémarrages :
Si vous changez la configuration d'un daemon, le daemon doit en général être redémarré afin de prendre en compte les modifications. Si vous installez un paquetage qui contient un service, le service n'est pas démarré immédiatement mais est configuré pour être lancé automatiquement au prochain démarrage du système.
La commande 'service' vous permet de démarrer un service une fois le paquetage installé, sans être obligé de redémarrer votre PC ... - Réduire le temps de démarrage :
Une bonne partie du temps nécessaire au démarrage d'un système Linux est pris par le démarrage des services. Si vous configurez votre système afin qu'il n'active que les services nécessaires en permanence, vous pouvez réduire le temps de démarrage de votre système de façon considérable.
DrakXServices
DrakXServices est un outil graphique, que nous avons déjà évoqué plus haut, disponible à partir du Centre de Contrôle Mandriva, via les menus 'Système' puis 'Activer ou désactiver les services système'. On peut aussi l'invoquer en tapant dans une console graphique (Konsole, rxVT...), sous 'root' : 'drakxservices' (en minuscules et sans guillemets) puis en pressant la touche ENTREE : l'interface graphique s'affichera alors.
Au démarrage du système, certains services (programmes fonctionnant en arrière-plan) réalisant des tâches diverses sont lancés. Cet outil vous permet d'administrer ces services.
Une description détaillée en est donnée dans la Documentation officielle Mandriva 5.19.2.
Voir aussi au début de cette page.
Index de la section Administration du système - Index de la Base de Connaissances
Comment fonctionnent les services
Cette section est à l'attention des personnes qui ne se contentent pas seulement de savoir utiliser les choses, mais qui veulent savoir aussi pourquoi les choses sont faites comme elles le sont. Vous pouvez vivre avec Linux sans cela, mais à mon avis c'est intéressant d'avoir une idée des concepts qui se cachent derrière tous ces dispositifs. Cela pourrait aussi un jour vous aider à créer vos propres services…
Les scripts associés aux services
Si vous êtes curieux, vous voulez sûrement savoir comment le système sait quels services sont disponibles. Les scripts qui gèrent les services sont situés dans le répertoire '/etc/init.d' ('/etc/rc.d/init.d' pour les anciennes versions). Les outils graphiques, comme le Centre de Contrôle Mandriva, considèrent que chaque script se trouvant dans ce répertoire contrôle un service ; si donc vous y ajoutez un script, il apparaîtra dans la liste des services du Centre de Contrôle Mandriva ainsi que dans les outils équivalents. Il pourra aussi être géré par les commandes 'service' et 'chkconfig'.
Un script qui gère un service contient au moins les commandes pour démarrer et arrêter le service en question. Regardons le modèle de base d'un tel script :
#! /bin/sh # chkconfig: niveaux_d_exécution numéro_du_lien_de_démarrage numéro_du_lien_d_arrêt # description: brève description de ce à quoi sert le service . /etc/rc.d/init.d/functions \case "$1" in start) echo -n "Démarrage du service : " commande(s) pour démarrer le service echo ;; stop) echo -n "Arrêt du service : " commande(s) pour arrêter le service echo ;; status) status nom_du_service ;; \*) echo "*** Usage: nom_du_service {start|stop|status}" exit 1 esac exit 0
Si vous avez déjà quelque idée de la programmation en script shell, c'est très simple. Les lignes 'chkconfig' et 'description' seront expliquées plus loin. La ligne
. /etc/rc.d/init.d/functions
\case
echo
chmod +x /etc/init.d/nom_du_service
Index de la section Administration du système - Index de la Base de Connaissances
Liens avec les niveaux d'exécution (runlevel)
Certains services ont besoin d'autres services pour fonctionner. Par exemple, le service 'httpd' (le serveur Web Apache) ne démarrera pas correctement si le script 'network' n'a pas activé les interfaces réseau. Comment donc est déterminé l'ordre d'activation des services au démarrage du système ?
Regardons pour commencer le contenu du répertoire '/etc/rc.d' :
ls /etc/rc.d init.d/ rc* rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local* rc.modules* rc.sysinit*
Le répertoire 'init.d' que vous voyez ici est le même que celui qui est sous le répertoire '/etc'. Vous voyez aussi plusieurs répertoires et des fichiers dont le nom commence par 'rc' ('rc' est l'abréviation de 'run command' = 'lancer une commande' en anglais).
À partir de la version 8.0 de Mandriva linux, la plupart de ces fichiers et répertoires sont aussi accessibles par des liens situés immédiatement sous le répertoire '/etc'.
Si vous regardez maintenant sous un des répertoires 'rc<numéro>.d', vous y trouverez plusieurs fichiers, certains commençant ont des noms qui commencent par la lettre 'S' et d'autres par la lettre 'K', K ou S étant suivie par un nombre à deux chiffres. 'S' est un raccourci pour 'start' (démarrer) et 'K' un raccourci pour 'kill' (arrêter, stopper). Le nombre représente l'ordre de démarrage et d'arrêt des services. En fait, tous ces fichiers ne sont que des liens vers les scripts qui se trouvent sous '/etc/init.d'.
'S12syslog' par exemple est un lien vers le script '/etc/init.d/syslog' et est démarré après 'S10network' (qui est un lien vers le script '/etc/init.d/network') mais avant 'S15cups'.
Vous n'avez pas à vous soucier de créer ces liens lorsque vous configurez un service standard avec la commande 'chkconfig' parce que la plupart de ces scripts contiennent déjà une ligne 'chkconfig' (qui sera utilisée avec l'option reset, voir plus loin). Par exemple, le script 'network' contient la ligne
# chkconfig: 2345 10 90
#! /bin/bash # # network Bring up/down networking # # chkconfig: 2345 10 90 # description: Activates/Deactivates all network interfaces # configured to start at boot time.
La configuration standard pour ce script est qu'il soit démarré aux niveaux (runlevel) 2, 3, 4 et 5 avec un lien 'S10network' dans les répertoires associés aux niveaux ('/etc/rc.d/rc.2' à '/etc/rc.d/rc.5') et arrêté aux niveaux 0, 1 et 6 avec un lien 'K90network' dans les répertoires associés aux niveaux ('/etc/rc.d/rc.0', '/etc/rc.d/rc.1' et '/etc/rc.d/rc.6').
Cette configuration est créée lorsqu'on utilise l'option reset.
chkconfig network reset
chkconfig nom_du_service on
Enfin cette commande va désactiver le service pour tous les niveaux :
chkconfig nom_du_service off
Index de la section Administration du système - Index de la Base de Connaissances
Qu'est-ce que les niveaux d'exécution (runlevels) ?
Les runlevels sont listés dans le fichier '/etc/inittab':
# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to \this) # 1 - Single user mode # 2 - Multiuser, without NFS # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to \this)
Le système est toujours à un certain niveau d'exécution, la plupart du temps au niveau 3 (mode console pur) ou au niveau 5 (mode avec le serveur X, donc avec une interface graphique).
À chaque changement de niveau (par ex: en démarrant le serveur X ou en l'arrêtant, en démarrant le système Linux ou en l'arrêtant), le script '/etc/rc.d/rc' est exécuté. Ce script parcourt les liens du répertoire associé au niveau d'exécution afin de lancer (lien S) ou d'arrêter (lien K) les services. Cela explique pourquoi les répertoires '/etc/rc.d/rc.0' et '/etc/rc.d/rc6' contiennent essentiellement des liens de type 'K' puisque tous les services doivent être arrêtés lorsqu'on arrête (niveau 0) ou relance (niveau 6) le système.
Ce système sophistiqué est appelé processus d'initialisation System V, parce qu'il a été introduit avec la version 5 d'Unix. À l'exception de Slackware, toutes les distributions Linux majeures l'utilisent. Slackware et les systèmes BSD utilisent le processus d'initialisation BSD-style qui regroupe plus ou moins tout le travail de l'initialisation et de maintenance des services dans un seul fichier.
Index de la section Administration du système - Index de la Base de Connaissances
Comment utiliser ce système
La commande 'chkconfig' vous permet de contrôler finement le démarrage et l'arrêt des services en fonction des niveaux d'exécution. Dans certains cas, il peut être utile de reconfigurer les services.
Prenez par exemple le service GPM. GPM correspond au démon qui gère l'utilisation de la souris ('General Purpose Mouse Daemon'). Vous en avez besoin au niveau 3 (console) pour pouvoir utiliser une souris. Au niveau 5 (interface graphique), il est inutile, il peut même provoquer des incompatibilités. En utilisant 'chkconfig' vous pouvez configurer le service gpm pour qu'il ne soit actif qu'au niveau 3 :
chkconfig \-\-level 3 gpm on chkconfig \-\-level 5 gpm off
Les pages suivantes de cet article vous présentent les scripts disponibles dans Mandrakelinux 8.1. La plupart reste valable pour les versions plus récentes de Mandriva Linux.
Index de la section Administration du système - Index de la Base de Connaissances
Page suivante : Liste des services les plus courants a-h
Autres ressources
man init
Documentation officielle Mandriva 2006
Revision / Modified: May 28, 2004
Author: Tom Berger/Wiki Community
Traduit par esfa en décembre 2004 - Révision par ptyxs (janvier 2006)
Legal: This page is covered by the GNU Free Documentation License. Standard disclaimers of warranty apply. Copyright LSTB and Mandrakesoft.
Données du document
Base de connaissances
- Compte perdu ?
- Rejoignez la communauté, faites partie du Club: c'est gratuit!
- Abonnez vous au service PWP!