Mandriva

================== =========================================================== =================================================================== 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

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.
Il existe de nombreux autres outils graphiques pour configurer les services. Webmin et Linuxconf le permettent. KDE et GNOME offrent également leurs propres outils de configuration. On peut aussi utiliser 'tksysv' et sa version console 'ntsysv' (il existe pour chacun d'eux un paquetage Mandriva que vous pouvez installer).

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
et pour vous assurer de la disponibilité d'un certain service :
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.
Index de la section Administration du système - Index de la Base de Connaissances

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
sert à invoquer un script 'functions' qui n'est utile ici que pour gérer l'argument 'status' (cf. la commande : status nom_du_service). Ensuite, nous trouvons une instruction
\case
qui permet au script d'exécuter les bonnes commandes en fonction du paramètre qui peut être 'stop', 'start' ou 'status'. La ligne
echo
est exécutée lorsque l'argument passé n'est pas dans la liste attendue et permet ainsi d'afficher un message explicatif. Vous devez évidemment vous assurez que nom_du_service correspond réellement au nom du script et que le bit d'exécution a été positionné sur ce script par
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
voici le début de ce script :

#! /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
La commande précédente va créer les liens alors que la commande suivante va activer le service pour les niveaux prévus par la ligne chkconfig: du script associé au service :

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
Cela va créer un lien de type S dans le répertoire 'rc3' et un lien de type K dans le répertoire 'rc5'.

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.
KB - System Services I
Version 1.21 modifié par ptyxs le 29/08/2007 à 12:36

 


en fr

RSS

Créateur: vwke le 2004/11/21 02:09
(c) Mandriva 2007
18888888