TP Les processus sous linux

top, htop et btop nice bg fg kill pkill xkill killall

đź•’ : 3 h maximum

Prérequis:

  • Cours dĂ©couverte de Linux au lycĂ©e
  • Le terminal , la ligne de commande.
  • installation du paquet : sudo apt update && sudo apt install mesa-utils pour glxgears
  • la commande ps
  • les signaux et clavier
  • processus

But:

  • gestion des fichiers sous linux
  • utilisation de vi
  • installation d’un paquet ici mesa-utils
  • la commande whereis
  • la commande file

Répertoire du travail:

~/Works/PS


1 – DĂ©couverte de mesa-utils

mettre à jour votre machine avant de commencer ce TP , cette opération peut prendre du temps, profitez en pour commencer la rédaction de votre TP

sudo apt update && sudo apt upgrade -y

Dans un terminal (bash shell), dans le répertoire Works et PS nous allons travailler

etudiant@ordi:~/Works/PS$ glxgears
La commande « glxgears Â» n'a pas Ă©tĂ© trouvĂ©e, mais peut ĂŞtre installĂ©e avec :
sudo apt install mesa-utils
etudiant@ordi:~/Works/PS$ 

le le message est clair non ?

En fait le programme glxgears n’est pas encore installĂ© sur votre machine

1-1 Installation des outils mesa-utils

etudiant@ordi:~/Works/PS$ sudo apt update && sudo apt install mesa-utils

ici on installe le paquet mesa-utils

sudo pour avoir temporairement les droits de root , apt update , pour la mise à jour des bases de données des paquets ubuntu, puis && , ce qui veut dire si la première opération se passe bien on fait la suite, ici avec les droits root , apt install mesa-utils

on peut vérifier ! que ça fonctionne :

etudiant@ordi:~/Works/PS$glxgears 

On tape la commande glxgears

Et la fenĂŞtre graphique va s’ouvrir avec une animation d’engrenage .

1-2 glxgears et whereis (ou est)

glxgears est un code exécutable de programme

etudiant@ordi:~/Works/PS$ whereis glxgears
glxgears: /usr/bin/glxgears /usr/share/man/man1/glxgears.1.gz

whereis nous dit que le code du programme est dans /usr/bin/glxgears et l’autre est le manuel

etudiant@ordi:~/Works/PS$ ls -l /usr/bin/glxgears
lrwxrwxrwx 1 root root 25 avril 14  2022 /usr/bin/glxgears -> glxgears.x86_64-linux-gnu
etudiant@ordi:~/Works/PS$ 

glxgears est un lien symbolique qui pointe sur glxgears.x86_64-linux-gnu

1-3 file , la fonction qui vous dit ce qu’est le fichier !

bruno@bruno-Latitude-E7450:~/Works/PS$ file /usr/bin/glxgears
/usr/bin/glxgears: symbolic link to glxgears.x86_64-linux-gnu
bruno@bruno-Latitude-E7450:~/Works/PS$ file /usr/bin/glxgears.x86_64-linux-gnu 
/usr/bin/glxgears.x86_64-linux-gnu: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=427bacba53b1ac71c965d2db2fc98dd7f411d7d3, for GNU/Linux 3.2.0, stripped

la fonction file permet de savoir ce que contient un fichier.

2- Le processus

Quand on lance , en exécutant glxgears , le programme démarre on voit bien que ça tourne 🙂

on perd la main !

dans le terminal , taper la commande glxgears et entrée

etudiant@ordi:~/Works/PS$ glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
307 frames in 5.0 seconds = 61.330 FPS
301 frames in 5.0 seconds = 60.048 FPS
301 frames in 5.0 seconds = 60.048 FPS
....

et en fait ici le processus est attaché à la fenêtre (parent) glxgears est son enfant

2-1 tuer le processus enfant

dans la suite on va découvrir comment arrêter un processus, Il faut tester les différentes façon de faire :

2-1-1 Méthode de la croix de la fenêtre

Dans la fenĂŞtre ou on a lancĂ© le processus enfant . Le processus dispose d’une croix en haut a gauche ,si on clique dessus on ferme le processus enfant!

2-1-2 Méthode ctrl c (^c)

Dans la fenĂŞtre ou on a lancĂ© le processus enfant , il suffit de d’appuyer sur la touche ctrl (a gauche) et c ( ^c)

2-1-3 Fermer la fenĂŞtre parent

Si on ferme avec la croix le terminal qui à lancé le processus enfant on ferme les 2 , le processus enfant meurt en même temps que son parent.

2-1-4 Lancer la tâche (processus) sans bloquer le parent

etudiant@ordi:~/Works/PS$ glxgears &
[1] 10188
etudiant@ordi:~/Works/PS$ Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
307 frames in 5.0 seconds = 61.397 FPS

etudiant@ordi:~/Works/PS$ 301 frames in 5.0 seconds = 60.049 FPS

etudiant@ordi:~/Works/PS$ 301 frames in 5.0 seconds = 60.049 FPS

on ajoute le & (et commercial) Ă  la fin de la commande

et on appuie sur la touche EntrĂ©e … on et retrouve la main au rythme que glxgears affiche ses informations…

mais on a bien la main .. malgré le processus enfant qui communique

2-1-5 Lancer la tâche en renvoyant l’affichage « à la poubelle »

etudiant@ordi:~/Works/PS$ glxgears > /dev/null  &
[1] 10325
etudiant@ordi:~/Works/PS$ 

Et l on a bien complètement la main ! ici le processus enfant a le numéro 10325 (PID) , vous avez très certainement un autre nombre.

L’affichage est envoyĂ© dans un fichier /dev/null (ca disparait null )

2-1-6 La commande ps (process)

etudiant@ordi:~/Works/PS$ ps
    PID TTY          TIME CMD
   8282 pts/1    00:00:00 bash
  10325 pts/1    00:00:07 glxgears
  10590 pts/1    00:00:00 ps
etudiant@ordi:~/Works/PS$

le PID 8282 c’est le programme , interprĂ©teur bash

puis derrière , notre glxgears PID 10325

et au passage on voit notre commande ps (un processus oui oui !) PID 10590

2-1-7 la commande kill

donc on a notre glxgears qui tourne bien sur notre écran! comme en 2-1-5

on peut jeter un œil sur les signaux

kill -9 10325   # attention Ă  bien mettre le bon PID!

2-1-8 la commande pkill

etudiant@ordi:~/Works/PS$ glxgears > /dev/null &
[3] 14057
[2]   Complété              glxgears > /dev/null
etudiant@ordi:~/Works/PS$ ps
    PID TTY          TIME CMD
  13106 pts/1    00:00:00 bash
  14057 pts/1    00:00:00 glxgears
  14059 pts/1    00:00:00 ps
etudiant@ordi:~/Works/PS$ pkill glxgears 
etudiant@ordi:~/Works/PS$ 

2-1-9 la commande xkill

attention cette commande ferme l’application que vous allez cliquer ! il faut maĂ®triser , a vos risques et pĂ©rils ! mais il n’y a pas de danger ! sauvegarde avant !

etudiant@ordi:~/Works/PS$ glxgears > /dev/null &
[5] 14144
[4]   Termine 1               glxgears > /dev/null
etudiant@ordi:~/Works/PS$ xkill 
Attention: la croix !! parfois une tête de mort ! détruit a coup de clic!!

3- Surveiller les processus

3-1 La commande top

on voit ici qu’il y a 2 glxgears sur cette copie d’Ă©cran

vous lancer comme en 2-1-5

et lancer top ! relever le PID votre glxgears

Et depuis un autre terminal , lancer la commande ps ! et « killer » le glxgears

commenter expliquer !

3-2 la commande htop

plus sympa que top !

sudo apt update && sudo apt install htop

tree et étudiant ou autre !

3-3 la commande btop

installer btop

sudo apt update && sudo apt install btop

il est tellement geek !!

4- nice , régler les priorités des taches

nice -0 est la priorité maximum et -19 minimum

on va lancer 3 glxgears avec des priorités différentes .

etudiant@ordi:~/Works/PS$ sudo nice -n -10 glxgears > /dev/null  &
[12] 14267
etudiant@ordi:~/Works/PS$ nice -n 10 glxgears > /dev/null  &
[13] 14269
etudiant@ordi:~/Works/PS$ nice -n 19 glxgears > /dev/null  &
[14] 14271
etudiant@ordi:~/Works/PS$ 

Que constatez vous!

on va charger la machine avec cette commande

etudiant@ordi:~/Works/PS$ yes > /dev/null &

ça va envoyer des y dans le fichier puit sans fond 🙂 /dev/null, ca va charger la machine !

surveiller avec un autre terminal avec btop ou htop ou top !

etudiant@ordi:~/Works/PS$ yes > /dev/null &
[15] 14368
etudiant@ordi:~/Works/PS$ yes > /dev/null &
[16] 14369
etudiant@ordi:~/Works/PS$ yes > /dev/null &
[17] 14370
etudiant@ordi:~/Works/PS$ yes > /dev/null &
[18] 14371
etudiant@ordi:~/Works/PS$ yes > /dev/null &
[19] 14372
etudiant@ordi:~/Works/PS$ 

Quand vous en avez assez !

killall yes

killall glxgears