Chap 7
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é ...
2013-12-02 [Link] UBambey 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
2013-12-02 [Link] UBambey 3
premier processus
•Au démarrage le processus init est créé
•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 ….
2013-12-02 [Link] UBambey 4
Gestion des Processus
• Commande ps: temps CPU utilisé
[lewandow:~] ps
PID TT STAT TIME COMMAND
3899 p1 S 0:00.08 -zsh
numéro de 4743 p1 S 0:00.14 emacs
processus 4180 std S 0:00.04 -zsh 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
IW swappé
2013-12-02 [Link] UBambey Z tué 5
Gestion des Processus
La commande pstree donne une bonne illustration de la hiérarchie de création des
processus (père et fils).
pstree -p
init-+-ahc_dv_0
|-crond
|-cupsd
|-devfsd
|-keventd
|-khubd
|-kinoded
|-klogd
|-ksoftirqd_CPU0
|-kswapd
|-kupdated
|-lockd
|-mdrecoveryd
|-6*[mingetty]
|-10*[mysqld_safe---mysqld---mysqld---mysqld]
|-8*[nfsd]
2013-12-02 |-ntpd [Link] UBambey 6
|-portmap
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 ;
2013-12-02 [Link] UBambey 7
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
2013-12-02 [Link] UBambey 8
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
2013-12-02 [Link] UBambey 9
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é.
2013-12-02 [Link] UBambey 10
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 d'un programme
2013-12-02 [Link] UBambey 11
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.
2013-12-02 [Link] UBambey 12
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
2013-12-02 [Link] UBambey 13
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
2013-12-02 [Link] UBambey 14
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.
2013-12-02 [Link] UBambey 15
Les signaux
• Exemple : déconnecter radicalement
l'utilisateur maseck
• ps aux | grep toto
---> maseck 858 ............ –bash
• kill -9 858
2013-12-02 [Link] UBambey 16
Les signaux
• Pour mémoire, Il existe 63 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
2013-12-02 [Link] UBambey 17
Les signaux
• 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
• 30) SIGPWR 31) SIGSYS 32) SIGRTMIN 33) SIGRTMIN+1
• 34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5
• 38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9
• 42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45)
SIGRTMIN+13
• 46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49)
SIGRTMAX-14
• 50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53)
SIGRTMAX-10
• 54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6
• 58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2
• 62)SIGRTMAX-1 63) SIGRTMAX
2013-12-02 [Link] UBambey 18
Priorités
• Chaque processus a une priorité d’exécution
• Sous linux les priorité vont de –19 à 19
• Plus la valeur est grande plus la priorité est
petite
• La commande nice affecte la priorité
• Syntaxe : nice [-n Valeur] [Commande
[Arguments ...]]
• nice -n 19 .mon_processus
•
2013-12-02 [Link] UBambey 19
Gestion des Services
La commande service : manipule les services de la machine
#> service -s
[Link] (pid 1541) is running...
nfsd (pid 1529) is running...
1528 (pid 1527) is running...
1526 (pid 1525) is running...
1524 (pid 1523) is running...
1522 (pid ) is running...
lockd (pid 1126) is running...
[Link] (pid 937) is running...
ntpd (pid 1232) is running...
numlock is enabled
partmon has been startedportmap (pid 839) is running...
The random data source exists
Sound loaded
syslogd (pid 864) is running...
2013-12-02 [Link] UBambey 20