Atelier 3 - BENSLIMANE
Atelier 3 - BENSLIMANE
Atelier 3 - BENSLIMANE
Exemple :
Benslimane@myhost:~$ type cp ls which type
Benslimane@myhost:~$ ps -Al
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME
CMD
4 S 0 1 0 0 76 0 - 469 - ? 00:00:00
init
1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00
ksoftirqd/0
1 R 1000 4976 3574 0 76 0 - 7287 - ? 00:00:01
konsole
Le programme ps affichera tous les processus actifs, leur PID, PPID, ainsi que
d’autres informations.
M.BENSLIMANE
Options classiques de la commande ps :
Exemple :
Pour afficher tous les processus dans la session, taper :
Benslimane@myhost:~$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME
CMD
4 S 1000 5448 4981 0 77 0 - 639 wait pts/1
00:00:00 su
0 S 1000 5450 5448 0 75 0 - 795 wait pts/1
00:00:00 bash
0 R 1000 7050 5450 0 76 0 - 668 - pts/1
00:00:00 ps
Benslimane@myhost:~$ top
top - 15:13:13 up 3:53, 2 users, load average:
1.30, 0.69, 0.53 Tasks: 219 total, 3 running,
216 sleeping, 0 stopped, 0 zombie
Cpu(s): 67.8%us, 20.5%sy, 0.0%ni, 11.4%id, 0.0%wa,
0.3%si, 0.0%st
Mem: 2572660k total, 2553380k used, 19280k free,
120660k buffers
Swap: 2120540k total, 8268k used, 2112272k free,
967508k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM
TIME+ COMMAND
1189 root 20 0 312m 167m 66m R 58 6.7
21:53.07 Xorg
16792 etudiant 20 0 393m 22m 3032 S 56 0.9
0:01.72 thunderbird
12071 root 20 0 236m 49m 25m S 28 2.0
2:19.76 synaptic
16791 etudiant 20 0 393m 22m 2992 S 27 0.9
0:00.93 firefox
1680 etudiant 20 0 338m 103m 64m S 3 4.1
8:20.80 compiz
2008 etudiant 20 0 112m 19m 4340 S 2 0.8
0:37.28 beam.smp
1894 etudiant 20 0 137m 30m 5588 S 1 1.2
0:29.50 ubuntuone
3098 etudiant 20 0 935m 179m 98m S 1 7.1
2:05.15 soffice
16471 etudiant 20 0 329m 32m 16m S 1 1.3
0:01.81 terminal
M.BENSLIMANE
1 root 20 0 23828 1908 1288 S 0
0.1 0:00.74 init Avec :
• %CPU : Le pourcentage du temps processeur utilisé par le processus.
• %MEM : Le pourcentage de la mémoire physique occupée par le processus.
Dès que top est lancée, il est possible d’exécuter des commandes interactives, taper
:
Exemples :
Benslimane@myhost:~$ kill -SIGKILL[PID]
Benslimane@myhost:~$ kill -9[PID]
Benslimane@myhost:~$ kill -15 [PID]
1.5. Contrôle des tâches
Dans un processus bash, il est possible de démarrer plusieurs processus
appelés aussi jobs. Par défaut, un processus est démarré en avant-plan et il est le
seul à recevoir les données de l’entrée standard (le clavier). Il faut utiliser Ctrl+Z pour
le suspendre. Pour démarrer un processus en arrière-plan, il faut utiliser le signe &.
Exemples :
Benslimane@myhost:~$gedit document.txt &
M.BENSLIMANE
• Pour démarrer un processus en arrière-plan, il faut utiliser le caractère & :
Benslimane@myhost:~$ xeyes &
[1] 12098
Benslimane@myhost$
• Pour lister tous les jobs actifs :
Benslimane@myhost:~$ jobs [1]+ Running
xeyes &
Benslimane@myhost:~$
• Ramener un job en avant-plan :
etudiant@polytec:
~$ fg %1 xeyes
• Suspendre un job, taper Ctrl+Z, le job passe dans un état arrêté :
[1]+ Stopped xeyes
Benslimane@myhost:~$
• Continuer l'exécution d’un job tournant en arrière-plan : Benslimane@myhost:~$
jobs [1]+ Stopped xeyes
• Benslimane@myhost:~$ bg %1
[1]+ xeyes &
• Tuer un job : Benslimane@myhost:~$ kill %1
Lorsque la session bash est terminée, tous les processus démarrés depuis ce
shell reçoivent le signal SIGHUP, ce qui, par défaut, les stoppe. Dans le dernier
exemple, le fait de tuer le processus bash tuera aussi le processus xeyes. Pour éviter
qu’un processus ne s’arrête lorsque son parent se termine, le programme peut être
lancé avec la commande nohup :
2. Travail de TP
Exercice 1 : Gestion des processus-les signaux de la commande kill
1. Affichez de deux manières différentes, la liste de tous les processus qui vous
appartiennent.
2. Ouvrez une fenêtre horloge avec la commande xclock -update 2 (vous constatez
que l’horloge tourne mais que le shell est suspendu) puis suspendez-la (vous
constatez que le processus horloge ne tourne plus, mais que le shell est revenu
en avant-plan).
Regardez l’état de ce processus avec la commande jobs.
Relancez-le en arrière-plan (les aiguilles tournent à nouveau).
Et vérifiez avec la commande jobs. Puis tuez-le.
M.BENSLIMANE
3. Relancez cette horloge, mais cette fois-ci directement en arrière-plan (c’est-à-
dire de façondétachée du shell).
Comment tuer ce processus horloge depuis une autre fenêtre terminal (c’est-à-
dire depuis un autre shell, où la commande jobs ne voit pas le processus en
question ?).
Exercice 2 : priorité
1. Quelle est la différence entre les commandes ps et top?
2. Que fait la commande pstree?
3. Comment utiliser la commande ps pour obtenir la liste des processus en première
colonne et leur état en 2ème colonne? Quels sont les états possibles?
4. Comment obtenir l’ID du processus parent d’un processus donné?
5. Comment peut-on obtenir `a l’aide de ps des informations sur la priorité des
processus en cours? Ces informations sur la priorité peuvent être retrouvées aussi
avec top mais en temps réel.
6. Retrouver les champs PRI (priorité) et NI (gentillesse/courtoisie) dans le procfs.
7. Pour changer la priorité d’un processus, on dispose de la commande nice pour
modifier la priorité d’un processus `a son exécution.
8. Taper la commande : nice +5 ps -l. Que remarquez-vous au niveau de la colonne
NI?
M.BENSLIMANE