Gestion Des Processus Et Des Taches Systèmes
Gestion Des Processus Et Des Taches Systèmes
Gestion Des Processus Et Des Taches Systèmes
- Un numéro de processus unique PID (Process ID) : chaque processus Unix est
numéroté afin de pouvoir être différencié des autres. Le premier processus lancé par
le système est 1 et il s'agit d'un processus appelé généralement init. On utilise le PID
quand on travaille avec un processus. Lancer 10 fois le même programme (même
nom) donne 10 PID différents.
- Un numéro de processus parent PPID (Parent Process ID) : chaque processus peut
lui-même lancer d'autres processus, des processus enfants (child process). Chaque
enfant reçoit parmi les informations le PID du processus père qui l'a lancé. Tous les
processus ont un PPID sauf le processus 0 qui est un pseudo-processus représentant
le démarrage du système (créé le 1init).
- Fichiers ouverts : table des descripteurs des fichiers ouverts. Par défaut au début
seuls trois sont présents : 0 1 et 2 (les canaux standards). A chaque ouverture de
fichier ou de nouveau canal, la table se remplit. A la fermeture du processus, les
descripteurs sont fermés (en principe).
Durant sa vie (temps entre le lancement et la sortie) un processus peut passer par divers
états ou process state :
Pour retrouver quels sont les processus exécutés par le système, il suffit d’exécuter la
commande ps (process status).
Lancée seule, elle n'affiche que les processus en cours lancés depuis l'utilisateur et la console
actuels.
ps -ux
Pour voir les processus exécutés par l’utilisateur dans le terminal courant :
ps T
ps aux
Lorsqu’un processus tourne en tâche de fond il ne peut pas être arrêté par une quelconque
combinaison de touches. Pour cela il faut employer la commande kill. Contrairement à ce
que son nom semble indiquer, le rôle de cette commande n'est pas forcément de détruire
ou de terminer un processus (récalcitrant ou non), mais d'envoyer des signaux aux
processus.
Le signal est l’un des moyens de communication entre les processus. Lorsqu’on envoie un
signal à un processus, celui-doit doit l'intercepter et réagir en fonction de celui-ci. Certains
signaux peuvent être ignorés, d'autres non. Suivant les Unix on dispose d'un nombre plus ou
moins important de signaux.
Les signaux sont numérotés et nommés, mais attention si les noms sont généralement
communs d'un Unix à l'autre, les numéros ne le sont pas forcément.
1 (SIGHUP) : le signal de numéro 1, SIGHUP (en anglais hang up), est envoyé par le
processus « parent » à tous ses « enfants » lorsqu’il termine son activité. La plupart
des démons redéfinissent ce signal en le transformant en « relire les fichiers de
configuration » ;
2 (SIGINT) : signal d’interruption d’un processus. Il est équivalent à celui envoyé par
la combinaison de touches <Ctrl> et <C> ;
9 (SIGKILL) : termine le processus via un appel noyau, donc sans sauvegarde ;
15 (SIGTERM) : signal par défaut de la commande kill. Il exécute le code de
terminaison (s’il y arrive) et vide la mémoire. C'est donc le signal de fin d’un
processus le plus propre.
Si l’on ne connaît pas le PID du processus auquel on veut envoyer un signal, on peut le
désigner par son nom en utilisant la commande killall.
Vous pouvez récupérer la main sous le shell si vous avez lancé un processus au premier plan.
Vous pouvez le stopper temporairement en tapant [Ctrl] Z :
Le processus est stoppé : son exécution est suspendue jusqu’à ce que vous le replaciez au
premier plan avec la commande fg (foreground) :
$ fg Sleep 100
Quand vous lancez une commande, vous avez remarqué le premier nombre entre crochets,
c’est le numéro de job. Vous pouvez en obtenir la liste avec la commande jobs.
Les commandes bg et fg permettent d’agir sur ces jobs en prenant comme paramètre leur
numéro. La commande bg est exécutée sur un job stoppé pour le relancer en arrière-plan. Le
job 2 est relancé en arrière-plan :
$ bg 2
La commande nice permet de lancer une commande avec une priorité pus faible, afin de
permettre éventuellement à d'autres processus de tourner plus rapidement.
Une valeur positive causera une baisse de priorité, une négative l'augmentation de la
priorité (si autorisé).
La commande renice fonctionne un peu comme nice sauf qu'elle permet de modifier la
priorité en fonction d'un utilisateur, d'un groupe ou d'un PID. La commande doit donc déjà
tourner.
La priorité doit être comprise entre -20 et 20. L'utilisateur standard ne peut utiliser que les
valeurs entre 0 et 20 permettant de baisser la priorité.
L'option -p précise un PID, -g un GID et -u un UID.
La commande crontab
La commande at