Académique Documents
Professionnel Documents
Culture Documents
ifup/ifdown, ...) déconfigurez manuellement les interfaces réseaux via la commande ip addr
flush ethX (X valant 0 puis 1 puis 2 pour r2).
Objectifs
Savoir ce qu'est un service, ou daemon.
Lorsque l'on liste les processus en cours d'exécution, on peut effectivement voir les
programmes que l'on a démarré ou les commandes que l'on a lancé. Cependant, en cherchant un
peu, on peut aussi voir des processus qui semblent inconnus, comme rsyslogd, ntpd, etc. Ce sont
en fait des programmes qui s'exécutent en arrière plan et que l'on appelle des services.
I) Définition de Service
Un service (parfois appelé daemon) est un programme qui s'exécute en arrière-plan, plutôt
contrôlé par le système d'exploitation que par l'utilisateur directement.
Exemple
Les services peuvent remplir de nombreuses fonctions différentes, quelques exemples :
- NetworkManager est un service sur certaines distribution Linux qui permet de gérer la
configuration réseau
- NTPD est un service qui sert à gérer l'heure de la machine (grâce au protocole NTP)
- unattended-upgrades permet de gérer les mises à jour automatiquement, en arrière-plan, sur
les systèmes utilisant APT
Systemd
Sur Ubuntu, comme beaucoup autres distributions Linux, un logiciel est au coeur du système
d'exploitation et permet, entre autres, de gérer les différents services : Systemd. Systemd est le
logiciel qui initialise le système d'exploitation au démarrage (dont le fameux processus init fait partie)
et qui démarre et pilote les différents services de la machine.
Méthode systemctl
Systemd est un logiciel très complexe, nous ne nous intéresseront ici que à la partie qui permet de
gérer les services de la machine. Pour cela on peut utiliser la commande systemctl
systemctl --type=service
Cette commande permet de lister tous les services sur la machine, associé à leur description. On peut
voir qu'il y en a plusieurs dizaines par défaut. Il est possible d'afficher le statut d'un service
1. Cycle de vie d'un service
Un service peut-être dans plusieurs états, les principaux étant :
- active lorsqu'il est démarré (ou activating pendant la phase de démarrage)
- inactive lorsqu'il est arrêté (ou deactivating pendant la phase d'extinction)
- failed lorsqu'il s'est arrêté suite à une erreur
Méthode
L'état d'un service peut-être modifié avec les commandes suivantes :
Remarque
Dans le cas d'une utilisation comme ordinateur personnel, il est peu courant de manipuler les services,
ou même Systemd. En effet les services sont gérés par Systemd, qui les démarre et les arrêtent en
fonction du besoin. Cependant dans le cas d'un serveur, il arrive que l'on ajoute des services à la
machine (par exemple un serveur web, ou une base de donnée) et qu'il soit nécessaire de les piloter
avec systemctl. il est donc important de garder en tête ces notions et commandes de base.
Un programme qui s'exécute en arrière-plan est un service. Les services sont gérés par Systemd
sous Ubuntu, mais il est possible de les piloter soi même à l'aide de la commande systemctl.
Question: Un service nommé cron est installé par défaut sur la plupart des distributions Linux.
D'après sa description, à quoi sert-il ?
Il s'agit d'un service, très connu sous Linux, qui permet d'exécuter des tâches à intervalles réguliers
sur la machine.
Nous allons tout d’abord présenter quelques notions théoriques concernant les processus,
puis les cinq modes d’exécution d’une commande sous Linux, ainsi que les commandes ps et kill
qui permettent de gérer les processus. Enfin nous présentons le job control.
1. Processus
Un processus est un programme en cours d’exécution. Les attributs d’un processus appartiennent
à ce que l’on appelle son environnement : parmi eux le code, les données temporaires, les données
permanentes, les fichiers associés, les variables. L’environnement d’un processus contient aussi les
entités que le système lui attribue :
3. Temps partagé
On appelle temps partagé une exploitation dans laquelle plusieurs processus sont simultanément en
cours d’exécution. Cette simultanéité n’est qu’apparente. Le noyau Linux va affecter à l’unité centrale
le processus en cours dont la priorité est la plus importante. Lorsque ce processus est en attente ou si
un processus de priorité plus importante apparaît, le noyau libère l’unité centrale du processus en
cours et charge le nouveau processus de haute priorité. De surcroît, afin qu’un processus de haute
priorité ne monopolise pas l’unité centrale, le noyau Linux va modifier dans le temps les priorités des
processus en attente et en cours afin de permettre à l’ensemble des processus d’être exécuté.
init est le père de tous les processus. Son rôle premier est de créer les processus à partir d'un script
enregistré dans le fichier /etc/inittab. Il contrôle également les processus autonomes nécessaires à
un système particulier.
1. NIVEAUX D'EXÉCUTION
Un niveau d'exécution est une configuration logicielle du sytème qui permet à un groupe de
processus sélectionnés d'exister. Les processus générés par init pour chacun des niveaux
d'exécution sont définis dans le fichier /etc/inittab. init peut être dans l'un des huit niveaux
d'exécutions : 0-6 et S ou s. Le niveau d'exécution est modifié par un utilisateur privilégié utilisant
telinit. Cela envoie les signaux appropriés à init, lui indiquant dans quel niveau d'exécution entrer.
2. LA COMMANDE PS
La commande ps options permet d’obtenir des renseignements sur l’état des processus en cours.
Par défaut, seuls les processus de la connexion en cours pour l’utilisateur ayant lancé la commande
ps sont affichés. Une option u nom utilisateur permet de sélectionner les processus de cet
utilisateur pour l’ensemble de ses connexions. Parmi les nombreuses options de cette commande, les
options suivantes sont particulièrement utiles :
3. LA COMMANDE KILL
Cette commande kill signal PID sert essentiellement à arrêter des processus en arrière-
plan (background). En effet, pour arrêter le ou les processus liés à la commande en cours
d’exécution, il est beaucoup plus simple de taper <ctrl-c>.