Le système GNU/Linux - Université de Corse

publicité
Capocchi Laurent
Doctorant en Informatique
[email protected]
http://spe.univ-corse.fr/capocchiweb
Chapitre 5: Noyau Linux et Gestion des Processus
Chapitre 5: Noyau Linux et Gestion des Processus
Objectifs
Comprendre les notions de noyau Linux et des modules.
Le système GNU/Linux
IUP NTIC2-1013 - 17/11/05
Comprendre la notion de processus et de signaux.
Apprendre à gérer le multitâche.
Éléments techniques abordés
Chapitre 5
Noyau Linux
et Gestion des Processus
Les commandes
ps, kill, nice, renice, fuser, nohup
fg, bg, jobs
Les fichiers
/etc/cron.allow, /etc/cron.deny
/var/adm/cron/cron.allow, /var/dm/cron/cron.deny
Les répertoires
/var/spool/at, /var/spool/cron
/var/spool/cron/atjobs, /var/spool/cron/crontabs
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Sommaire
Le noyau Linux
Principe.
Fonctionnement du noyau.
Utilisation des modules.
Les processus
Principe.
La hiérarchie des processus.
La communication interprocessus: les signaux.
Gestion des processus interactifs, avant et arrière plan.
Gestion des processus.
Les traitements différés.
Les démons.
Questions de révision
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Principe
Le noyau est la couche de base d'un système d'exploitation et il gère:
la mémoire,
l'accès aux périphériques (disque dur, carte son, carte réseau, etc...),
la circulation des données sur le bus,
les droits d'accès,
les multiples processus qui correspondent aux multiples tâches que
l'ordinateur doit exécuter en même temps, etc...
Le noyau ne gère pas:
le mail,
l'affichage des pages Web,
le traitement du texte.
Le noyau a l'originalité d'être multi-utilisateurs et multi-tâches et de
fonctionner sur de nombreuses plates-formes (Intel, Apple, etc...).
Il est conforme à la norme POSIX et est distribué sous Licence GPL.
Il appartient au monde du libre lui garantit une correction
rapide des erreurs qui pourraient être découvertes.
La commande permettant de connaître la version d'un noyau
est uname -a.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Principe
Principe
Le noyau Linux permet le contrôle à bas niveau du matériel ainsi que cinq
fonctions essentielles:
Le démarrage du système;
la gestion des processus: le noyau permet le contrôle de tous les
processus du système et s'assure que chacun d'entre eux dispose d'une
partie raisonnable de mémoire et de cycles processeurs;
la communication inter-processus (IPC, Inter Process Communication):
le noyau contrôle la communication entre les processus en utilisant un
système de mémoire partagée, de tubes (pipes) et de tubes nommés.
Toute cette gestion est conforme au standard POSIX.
l'interaction avec le matériel: le noyau fournit aux processus un accès
aux périphériques matériels. Il dispose d'instructions générales pour des
périphériques standards (disque dur par exemple) et permet également
l'utilisation de pilotes spécifiques.
Une distribution Linux est un ensemble cohérent de plusieurs choses:
un noyau Linux,
des programmes, en majorité libres (un navigateur Web, un lecteur de
Mail, un serveur FTP, etc...),
une méthode pour installer et désinstaller facilement ces programmes,
un programme d'installation du système d'exploitation.
Abus de langage en désignant par le terme Linux qui est en fait une
distribution Linux.
La plupart des distributions sont gratuites, car constituées exclusivement de
logiciels libres ou de programmes propriétaires gratuits.
le système de fichiers virtuel (VFS, Virtual FileSystem):
Linux dispose d'une interface spéciale du noyau appelée VFS
qui lui permet de supporter plusieurs systèmes de fichiers.
Cette interface permet de traiter les systèmes de fichiers
de manière unifiée, et apparaît donc comme un pilote de
périphérique, mais pour les systèmes de fichiers.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Chapitre 5: Noyau Linux et Gestion des Processus
Noyau Linux
Fonctionnement
Le noyau Linux est dit monolithique et uniforme.
Un noyau monolithique fonctionne comme un seul grand noyau et non
pas à l'aide de composants distincts.
Un noyau est uniforme quand chaque fonction est exécutée de la même
manière à chaque fois qu'elle est lancée.
Le noyau est cependant très modulaire et conserve toutes ses fonctions
dans la même adresse mémoire, les fonctions communiquant alors grâce à
cette adresse.
Pour garantir la stabilité du système, il place chacun des pilotes chargés
dans une "bulle" virtuelle de sorte que les erreurs ne puissent pas se
propager.
Toutes les fonctions du noyau sont localisées dans des éléments
de code modulaires qui peuvent être soit intégrés au noyau
compilé, soit compilés séparément en tant que modules.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Utilisation des modules
Qu'est-ce qu'un module ?
Techniquement, les modules sont des morceaux de noyau qui peuvent être
insérés ou enlevés sans redémarrer l'ordinateur.
En pratique, un module est un pilote d'un périphérique ou d'une
fonctionnalité.
La commande permettant de lister l'ensemble des modules chargés est lsmod.
Les commandes permettant de charger er de décharger les modules sont
repsectivement rmmod (modprobe -r) et insmod (modprobe -i).
le fichier /etc/modules permet de spécifier quels modules doivent
être chargés au démarrage.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
La hiérarchie des processus
Principe
un processus (ou tâche) est un logiciel autonome en cours d'exécution.
1
init
2910
nfsd
Le système UNIX identifie chaque processus grâce à un numéraux unique,
son PID (Process IDentification).
Chaque processus possède un propriétaire référencé par un UID.
2501
syslog
14214
popper
Utilisateur
L'ensemble des processus forment une hiérarchie de processus pères et
de processus fils.
Système
Chaque processus à un processus père référencé par un numéro PPID
(Parent Process Identification).
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
21238
92123
telnetd
bash
1352
22107
92504
inetd
telnetd
ksh
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
La communication interprocessus: les signaux
La communication interprocessus: les signaux
La communication entre les processus passe par des signaux qu'ils
s'échangent.
Un signal permet de contrôler le déroulement d'un processus.
On fait correspondre un numéro à chaque signal.
Un signal peut avoir un numéro différent selon le système
d'exploitation (SIGTSTP porte le numéro 20 sous Linux et le numéro
18 sous AIX).
La commande trap permet d'activer ou de désactiver le programme
associé au signal.
Nom du signal
SIGHUP
SIGINT
SIGKILL
SIGBUS
SIGSYS
Numéro
1
2
9
10,7
12
Interprétation
Déconnexion du terminal
Interruption depuis le clavier (CTRL+C)
Signal « KILL »
Erreur de bus
Appel système avec mauvais arguments
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
imapd
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
10323
$ trap '' 2
associe la commande « vide » au signal SIGINT (2), de
qui inhibe la combinaison de touches CTRL+C.
Certains signaux comme SIGKILL ne peuvent pas être
inhibés, ce qui assure que l'on pourra toujours tuer
un processus.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion des processus interactifs, avant et arrière-plan
Le fonctionnement normal du shell oblige l'utilisateur à attendre que
le processus lancé en avant-plan soit terminer pour pouvoir en
exécuter un autre au niveau d'une fenêtre de terminal.
Le lancement de la tâche en arrière-plan permet de ne pas bloquer
la ligne de commande.
Le nombre de processus en arrière-plan n'est pas limité alors qu'il
ne peut y avoir qu'un seul processus en avant-plan.
Le lancement d'une ligne de commandes en arrière plan utilise le
signe & à la fin de la ligne.
La commande fg (pour foreground) permet de faire passer une
tâche s'exécutant en arrière plan vers le l'avant.
La commande bg permet l'opération inverse.
Pour faire passer en arrière plan une tâche lancée
en avant-plan, il faut tout d'abord la suspendre sans
l'arrêter, avec la combinaison CTRL+Z (signal SIGTSTP)
Gestion des processus interactifs, avant et arrière-plan
exemple: recherche de tous les fichiers et répertoires orphelins.
$ find / -nouser -print > /tmp/liste.nouser
ˆZ
[1]+ Stopped
find / -nosuer -print > /tmp/liste.nouser
$ bg
[1]+ find / -nosuer -print > /tmp/liste.nouser &
jobs
[1]+ Running
&
find / -nosuer -print > /tmp/liste.nouser
fg
find / -nosuer -print > /tmp/liste.nouser
ˆC
$
Les commandes fg et bg peuvent être saisies avec,
en argument, le numéro du processus à gérer.
$ fg %2
si le numéro 2 correspond à la numérotation fourni par jobs.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion des processus
Les commandes
ps Affiche les informations sur les processus.
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Affichage des processus: la commande ps
fuser Gère les processus attaché à un répertoire.
$ ps
PID
8465
8512
nice et renice Ces deux commandes changent les priorités.
PID: numéro du processus
nohup Lance un processus qui ne sera pas « tué » à la
déconnexion.
TTY: numéro de ligne de communication associé au processus
crontab Définit la liste des tâches différées à exécuter
régulièrement.
CMD: commande associée au processus
kill Envoie un signal à un ou plusieurs processus.
at Permet d'exécuter une commande en différée.
TTY
pts/1
pts/1
TIME
CMD
00:00:00 bash
00:00:00 ps
TIME: temps d'exécution du processus
Les options de la commande ps permettent d'afficher:
-l: les informations complètes (UID, PPID....)
-a: les processus des autres utilisateurs
-e: la liste de tous les processus, sauf ceux du noyau
-u: les informations de l'utilisateur spécifié.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Gestion de processus
Envoi de signaux: la commande kill
Gestion des processus attachés aux répertoires: la commande fuser
Ce signal tue les processus.
$ kill -option -num_signal pid1 pid2 ....
Si aucun numéro de signal n'est précisé, c'est SIGTERM (15) qui
est envoyé.
Les PID des processus sont obtenues avec la commande ps.
kill -l équivaut à trap -l
$ kill -kill 0 tue tous les processus de la session actuelle et
déconnecte l'utilisateur qui la saisie.
$ kill -kill 1 tue tous les processus appartenant à
l'utilisateur qui saisit cette commande.
$ jobs
[1]- stopped
[2]+stopped
$ kill %2
[2]+ Terminated
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
sleep 5
sleep 10
Par défaut, cette commande affiche les numéros de processus
(PID) qui utilisent les fichiers ou les systèmes de fichiers indiqué
en argument.
Les options sont très différentes selon les systèmes UNIX.
Un suffixe apparaît à la suite du numéro du processus indiquant le
type d'accès du processus:
c Accès au répertoire courant
e Accès à un programme en cours d'exécution
r Accès au répertoire racine
m ou s Accès à un fichier en mémoire ou à une bilbio. partagée.
La commande fuser avec l'option -k arrête tous les processus:
# fuser -k /home/durant
/home/durant:
343420023c 11212230c 23232323c
sleep 10
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Gestion de processus
Gestion des priorités: les commandes nice et renice:
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Les processus
Chapitre 5: Noyau Linux et Gestion des Processus
Les traitements différés
La commande nohup
La commande nice lance l'exécution d'une commande avec une
priorité plus faible ou plus forte.
Lorsqu'un processus s'exécute, la déconnexion de la session lui
envoie un signal SIGHUP qui l'arrête.
Plus la valeur passé en argument est élevée, plus le processus
sera moins prioritaire.
Le commande nohup exécute la ligne de commandes passées en
argument et inhibe le signal SIGHUP.
Chaque utilisateur peut diminuer la priorité de ces processus mais
seul root peut l'augmenter.
Si l'exécution affiche des informations à l'écran, celles-ci sont
sauvegardées dans le fichier nohup.out.
$ nice -incrément commande
$ nohup find / -print 2 > /dev/null
&
[1] 234
$ ps -f | grep find
martin
234
....
pts/1 find / -print
commande est la ligne de commande à exécuter
incrément est l'ajustement de la priorité (défaut 10).
La commande ps -l permet de faire apparaître la valeur
de priorité dans une colonne notée NI.
La commande renice change la valeur de priorité d'un
processus actif.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
$exit
connexion closed by foreign host
Après déconnexion l'utilisateur martin se connecte
à nouveau. Le processus lancé avec nohup est toujours
actif, il n'est rattaché à aucun terminal (colonne TTY ?),
et le processus père et init.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Les traitements différés
Les traitements différés
La commande at
La commande crontab
La commande at planifie l'exécution d'une commande en différé.
Planifie les tâches répétitives de l'utilisateur qui la saisie.
L'accès à cette commande est contrôlé par deux fichiers:
/var/adm/cron/at.allow (AIX) ou /etc/ar.allow (Linux): contient la
liste des noms d'utilisateurs autorisés à se servir de la
commande. Si ce fichier n''existe pas, seul l'utilisateur root peut
l'utiliser.
Utilisé par le root pour lancer automatiquement:
/var/adm/cron/at.deny (AIX) ou /etc/at.deny (Linux): contient la
liste de noms de utilisateurs qui ne sont pas autorisé à se servir
de la commande at.
Le format de la date peut être AAMMJJhhmm (AIX) ou
hh: mm JJ/MM/AA.
la date du 10 mars 2004 à 22h sous AIX
$ at -t 0403102200
find /tmp
-nouser -print 2 > /dev/null
ˆD
le nettoyage de fichiers de /tmp toutes la nuits,
la recherche des fichiers ou des répertoire « orphelins » une foi
par semaine ou par moi,
le redémarrage du serveur tous les soirs....
Deux fichier de configuration: cron.allow et cron.deny
Deux options principales:
-l: Affiche le fichier de planification de l'utilisateur
-e: Sous Linux, édite le fichier de planification
en mode pleine page.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Les processus
Les démons
Ce sont des processus particuliers qui sont toujours actifs.
Leur non possède souvent le suffixe « d » (pour daemon).
Le rôle d'un démon est de gérer les services proposés par le
serveur, qu'il s'agisse de démons système, comme la planification
des tâches (cron), ou réseau, comme telnetd.
L'activation des démons peut se faire:
au démarrage de la machine (fichier /etc/inittab),
à la demande.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Résumé
Chapitre 5: Noyau Linux et Gestion des Processus
Le noyau Linux est:
Multi-utilisateurs et multi-tâches.
Conforme à la norme POSIX et est distribué sous Licence GPL.
Il permet:
Le démarrage du système et la gestion des processus.
La communication inter-processus et l'interaction avec le matériel.
La gestion de plusieurs FS (VFS).
Les processus correspondent aux logiciels actifs.
Chaque processus (avec un numéro unique PID) est autonome, possède un
processus père (avec un numéro PPID).
L'activité du serveur est représenté par une hiérarchie de processus pères et de
processus fils dont le premier est init.
Lorsque le démons est lancé à la demande il est pris en charge par
le « superdémon », inetd.
Les signaux permettent la communication entre processus et sont des
événements non prévu dans le traitement normal du logiciel.
Les démons sont des processus que l'on peut administrer
comme les autres avec la commande kill.
Les démons sont des processus actif en permanence et rendent
des service intern (planification de tâches) ou externes (services réseaux).
Les démons sont lancés soit au démarrage
(fichiers /etc/inittab, /etc/rc, ...) soit à la demande quand il sont
pris en charge par le « superdémon » inetd.
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Chapitre 5: Noyau Linux et Gestion des Processus
Questions de révision
1.Quelle est la commande qui permet de connaître la version d'un noyau?
Chapitre 5: Noyau Linux et Gestion des Processus
Bibliographie et Webographie
2.Qu'est ce que le PID et le PPID d'un processus ?
3.Quel est le rôle des signaux ?
UNIX & LINUX, Jean-Michel Léry, Pearson Education.
4.Quel est le nom du signal qui arrête un processus interactif ?
5.Comment faire pour exécuter une commande en arrière-plan ?
6.Quelle est la différence entre la commande ps -f et la commande ps -ef ?
7.Quelle commande permet de tuer un processus particulier, et quelle
commande permet de tuer les processus attachés à un répertoire ?
8.Une valeur positive pour la commande de nice augmente-t-elle
la priorité du processus ?
9.Quelle est la différence entre la commande nohup et at ?
10.Quelle est la commande qui permet de planifier des
traitements différés ? Quel est le nom du démon qui gère
le déclenchement de ces traitements ?
11.Comment se nomment les deux fichiers qui donnent accès
à la commande at ?
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05
Téléchargement