Gestion des processus
NOTION DE PROCESSUS
Processus : entité dynamique qui matérialise un
programme en cours d'exécution avec ses propres
ressources physiques (mémoire, processeur, entrée/sortie,
…) et logiques (données, variables, …). Contrairement à un
programme (texte exécutable) qui a une existence
statique.
Caractéristiques d'un processus
UID PID PPID C STIME TTY TIME COMMAND
UID nom de l'utilisateur qui a lancé le process
PID correspond au numéro du process
PPID correspond au numéro du process parent
C au facteur de priorité : plus la valeur est grande, plus
le processus est prioritaire
STIME correspond à l'heure de lancement du processus
TTY correspond au nom du terminal
TIME correspond à la durée de traitement du processus
COMMAND correspond au nom du processus.
Types de processus
2 types de processus :
– Processus système (daemons): processus sous contrôle
d’aucun terminal et qui ont comme propriétaire
l’administrateur ; assurent des tâches d’ordre général
• init : processus père des tous les processus du système
• crond : permet l’exécution d’un programme en mode
cyclique
• xinted : super démon internet
– Processus utilisateur : processus lancée par l’utilisateur
(commande utilisateur)
Mode d’exécution
Il existe cinq modes d’exécution :
• Mode interactif (foreground) ;
• Mode en arrière-plan (background) ou mode
asynchrone ;
• Mode différé ;
• Mode batch ;
• Mode cyclique.
• Mode interactif (foreground) : mode le plus
fréquent ; pendant l’exécution de la
commande l’utilisateur ne peut pas utiliser le
terminal pour lancer une autre commande ;
• Mode en arrière-plan (background) ou mode
asynchrone : permet de rendre le contrôle à
l’utilisateur ;
Lancer un processus en arrière plan
Vous disposez d'une technique simple qui permet de lancer une
commande à partir d'un shell, et de reprendre aussitôt la main. Il vous
suffit de rajouter un & à la fin de commande. Celle-ci se lancera en " tâche
de fond ", et vous reviendrez directement au prompt du shell.
Exemple : $ ps ef &
Pour visualiser l’état d’exécution d’une commande lancée en arrière plan,
on utilise la commande
$ jobs cette commande donne le [ numéro de tâche] (job), son
[PID,son état d’exécution (stopped, running, …) et le nom de la commande
Ramener un processus en arrière/avant
plan :
$ fg [N°tâche] fg (foreground) permet de reprendre
exécution de la tâche en premier plan
$ bg [N°tâche] bg (background) permet de ramener
l’exécution de la tâche en arrière plan
Mode d’exécution-suite
• Mode différé : exécution différé d’une
commande à l’aide de la commande at ;
• Mode batch : permet de placer une
commande dans une file d’attente. Le système
exécutera toujours la commande placée en
tête de fille ;
• Mode cyclique : exécution périodique à l’aide
de la commande cron.
Visualiser les processus
Lister les processus lancés par l’utilisateur en cours : $ps
Lister tous les processus lancés sur la machine :
$ps aux
$ps -ef
Lister les processus lancés par un utilisateur particulier : $ps
-u userlogin
Lister les processus qui tournent sur la machine et montrer
diverses informations : $top
Obtenir l'ID d’un processus : $pgrep process_name
Afficher le répertoire de travail actuel d’un processus :
$pwdx process_id
Afficher l'arborescence des processus : $pstree process_id
Afficher les informations fstat et fcntl : $lsof process_id
Affiche les informations sur le planificateur de processus :
$ps -c
Changer la priorité d'un processus
Vous disposez de la commande nice pour modifier la priorité d'un processus.
La syntaxe est la suivante :
$ nice –valeur_priorité commande
Plus le nombre est grand, plus la priorité est faible. Par exemple une valeur de
0 donne, la priorité la plus haute 20 donne la priorité la plus faible.
La fourchette de valeur dépend de l'UNIX qu'on utilise.
Exemple : $ nice -5 ps -ef
Arrêter un processus
Vous disposez de la commande kill pour arrêter un processus.
#kill signal pid
Exemple :Tuer un processus dont on connait le PID : $kill -9 process_id
Arrêter des processus: $killall process_name
Tuer les processus liés à un utilisateur donné : $pkill -u user_login