Préparation LPI - Exam 101

Linux Process Management and Command Control · exam

Voir tous les documents en systèmes d'exploitation et cloud

Préparation LPI

Exam 101

103.5 Gestion des processus

1

103.5 – Domaines de connaissances

Poids : 4

Exécuter des travaux en avant et arrière plan

Signifier à un programme de continuer après une déconnexion

Superviser les processus actifs

Sélectionner et trier les processus à l'affichage

Envoyer des signaux aux processus

UPMC – FP – Préparation LPI - v1.1

2

103.5 – Contrôle des commandes

Avant plan (foreground)

Lorsque qu'un commande est lancée, le shell ne rend pas la main et attend qu'elle se termine

Pour interrompre la commande en cours avant sa fin normale :  « Ctrl­C »

Arrière plan (background)

Pour lancer une commande te récupérer la main imméditament, il faut la lancer en tâche de fond (background) en terminant la ligne de commande avec le caractère « & » « $ commande & »

UPMC – FP – Préparation LPI - v1.1

3

103.5 – Contrôle des commandes

Passage d'avant en arrière plan

Pour passe en background une commande lancée en avant­ plan

1 – figer la commande en cours avec « Ctrl­Z »

2 – demander à la commande de passer en arrière­plan avec la commande « bg »

Attention  : à l'utilisation de « Ctrl­Z ». Les commandes ne sont pas tuées mais uniquement figées et donc continuent à occuper des ressources mémoire

[aoi@test]$ find / ­name Hostidfile.txt ­print find: /lost+found: Permission non accordée

[1]+  Stopped                 find / ­name Hostidfile.txt ­print [aoi@test]$ bg [1]+ find / ­name Hostidfile.txt ­print &

UPMC – FP – Préparation LPI - v1.1

4

103.5 – Contrôle des commandes

Passage d'arrière en avant plan

Pour passer en foreground une commande lancée en arrière­ plan

1 – demander à la commande de passer en avant­plan avec la commande « fg »

[aoi@test]$ find / ­name Hostidfile.txt ­print find: /lost+found: Permission non accordée

[1]+  Stopped                 find / ­name Hostidfile.txt ­print [aoi@test]$ bg [1]+ find / ­name Hostidfile.txt ­print & [aoi@test]$ fg find / ­name Hostidfile.txt ­print find: /boot/lost+found: Permission non accordée find: /etc/skel/tmp: Permission non accordée ....

UPMC – FP – Préparation LPI - v1.1

5

103.5 – Contrôle des commandes

UPMC – FP – Préparation LPI - v1.1

6

103.5 – Contrôle des commandes

Liste des processus en arrière­plan

Pour connaître la liste : « jobs »

Les jobs sont numérotés (il peut y avoir plusieurs commandes lancées simultanément en arrière­plan). Ce numéro peut être repris dans les commandes « fg », « bg » et « kill »

UPMC – FP – Préparation LPI - v1.1

7

103.5 – Contrôle des commandes

Options de la commande jobs

­l : ajoute le PID

­p : affiche uniquement le pid

­r  : affiche uniquement les processus en cours d'exécution

­s : affiche uniquement les processus arrêtés

UPMC – FP – Préparation LPI - v1.1

8

103.5 – Contrôle des commandes

Tuer un processus en arrière­plan

commande : « kill %num­job »

[aoi@test]$ find / ­name Hostidfile.txt ­print find: /lost+found: Permission non accordée

[1]+  Stopped                 find / ­name Hostidfile.txt ­print [aoi@test]$ jobs [1]+  Stopped                 find / ­name Hostidfile.txt ­print [aoi@test]$ kill %1 [aoi@test]$ jobs [1]+  Complété              find / ­name Hostidfile.txt ­print

UPMC – FP – Préparation LPI - v1.1

9

103.5 – Contrôle des commandes

Les commandes « fg », « bg » et « kill » ne fonctionnent que sur les processus lancés par le shell courant.

Pour intervenir sur tous les processus il faut utiliser une commande plus générale des gestion de processus (voir plus loin)   : « ps »

Publicité

UPMC – FP – Préparation LPI - v1.1

10

103.5 – nohup

Commande  nohup : permet de continuer l'exécution d'une commande après une déconnexion en la rendant insensible aux signaux nohup COMMAND [ARG]...

Si stdin est un terminal, redirection implicite par /dev/null Equivalent à nohup COMMAND < /dev/null

Si stdout est un terminal, redirection implicite vers nohup.out. Stderr est redirigée vers stdout. Sinon faire une redirection explicite : nohup COMMAND > monfic.log

Attention : il faut explicitement mettre la commande en background si nécessaire

UPMC – FP – Préparation LPI - v1.1

11

103.5 – nohup

A compléter mettre un ex de commande nohup sur mkfs long par exemple

UPMC – FP – Préparation LPI - v1.1

12

103.5 – ps

Commandes  ps : affiche l'état des processus en cours. Affichage de l'état au moment de l'exécution de la commande. Pour un affichage en continu, utiliser la commande top.

ps récupère les informations affichées depuis le système de fichier /proc

Liste des informations présentées

UID : uid propriétaire

PID : identifiant du processus

PPID : pid du processus parent

NI : valeur de nice (gentillesse)

SZ : (size) empreinte mémoire du processus (code + données + pile)

UPMC – FP – Préparation LPI - v1.1

13

103.5 – ps

Liste des informations présentées ...

STAT : état du processus

● R (runnable) : prêt à être exécuté

● S (sleeping) : endormi

● D : sommeil ininterruptible

●  T (traced) : tracé ou suivi

● Z  : processus zombie

TTY : terminal associé

CMD : commande liée au processus

UPMC – FP – Préparation LPI - v1.1

14

103.5 – ps

Liste des options Attention : infos différentes entre page de manuel et la réalité des options. Faire un  ps ­? Comportement des options différent selon que l'on emploie le tiret ou non

­A : tous les processus avec affichage simple (PI, TTY, TIME, CMD)

­a : tous les processus avec un terminal associé

a : tous les processus avec un terminal associé pour tous les utilisateurs

r : affiche seulement les processus en cours d'exécution

UPMC – FP – Préparation LPI - v1.1

15

103.5 – ps

Liste des options (format de sortie)...

­l : format long

­f : format full

­F : format extra full

u : affiche l'utilisateur propriétaire et l'heure de lancement

e : affiche l'environnement d'exécution

­w ou w, ­ww ou ww : affichage sur plusieurs lignes

f (forest) : affiche l'arbre généalogique des processus

­n : infos numériques (UID)

UPMC – FP – Préparation LPI - v1.1

16

Liste des options (tri)...

103.5 – ps

O[+|­]k1[,[+|­]k2[,...]] : Permet de trier les résultat en fonction de clés de tri (k1, k2, ...) + et – permettent de définir un ordre alphabétique ou un ordre inverse # ps ­ef O1,­2

­­sortX[+|­]key[,[+|­]key[,...]] : même fonction que l'option O mais key représente cette fois­ci le nom de la colonne (ppid par exemple)

Les clés de tri sont listées dans le man :

● p : pid

● P : ppid

● u : nom d'utilisateur

● U : UID UPMC – FP – Préparation LPI - v1.1

17

Publicité

103.5 – ps

Attention ! Ces deux commandes ne donnent pas le même résultat

$ ps ­ef t UID        PID  PPID  C STIME TTY      STAT   TIME CMD root         1     0  0 21:40 ?        Ss     0:01 /sbin/init root         2     0  0 21:40 ?        S<     0:00 [kthreadd] root         3     2  0 21:40 ?        S<     0:00 [migration/0] root         4     2  0 21:40 ?        S<     0:00 [ksoftirqd/0]

$ ps ­e ft   PID TTY      STAT   TIME COMMAND     2 ?        S<     0:00 [kthreadd]     3 ?        S<     0:00  \_ [migration/0]     4 ?        S<     0:00  \_ [ksoftirqd/0]     5 ?        S<     0:00  \_ [watchdog/0]     6 ?        S<     0:00  \_ [events/0]

UPMC – FP – Préparation LPI - v1.1

18

103.5 – Contrôle des commandes

$ ps  O+p   PID TTY      STAT   TIME COMMAND  3182 pts/0    Ss     0:00 bash  3234 pts/1    Ss+    0:00 bash  3270 pts/0    S+     0:00 man ps  3273 pts/0    S+     0:00 sh ­c (cd "/usr/share/man/fr" && (echo ".pl 1100i"; /  3274 pts/0    S+     0:00 sh ­c (cd "/usr/share/man/fr" && (echo ".pl 1100i"; /  3281 pts/0    S+     0:00 /usr/bin/less ­is  3407 pts/2    Rs     0:00 bash  3549 pts/2    R+     0:00 ps O+p $ ps  O­p   PID TTY      STAT   TIME COMMAND  3553 pts/2    R+     0:00 ps O­p  3407 pts/2    Ss     0:00 bash  3281 pts/0    S+     0:00 /usr/bin/less ­is  3274 pts/0    S+     0:00 sh ­c (cd "/usr/share/man/fr" && (echo ".pl 1100i"; /  3273 pts/0    S+     0:00 sh ­c (cd "/usr/share/man/fr" && (echo ".pl 1100i"; /  3270 pts/0    S+     0:00 man ps  3234 pts/1    Ss+    0:00 bash  3182 pts/0    Ss     0:00 bash

UPMC – FP – Préparation LPI - v1.1

19

103.5 – pstree

Commande  pstree : affiche les processus sous une forma arborescente. pstree [­a] [­c] [­h|­Hpid] [­l] [­n] [­p] [­u] [­Z] [­A|­G|­U] [pid|utilisateur] Si le pid est omis, la racine de l'arbre est le processus init (pid=1) Si l'utilisateur est précisé, seuls les processus de cet utilisateurs seront affichés

Options :

­l : afficher les lignes longues

­n : tri numérique des processus ayant le même ancêtre plutôt que par leur nom

­p : ajoute le PID à l'affichage

­u  : affiche les transition d'UID si l'UID du père est différent de celui du fils UPMC – FP – Préparation LPI - v1.1

20

103.5 – Contrôle des commandes

$ pstree ─┬─ init │

NetworkManager

─┬─ dhclient └─{NetworkManager}

│ │

─┬─

├─acpid      ├─atd      ├─auditd │ └─{auditd}      ├─avahi­daemon      ├─bluetoothd      ├─bonobo­activati .......

─┬─ audispd └─{audispd}

sedispatch

───

avahi­daemon

───

{bonobo­activati}

$ echo $$ 3234 $ pstree 3234 ─── bash

pstree

UPMC – FP – Préparation LPI - v1.1

21

103.5 – top

Commande  top : affiche en temps réel les processus en cours d'exécution ainsi qu'un résumé des ressources système top ­hv | ­bcHisS ­d delay ­n iterations ­p pid [, pid ...]

Beaucoup d'options qui modifient les infos affichées, les délais de rafraîchissement,....

Champs affichés

PID : identifiant du processus

PPID : PID du processus parent

USER : nom du propriétaire du processus

PR : priorité de la tâche

NI : valeur de gentillesse

UPMC – FP – Préparation LPI - v1.1

22

Champs affichés ...

103.5 – top

VIRT : empreinte mémoire de la tâche (RES + SWAP)

RES : empreinte mémoire de la tâche

%CPU et %MEM : respectivement les pourcentage d'utilisation cpu et mémoire utilisés

TIME etTIME+ : temps d'exécution de la tâche

COMMAND : nom de la tâche

UPMC – FP – Préparation LPI - v1.1

23

Mode interactif

103.5 – top

<Entrée> ou <Espace> : rafraîchissement de l'affichage

<?> ou <h> : aideu

u : saisie d'un nom d'utilisateur ou UID tâche posédées par cet utilisateur

→

affichage des

k : saisie d'un PID

→

envoi du signal SIGTERM

q : quitter top

Publicité

r : renice d'une tâche

UPMC – FP – Préparation LPI - v1.1

24

103.5 – top

top ­ 22:55:09 up 54 min,  2 users,  load average: 0.00, 0.00, 0.00 Tasks: 188 total,   2 running, 140 sleeping,   0 stopped,  46 zombie Cpu(s):  1.6%us,  2.0%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st Mem:   1277124k total,   722968k used,   554156k free,    33248k buffers Swap:  2441840k total,        0k used,  2441840k free,   358628k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   950 root      20   0 36264  12m 6784 S  1.7  1.0   0:48.01 Xorg   756 haldaemo  20   0  6120 3972 3304 S  0.7  0.3   0:01.32 hald  1756 franck    20   0 17964 5312 3936 S  0.3  0.4   0:00.25 gnome­screensav  1880 franck    20   0  246m 110m  63m S  0.3  8.8   0:57.22 soffice.bin  1988 franck    20   0 38180  12m 9636 S  0.3  1.0   0:01.92 gnome­terminal  2009 franck    20   0  2472 1208  884 R  0.3  0.1   0:18.30 top     1 root      20   0  2532 1528 1128 S  0.0  0.1   0:01.26 init     2 root      15  ­5     0    0    0 S  0.0  0.0   0:00.00 kthreadd     3 root      RT  ­5     0    0    0 S  0.0  0.0   0:00.00 migration/0     4 root      15  ­5     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0     5 root      RT  ­5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0     6 root      15  ­5     0    0    0 S  0.0  0.0   0:00.05 events/0

UPMC – FP – Préparation LPI - v1.1

25

103.5 – uptime

Commande  uptime : affiche la durée de fonctionnement d'un serveur depuis son dernier redémarrage uptime

Affiche la durée de fonctionnement, le nombre d'utilisateurs connectés, la charge du système des premières, 5 et 15 dernières minutes

$ uptime  23:21:48 up  1:21,  2 users,  load average: 0.00, 0.00, 0.00

UPMC – FP – Préparation LPI - v1.1

26

103.5 – free

Commande  free : affiche la mémoire utilisée et disponible free [­b | ­k | ­m | ­g] [­o] [­s delay ] [­t] [­V]

Options

­b, ­k, ­m, ­g : affichage en octet, kilo, mega, gigaoctets

­s sec : rafraîchissement de l'affichage toutes les « sec » secondes

$ free              total       used       free     shared    buffers     cached Mem:       1277124     733560     543564          0      34740     364456 ­/+ buffers/cache:     334364     942760 Swap:      2441840          0    2441840

UPMC – FP – Préparation LPI - v1.1

27

103.5 – kill

Commande  kill : envoi d'un signal à un processus (SIGTERM par défaut)

kill [ ­signal | ­s signal ] pid … kill [ ­L | ­V, ­­version kill ­l  [ signal ]

Options

­l  : liste des signaux disponibles et traduit les noms de signaux en valeur numérique et inversement

$ kill ­l 9 KILL

$ kill ­l TERM 15

UPMC – FP – Préparation LPI - v1.1

28

103.5 – kill

Avec un numéro de PID précédé d'un moins : envoi d'un signal à un groupe de processus  (voir colonne PGID de la commande ps)

Si PID = ­1 : signifie tous les processus sauf init et kill lui­même

UPMC – FP – Préparation LPI - v1.1

29

Correspondance des signaux

103.5 – kill

SIGHUP <=> HUP <=> 1 : le plus souvent, relecture des fichiers de configuration

SIGINT <=> INT <=> 2 : Interrupt – Emis par Ctrl + C

SIGQUIT <=> QUIT <=> 3 : Quit – Emis par Ctrl + D

SIGKILL <=> KILL <=> 9 : le processus quitte sans faire les procédures de « nettoyage »

SIGTERM <=> TERM <=> 15 : le processus quitte après avoir fait les opérations de nettoyage

UPMC – FP – Préparation LPI - v1.1

30

103.5 – killall

Commande  killall : envoi d'un signal à un ensemble de processus (SIGTERM par défaut) sur la base de leur noms

killall [­Z,­­context pattern] [­e,­­exact] [­ g,­­process­group][­i,­­interactive] [­q,­­ quiet] [­r,­­regexp] [­s,­­signal signal][­u,­­ user user] [­v,­­verbose] [­w,­­wait] [­I,­­ ignore­case][­V,­­version] [­­] name … killall ­l killall ­V,­­version

UPMC – FP – Préparation LPI - v1.1

31

Options ...

103.5 – killall

­i  : demande confirmation avant chaque envoi de signal

­r : sélection de processus sur la base d'expressions régulières

­s : spécification du signal au lieu de SIGTERM par défaut le nom du signal doit être composé de SIG + nom du signal Exemple : killall ­s SIGKILL httpd

­u : sélection des processus détenus par un utilisateur particulier

UPMC – FP – Préparation LPI - v1.1

32

Quelques conseils LPI...

Commande top : comment interagir pour envoyer un signal à un

processus sans quitter top

Connaître les correspondances des 3 formes des signaux les plus

courantes (9; KILL, SIGKILL)

UPMC – FP – Préparation LPI - v1.1

33