Séance 4 : Processus§

Creative Commons License Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.

1

Processus§

On appelle processus l'exécution d'un programme.

Sous Linux, chaque processus est identifié par un numéro appelé PID (Processus IDentifier).

À chaque processus est également associé :

2

ps [options] — processes§

Affiche la liste des processus en cours (par défaut : uniquement ceux de l'utilisateur et du terminal courant).

-u

Affiche tous les processus de l'utilisateur (tous terminaux confondus).

-A

Affiche tous les processus du système.

-f

Donne plus d'information sur les processus affichés.

-H

Ordonne et indente les processus selon leur généalogie (PPID).

3

top§

Affiche les processus consommant le plus de ressource CPU, en rafraichissant l'affichage régulièrement.

Pour quitter top, tapez q ou CTRL+C.

4

kill <pid> [...]§

Arrête (« tue ») le(s) processus identifié(s) par pid.

Note

On verra plus tard une utilisation plus générale de la commande kill.

5

Processus suspendus§

6

jobs§

Affiche la liste des processus suspendus ou en tâche de fond pour le shell courant.

Chaque process est identifié par un numéro de job (différent de son PID).

-l

Affiche également le PID de chaque processus.

-p

Affiche uniquement le PID des processus.

Note

Les numéros de job sont propres au shell, alors que les PIDs sont valables pour tout le SE.

7

fg [jobid] — foreground§

Relance au premier plan le job spécifié.

jobid

Le numéro de job du processus à relancer.

Par défaut : le processus exécuté le plus récemment.

8

kill %<jobid>§

Au lieu d'un PID, la commande kill accepte aussi comme argument un numéro de job, précédé du caractère pourcent %.

9

Tâches de fond§

Avertissement

Lorsqu'une tâche de fond affiche du texte, ceci peut avoir des effets inattendus.

10

Lancer directement un processus en tâche de fond§

On ajoute à la fin de la ligne de commande le caractère esperluette (&).

Exemple :

curl http://example.org/ubuntu-19-10.iso >ubuntu &

NB: le & peut également être utilisé comme un séparateur pour lancer plusieurs processus sur la même ligne de commande :

prog1 & prog2 & prog3
# lance prog1 et prog2 et tâche de fond, et prog3 au premier plan
11

bg [jobid] — background§

Relance en tâche de fond un processus suspendu.

jobid

Le numéro de job du processus à relancer.

Par défaut : le processus exécuté le plus récemment.

12

Signaux§

13

kill [options] <pid> [...]§

Envoie un signal à un ou plusieurs processus.

pid [...]

Le(s) PID(s) du/des processus à qui envoyer le signal.

-s [signal]

Le signal à envoter (par défaut SIGTERM).

14

Quelques signaux utiles§

15

Remarques§

16

Enchaînement§

On a déjà vu plusieurs moyens de lancer plusieurs processus depuis une seule ligne de commande :

# en parallèle
prog1 & prog2 & prog3

# en parallèle avec redirections via des tubes
prog1 | prog2 | prog3
17

Enchaînement séquentiel§

On peut également lancer plusieurs processus l'un à la suite des autres, en les séparant par un point-virgule (;) :

# en séquence
prog1 ; prog2 ; prog3

Indication

Le point-virgule joue exactement le même rôle que le retour à la ligne.

18

Valeur de retour d'un processus§

int main(int argc, char* argv[]) {
  /* ... */
}
19

Enchaînements conditionnels§

20

Priorité et parenthèses§

21

Travaux dirigés§

Consultez les ici

22