Licence 2 D2A UADB
Support de cours
Les processus
Définition de processus
• Un processus est une instance de programme
s'exécutant à un instant donné ainsi que son
contexte (ou environnement).
• Son environnement désigne l'ensemble des
ressources utilisées par le programme pour
pouvoir se dérouler comme par exemple la
mémoire, les fichiers ouverts, l'état d'avancement
du programme, les droits associés, la priorité ...
20-11-04 2
Caractéristiques des processus
• Les processus sont identifiés:
- par un numéro unique dans le système à un
moment donné : le PID. C'est à l'aide de ce
nombre que l'on peut désigner une instance de
programme et interagir avec.
- Par un propriétaire. Il s'agit de l'utilisateur qui a
demandé l'exécution. En général, seul ce
propriétaire pourra entreprendre des actions sur le
processus
20-11-04 3
Processus init
• Au démarrage le processus init est créé
Systemd (2010): une alternative logicielle a init
• init crée tous les autres processus qui sont ses fils
• La commande ps nous permet de voir les processus créés
init
syslogd crond ….
20-11-04 4
Gestion des Processus
• Commande ps: temps CPU utilisé
sam@sam-HP-650-Notebook-PC:~$ ps T
PID TTY STAT TIME COMMAND
2932 pts/0 Ss 0:00 bash
numéro de
processus 9591 pts/0 R 0:00 ps T commande
exécutée
état du
processus: R actif
T bloqué
terminal
P en attente de page
associé
D en attente de disque
S endormi
Z zombi
20-11-04 . 5
Processus
• Pour chaque processus exécuté, le système
d’exploitation stocke un certain nombre
d’informations :
- Numéro unique du processus PID (Process
IDentification) ;
- Numéro du processus parent PPID (Parent
Process Identification) ;
- Numéro d’utilisateur UID (User IDentification)
ayant lancé le processus ;
20-11-04 6
Processus
• Numéro du groupe GID (Group IDentification)
ayant lancé le processus ;
• Durée de traitement utilisé (temps CPU) et priorité
du processus ;
• Référence au répertoire de travail courant du
processus ;
• Table de référence des fichiers ouverts par le
processus
20-11-04 7
Commandes usuelles
• Pour lister les processus actifs lancés dans la console
courante.
ps .
• pour voir tous les processus exécuté par l'utilisateur :
ps -ux
• pour voir les processus exécuté par l'utilisateur dans le
terminal courant :
ps T
• pour voir tous les processus du système
ps aux
20-11-04 8
Qques colonnes du tableau obtenu avec
ps aux.
– "USER" : à quel utilisateur appartient le processus.
– "PID" : le numéro qui identifie le processus
– "%CPU" : en % les ressources du microprocesseur
utilisées par le processus.
– "%MEM" : en % les ressources en mémoire vive
utilisées par le processus.
– "RSS" : mémoire réellement utilisée en ko par le
processus.
– "START" : l'heure à laquelle le processus a été lancé.
20-11-04 9
Commandes usuelles
• ps aux | less : pour contrôler le défilement
• ps aux | grep apache : pour n'afficher que les lignes
concernant le processus cherché.
• ps faux : pour lister tous les processus en les regroupant
par enchaînement d'exécution
• pstree | less permet de visualiser la filiation des processus
sous forme arborescente.
• pidof apache, pour connaitre la liste des PID des
processus du programme apache.
20-11-04 10
Commandes usuelles
• La commande top vous permet d'afficher des informations
en continu sur l’activité du système. Elle permet surtout de
suivre les ressources que les processus utilisent (quantité
de RAM, pourcentage de CPU, la durée de ce processus
depuis son démarrage).
top -d
• l'option -d pour spécifier des délais de rafraîchissement (en
secondes).
• En cours d'utilisation de top, il est possible de gérer les
processus (changer les priorités des processus, leur
envoyer un signal ..) de manière interactive.
20-11-04 11
Modifier l’état d’un processus
• On peut gérer les processus en leur envoyant des signaux
par l'intermédiaire des commandes kill et killall, suivant
que l'on connaisse le numéro PID du processus, ou bien
son nom
• Exemple :
Pour arrêter ou envoyer un signal à un processus, il faut
utiliser la commande kill.
Syntaxe : kill [-Numéro-du-signal] PID
Ex : kill –9 2345
20-11-04 12
Les signaux
•Chaque processus peut recevoir des signaux
•Chaque signal a une signification particulière
Nom du signal Numéro Description
SIGINT 2 touche Ctrl-C, termine le processus
SIGKILL 9 arrêter tout programme car il ne peut être géré
différemment que le comportement par défaut.
L'arrêt du programme est brutal.
SIGTERM 15 Arrête le processus, mais permet d’effectuer
des opérations avant l’arrêt.
SIGCHLD 17 Informe le père de la mort de son fils
20-11-04 13
Les signaux
• kill -15 PID : demande normale d'arret au processus, il
peut refuser (-15 peut etre remplacé par SIGTERM)
• killall -9 httpd : suppression plus radicale, en cas de
processus récalcitrant ! (Le signal -9 par exemple s'appelle
SIGKILL
• kill $(pidof ypserv) : supprime le processus serveur NIS,
dont le pid est obtenu le résultat de la commande pidof
images/
• killall -HUP httpd : ordonne au processus de relire son
fichier de configuration, ce qui évite de le relancer.
• kill -l : pour connaitre la liste des signaux qu'on peut
passer à kill.
20-11-04 14
Les signaux
• Exemple : déconnecter radicalement
l'utilisateur maseck
• ps aux | grep maseck
---> maseck 858 ............ –bash
• kill -9 858
20-11-04 15
Les signaux
• Pour mémoire, Il existe 64 signaux différents :
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ ………………………….
20-11-04 16
Priorités
• Chaque processus a une priorité d’exécution
• Sous linux les priorité vont de –20 à 19
• Plus la valeur est grande plus la priorité est petite
• La commande nice affecte la priorité
• Syntaxe : nice [-n Valeur] [Commande
[Arguments ...]]
• Exemple : nice -10 tar xvzf [Link]
• La commande renice pour changer la priorité
20-11-04 17