Vous êtes sur la page 1sur 36

Administration

Réseaux et Systèmes

Cours 03
Gestion des processus, services
systèmes et chiers journaux

Cas : OS Debian

fi

Sommaire
1.Notion de processus

2.Notion de service

3.Gestionnaire de service

4.Arrêt et démarrage des services

5.Les chiers journaux


fi
Services et séquence de
boot
• Les services sont liés au séquence de
démarrage du système

• Lancement du bios

• Test du matériel

• Recherche d’un système à charger

• Chargement et lancement du système

• Lancement du premier processus (pid=1)

• Démarrage des services ( dont celui de


connexion)
Processus
• Le premier processus lancé (Processus de pid 1) est 

/sbin/init

% ps aux --sort=pid
• Possibilité de spéci er un autre processus grâce à init= lors
du chargement du noyau

Ex: init=/bin/sh pour lancer le shell

• Plusieurs systèmes de gestion pour les scripts de services

• System V init (1983)

• Systemd (2010) remplace system V init


fi
Processus
• Un processus correspond à n'importe quel exécutable exécuté. Si le
processus 2 a été lancé par le processus 1, on l'appelle un processus
ls. Le processus qui l'a lancé est appelé processus parent.

• La commande pstree donne une bonne illustration de l’arborescence des


processus (package psmisc)

• La commande ps permet de rechercher ou d’a cher les informations


d’un processus (man ps pour plus de détails du sortie de la commande)

• top et htop pour a cher les informations sur les processus en mode
dynamique
fi
ffi
ffi
Processus
• Pour lancer une tâche ou un processus il faut executer la
commande

% tail -f /var/log/messages
% libreo ce monprojet.doc
• Pour quitter un processus en cours d’execution on tape la
combinaison de touche CTRL + C

• Pour mettre en pause l’execution d’un processus on tape la


combinaison de touche CTRL + Z

• Pour redémarrer en premier plan un processus stopper, on utilise la


commande fg

• Pour redémarrer en arrière plan un processus stopper, on utilise la


commande bg

ffi
Processus
• Pour lancer une tâche ou un processus en arrière plan, il
faut ajouter & à la n de la commande

% tail -f /var/log/messages &


• La commande jobs permet de visualiser les tâches

$ jobs
[1]+ Stopped tail -f /var/log/syslog
[2]- Running tail -f /var/log/messages &

• La commande fg permet de récupérer une tâche en


premier plan

% fg 2

Plus => https://linux.go net.org/06-03-processus-linux/

fi
ffi

Processus
• Les Signaux

Nom Signi cation Comportement

sighup Hang-up ( n de connexion) Terminaison

sigint Interruption (ctrl-C) Terminaison

sigquit Interruption forte (ctrl-\) Terminaison + core dump

sigfpe Erreur arithmétique (division par zéro) Terminaison + core dump

sigkill Interruption très forte (ne peut être ignorée) Terminaison

sigsegv Violation des protections mémoire Terminaison + core dump

sigpipe Écriture sur un tuyau sans lecteurs Terminaison

sigalrm Interruption d’horloge Ignoré

sigtstp Arrêt temporaire d’un processus (ctrl-Z) Suspension

sigcont Redémarrage d’un processus arrêté Ignoré

sigchld Un des processus ls est mort ou a été arrêté Ignoré

• La commande kill permet d’envoyer un signal au processus

• kill <signal> <pid>


fi
fi
fi
Notion de service
• Système Linux repose sur de nombreux
services :

• Services de connexion

• Services de tâches plani ées

• Services pour enregistrer les messages


d’erreurs

• Contrôle de l’alimentation (veille,


reboot, arrêt,…)

• Rôle : faire vivre le système


fi
Notion de service
Service = demon + lanceur
• Le service est généralement composé de

• Un « démon » (programme qui tourne en


permanence et qui traite les demandes qui
arrivent. Programme situé généralement dans /usr/
bin et parfois dans /sbin

• Un script de contrôle (arrêt, démarrage, état)

• Des chiers de con guration (situé souvent dans /


etc

• Des chiers d’état (/va/log/) ou de données (var/lib)


fi
fi
fi
Notion de service
Le Démon
• Programme qui tourne en permanence et en arrière
plan.

• Le démon est composé d’un ou plusieurs


processus

• Son travail est généralement dé ni dans un chier


de con guration dans /etc

• Il surveille certaines sources d’informations

• Port réseau (socket)

• Voie de communication interne (bus logique)

• Horloge interne, chiers


fi
fi
fi

fi
Notion de service
Le script de contrôle
• Les services sont activés ou arrêtés par des scripts
situés dans /etc/init.d

• Ce sont des scripts bash, un par service, qu’on


lance en fournissant un mot clé en paramètre:

• start => le service démarre demon &

• stop => le service s’arrête : kill $pid_demon

• status => le service a che son état

• restart => le service redémarre

• reload => le service relie le chier de


con guration
fi
ffi
fi

Notion de service
Exemple
• Pour démarrer le service d’impression

• sudo /etc/init.d/cups start

• Pour arrêter le partage de chier

• sudo /etc/init.d/samba stop

• Pour redémarrer le gestionnaire de connexion

• sudo /etc/init.d/gdm3 restart


fi

Notion de service
Exemple de service minimal
• Pour un mini script de lancement d’un démon,

• L’appel se fait par

sudo /etc/init.d/control start | stop

• Le contenu du chier control

#!/bin/bash

case $1 in

start) /usr/bin/demon & ;;

stop) killall -9 demon ;;

• Mémorisation d’un PID dans /var/run/ ou /run

Ex: /var/run/demon.pid

• Permet de cibler le démon à tuer plutôt que de faire un killall

fi

Gestion des services


• Au lieu de lancer le script directement , il existe un
système de gestion des services

• System V init (1983)

• Systemd (2010) remplace system V init

• systemd utilise une commande appelée systemctl

• systemctl start cups

• Systemctl stop networking


Gestion des services
systemd
• La con guration des services se trouve par
défaut dans le répertoire /lib/systemd/
system ou /usr/lib/systemd/system.

• Le répertoire /etc/systemd/system permet de
stocker ses modi cations et con gurations
personnelles, ce qui a le gros avantage que ces
chiers ne seront pas e acés en cas de mise à
jour du système.

• Au lancement systemd lit le chier /etc/


systemd/system.conf
fi
fi
fi
ff
fi
fi

Gestion des services


Systemd
• Organisation des services en groupes (cgroups)

• Supervision des services

• Control des services et de leur environnement

• Syntaxe déclarative pour gérer les unités

• Systemd se base sur des unités (units) qui ont un nom et un type.

Ex :

NetworkManager.service => l'unité de type service qui


s'occupe de la gestion réseau ;

systemd-shutdownd.socket dé nira la socket pour l'arrêt.

• La commande suivante vous listera les unités disponibles sur votre


système :

% systemctl -t help
fi

Gestion des services


Systemd
Les tâches du systemd sont organisés en unités de di érents types

• .service: Démons et Services (init.d)

• .socket: Démons sur le démarrage de Sockets (inetd)

• .device: Pilotes de Périphériques (udev)

• .mount: Points de montage (fstab)

• .automount: Périphériques amovibles (autofs)

• .swap: Partitions et chiers de swap (fstab)

• .target: Groupe d’unités et point de synchronisation

• .path: Changement de système de chier (inotify)

• .timer: Ordonnancement de services (crond)

• .snapshot: Sauvegarde de l’état de tous les service

• .slice: Limite les ressources (cgroup)

• .scope: Regroupe des processus arbitraires (cgroup)

Pour lister toutes les unités présentes sur le système, on fera :

% systemctl list-units
fi
fi
ff

Gestion des services


Systemd
• Systemd place chaque service dans un groupe de
contrôle (cgroup)

• Isolation des processus et allocation des ressources en


fonction des groups de contrôle

• Les cibles (targets) sont des groupes d’unités:

Ex: graphical.target: toutes les unités pour démarrer un


poste de travail avec une interface utilisateur graphique

• Crée et gère les sockets pour la communication entre


les composants du système

Ex: créé d’abord /dev/log puis démarre le démon


syslog

Gestion des services


Systemd
• Format d’un chier service

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target
 
[Service]
Type=simple
 
User=deluge
Group=deluge
UMask=007
 
ExecStart=/usr/bin/deluged -d
 
Restart=on-failure
 
# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300
 
[Install]

WantedBy=multi-user.target

fi

Gestion des services


Systemd
• Description permet de donner une description du service qui apparaîtra lors de
l'utilisation de la commande systemctl status <nom_du_service>

• After permet d'indiquer quel pré-requis est nécessaire pour le fonctionnement


du service. Ici, on indique qu'il faut attendre que l'ordinateur ait accès à Internet
pour lancer le daemon. L'accès à Internet est perdu, le service n'est pas arrêté
automatiquement, pour obtenir cet e et, il faut utiliser une balise Requires= 

• Type permet de spéci er le type de service

• User, Group et Umask permet d'identi er qui est le propriétaire du processus


et donc les attributs des chiers téléchargés. Ici, les chiers téléchargés seront
accessibles en Lecture/Ecriture à l'utilisateur Deluge et aux membres du
groupe Deluge et invisibles aux autres utilisateurs du système.

• Restart permet de relancer le service automatiquement en cas de plantage.

• WantedBy permet de spéci er dans quel Target doit être actif le service. Ici, en
spéci ant multi-user.target, le service est actif dans les Runlevels 2, 3, 4 et 5.
Pour en savoir plus sur les Targets, consultez la page de systemd
fi
fi
fi
fi
ff
fi
fi

Gestion des services


Systemd
• On va construire un chier montest.service, que l'on va mettre dans le
répertoire de con guration systemd /etc/systemd/system/ :

[Unit
Description=Mon service de tes
After=tlp-init.servic
[Service
Type=onesho
RemainAfterExit=n
User=luca
Group=luca
ExecStart=/usr/local/bin/montest.s
[Install
WantedBy=multi-user.targe

• La section [Unit] contient de l'information générique sur le service.

• La section [Service] concerne l'information sur le service en lui-même.

• La section [Install] s'occupe des circonstances et des déclencheurs


dans le cadre desquels le service devrait être démarré.
]

fi
e

fi
t

Gestion des services


Systemd
• Administration des services avec systemd

• Commande : systemctl cmd unit

• start, stop, restart :

• status : fournit les infos sur l’état du système

• enable, disable : active ou désactive le service au démarrage

• Powermanagement

• systemctl reboot

• systemctl powero

• systemctl suspend

• systemctl hibernate

• systemctl hybrid-sleep

• Liste de dépendance:

Exemple : Systemctl list-dependencies graphical,target


ff

Les chiers journaux (LOG)


- Les chiers journaux sont des enregistrements qu'un ordinateur stocke
pour garder une trace des événements importants.

- Les événements du noyau, des services et des applications sont tous


enregistrés dans des chiers journaux.

- En surveillant les chiers journaux Linux, un administrateur obtient des


informations claires sur :

✓ des performances de l'ordinateur,

✓ de l'état de sa sécurité

✓ des problèmes sous-jacents.

- L'analyse des chiers journaux permet à un administrateur de se prémunir


contre des problèmes à venir avant qu'ils ne surviennent.

25
fi
fi
fi
fi
fi

Les chiers journaux (LOG)


- Sous Linux, les chiers journaux peuvent être classés de la façon
suivante :

✓ Journaux d'applications

✓ Journaux d'événements

✓ Journaux de services

✓ Journaux système

- Certains journaux contiennent des informations sur les processus


démons (daemon) qui s'exécutent dans le système Linux. Un démon
est un processus d'arrière-plan qui s'exécute automatiquement.

26
fi
fi

Les chiers journaux (LOG)


Voici quelques chiers journaux Linux courants et leurs fonctions :

- /var/log/messages : Ce répertoire contient les journaux d'activité génériques de l'ordinateur. Il


sert principalement à stocker les messages système d'information non critiques. Sur les
ordinateurs basés sur Debian, le répertoire /var/log/syslog remplit la même fonction.

- /var/log/auth.log : ce chier contient tous les événements liés à l'authenti cation sur les
ordinateurs Debian et Ubuntu. Vous trouverez tout ce qui concerne le mécanisme d'autorisation
de l'utilisateur dans ce chier.

- /var/log/boot.log : ce chier contient les informations relatives à l'amorçage et les messages


enregistrés au cours du processus de démarrage de l'ordinateur.

- /var/log/dmesg : ce répertoire contient les messages du tampon de l'anneau du noyau. Les


informations liées aux périphériques matériels et à leurs pilotes y sont enregistrées. Il est très
important parce que, du fait que ces événements sont de très bas niveau, les systèmes
d'enregistrement tels que syslog ne fonctionnent pas quand ils ont lieu et ils sont donc souvent
inaccessibles à l'administrateur en temps réel.

- /var/log/kern.log : ce chier contient les informations consignées par le noyau.

- /var/log/cron : Chaque fois qu'une tâche plani ée (également appelée un job cron) s'exécute,
toutes ses informations pertinentes, y compris son état d'exécution et ses messages d'erreur sont
stockés ici.

- /var/log/mysqld.log ou /var/log/mysql.log : il s'agit du chier journal de MySQL. Tous les


messages de débogage, d'échec et de réussite, liées au processus mysqld et au démon
(daemon) mysqld_safe sont enregistrés ici.

27
fi
fi
fi
fi
fi
fi
fi
fi
fi

Trouvez les chiers de journalisation

- Répertoire commun

➡ /var/log

- Localisation des logs paramètrable dans le chier de


con guration du service

➡ Ex : /etc/apache2/apache.conf

ErrorLog ${APACHE_LOG_DIR}/error.log

Ou ErrorLog /var/log/apache2/error.log

28
fi
fi
fi

Commandes utiles - Log


- Commandes utiles p

➡ less, more

➡ tail, head

➡ tail -f :
a chage dynamique des nouvelles lignes qui 
apparaissent dans le journal.
Pratique pour suivre l'évolution « en ligne » d'un jou
rnal Crtl + C pour quitter

➡ grep : pour recherche un motif précis dans les log

✓ Option -i permet d’ignorer la casse


29
ffi

Syslog
Notion de base de syslog :
- Syslog est un protocole dé nissant un service de journaux
d’événements d’un système informatique. C’est aussi le nom
du format qui permet ces échanges.

- Utilisation du protocole UDP, port 514. Il peut aussi fonction en TCP

- Syslog se compose d’une partie cliente et d’une partie serveur. La


partie cliente émet les informations sur le réseau. Les serveurs
collectent l’information et se chargent de créer les journaux.

- Les messages syslog comportent deux attributs (outre le message


proprement dit)


30

fi
Syslog
Format du message syslog
Un journal au format Syslog comporte dans l’ordre les informations
suivantes :

1. la date à laquelle a été émis le log,

2. le nom de l’équipement ayant généré le log (hostname),

3. une information sur le processus qui a déclenché cette émission,

4. le niveau de gravité du log,

5. un identi ant du processus ayant généré le log

6. et en n un corps de message.

31
fi
fi

Syslog
Niveau de gravité
- Chaque log dispose d'un niveau de gravité (aussi
appelé sévérité).

N Niveau Signi cation


0 Emerg Système inutilisable
1 Alert Une intervention immédiate est nécessaire
2 Crit Erreur critique pour le système
3 Err Erreur de fonctionnement
4 Warning Avertissement
5 Notice Événement normal méritant d’être signalé
6 Informational Pour information seulement
7 Debug Déboggage

32
fi

Syslog
Les services ( ou facilities)
Il existe une liste de facilities. Ce sont des types de messages qui sont classés
par catégorie.

Voici quelques catégories courantes :

- auth : Evénements de sécurité ou d'authenti cation (comme SSH par exemple)

- authpriv : Evénements relatifs aux contrôles d'accès

- cron : Evénements relatifs aux tâches plani ées

- daemon : Evénements des processus systèmes et applicatifs

- kern : Evénements concernant les messages relatifs au noyau

- mail : Evénements relatifs aux services mail

- local7 : Evénements relatifs au boot

- user : Evenements quand aucun service n'est spéci é

- none : Désigne "rien"

- * : Tous les événements quelques soient leur type

33

fi
fi
fi
Syslog
Les Destination
Chaque événement étant catégorisé et ayant une priorité peut être
stocké sur di érents supports.

Cela peut être :

- Un chier avec synchronisation des écritures : /var/log/journal.log

- Un chier sans synchronisation d'écriture : -/var/log/journal.log

- Un périphérique (La 12ème console par exemple) : -/dev/tty12

- Ignorer les messages : ~

- Sur un serveur en UDP : @server (port par défaut = 514, si port di érent


@@server:port)

- Sur un serveur en TCP : @@server (port par défaut = 514, si port


di érent @@server:port)

34
ff
fi
fi
ff

ff
Syslog
Con guration de syslog
Dans la con guration syslog (/etc/rsyslog.conf), la syntaxe est la
suivante :

service.gravité destination

Exemples de con guration:

auth,authpriv.* /var/log/ # Stocke tous les messages d’authenti cation


*.emerg auth.log
/var/log/ # Stoc k e tous le s service s de niveau emergency
*.* alerte.log
-/dev/tty12 # envoie t o us les lo gs de tou tes les criticités sur le TTY12
cron.* ~ # Ab a ndon des messages syslog de cron
*.* @192.168.21.2 # E nvoie en UDP vers un serveu r syslog
00

35
fi
fi
fi

fi
Syslog
Ecriture manuelle

Si vous avez besoin d'écrire dans les logs depuis un script, vous pouvez
le faire avec la commande logger !

Voici un exemple pour écrire un texte d'erreur :

logger -p local0.err "Ceci est un texte d erreur"

[root@srv-log ~]# tail -1 /var/log/messages


Feb 6 18:29:27 srv-log root: Ceci est un texte d erreu

36

Vous aimerez peut-être aussi