Processus et Linux
I. Se lancer dans Debian⚓︎
Debian
Nous allons utiliser une machine virtuelle avec le système d'exploitation Debian qui est une distribution de Linux. La machine virtuelle a été créée avec Oracle VirtalBox, facilement téléchargeable. L'installation de Debian est assez compliquée, elle a été faite au lycée pour vous.
Répertoires spéciaux
Que représente .
?
Success
.
représente le répertoire courant.
Que représente ..
?
Success
..
représente le répertoire parent.
Que représente ~
(tilde) ?
Success
~
représente le répertoire personnel de l'utilisateur (user) en cours, répertoire inclus dans home
Ouvrir la machine virtuelle dans une session debian
- ⚠️ Ne pas utiliser votre login habituel, mais
debian
avec le mot de passedebian
- Double-cliquer sur l'icône Oracle VirtualBox, puis sur l'icône DEBIAN :
- Attendre. Cliquer sur Debian, puis saisir le mot de passe
debian
- Fermer la fenêtre d'options :
- Cliquer sur afficher les applications :
- Cliquer sur Terminal :
II. Quelques bases⚓︎
Retrouver des commandes déjà saisies
Il suffit d'utiliser la flèche vers le haut du clavier ↑
Couper le son
Couper le son de votre poste (en bas à droite dans la barre de tâches)
Quelques commandes
Tester successivement les commandes :
~$ pwd
~$ ls
~$ ls -l
Créer un fichier python
1. Créer un fichier vide test.py
Réponse
touch test.py
2. éditer le fichier test.py
avec la commande : nano test.py
y écrire le code suivant (utiliser quatre espaces pour l'indentation) :
for a in range(100000):
print(a)
Sortir de l'éditeur : Ctrl + X, puis O, puis Entrée pour confirmer le nom.
3. Lancer le programme avec : python3 test.py
II. La commande top⚓︎
👉 En console : $ top
$ top
La commande top permet d’observer en temps-réel les processus sur votre ordinateur à l’instar du gestionnaire de tâches sur Windows.
Vous allez obtenir quelque chose qui ressemble à ceci :
la commande q
👉 Pour commencer : tester q
, puis lancer à nouveau la commande top
.
La commande q
permet de fermer top
III. D'autres commandes avec top
⚓︎
PID
PID est le « processus identifier » : un identifiant sous forme d’entier donné par le système.
👉 Si cela n'a pas été fait, lancer à nouveau la commande top
.
👉 Notez le PID
de la commande top
puis « tuez » le processus top
.
👉 Pour cela : k
suivi du PID
de la commande top
L’affichage se « fige » et il s’affiche quelque chose qui ressemble à :
Send pid 46 signal [15/sigterm]
.
👉 Appuyer ensuite sur la touche Entrée
Question
Relancez la commande top
et observez le PID
. A-t-il été modifié ?
Solution
Un autre processus s'est ouvert, avec un autre PID
Question
Essayer de tuer systemd
.
Solution
Il est impossible de tuer systemd
. systemd
se charge du démarrage du système d'exploitation. On peut trouver à la place init
dans certains systèmes d'exploitation.
IV. Commandes à connaître⚓︎
La commande ps
Dans un terminal, la commande ps
("process status") va permettre d'afficher la liste des processus actifs dans le terminal courant.
👉 Quitter top
puis saisir ps
. Observez les processus actifs.
pts/0
représente le terminal. pts
signifie "pseudoterminal slave" (ou terminal pseudo-esclave)
👉 Ouvrir une deuxième console avec Debian : Cliquer sur Terminal, puis Nouvelle fenêtre
👉 La positionner à la droite de la précédente.
ps et ps -ef
Dans la console (le terminal) de droite, lancer Python3 : ~$ python3
1. Dans la console de gauche, saisir ps
. Voit-on le processus lié à la commande python3
?
Solution
On ne voit pas le processus lié à la commande python3
car ps
ne permet de voir que les processus actifs dans le terminal courant.
2. Dans la console de gauche, saisir ps -ef
. Voit-on le processus lié à la commande python3
?
Solution
On voit effectivement le processus lié à la commande python3
.
ps -ef fournit une vue plus complète :
-e : Affiche tous les processus en cours d'exécution sur le système, indépendamment de l'utilisateur.
-f : Affiche une sortie "full-format" (format complet), ce qui signifie qu'elle inclut plus de détails sur chaque processus, comme l'UID (identifiant de l'utilisateur), le PID (identifiant du processus), le PPID (identifiant du processus parent), le TTY (terminal associé), le temps d'exécution, et la commande complète utilisée pour lancer le processus.
Signification des différents champs
La documentation Linux donne la signification des différents champs :
- UID : identifiant utilisateur effectif ;
- PID : identifiant de processus ;
- PPID : PID du processus parent ;
- C : partie entière du pourcentage d'utilisation du processeur par rapport au temps de vie des processus ;
- STIME : l'heure de lancement du processus ;
- TTY : terminal de contrôle
- TIME : temps d'exécution
- CMD : nom de la commande du processus
Question
Comment sont nommés vos deux terminaux ?
Solution
pts/0
et pts/1
La commande kill
👉 La commande kill
permet de fermer un processus, en donnant son PID en argument.
Depuis la console de gauche, tuer (on dit aussi « terminer ») le processus de python3
. Pour cela saisir kill
suivi du PID de python3
.
Vérifier sur la console de droite que le processus de python3
a bien été terminé : vous devez de nouveau avoir l'invite de commande : ~$
Le PPID
PPID (Parent PID) : certains processus vont eux-mêmes lancer plusieurs processus-fils.
Dans la console de droite saisir firefox
.
Pour visualiser les consoles, Cliquer sur Activités :
Dans la console de gauche, grâce à la commande appropriée, observe tous les processus lancés par firefox. Ils ont tous le même PPID. Noter ce PPID, puis tuer firefox en tuant ce processus parent.
A vous de jouer
Lancer nano.
Noter le PPID de nano. A quoi correspond-il ?
Solution
Commande : ps -ef
Le PPID de nano est le processus parent de nano.
👉 Tester également ps -elf
Solution
La sortie de ps -elf
montre des colonnes supplémentaires comme F (flags), S (state), PRI (priority), NI (nice value), ADDR (memory address), SZ (size), et WCHAN (waiting channel), ce qui rend l'affichage plus détaillé. Nous n'étudierons pas tout cette année.
👉 Tester également top
Solution
La commande top
sans option supplémentaire ne permet pas d'afficher le PPID
👉 Terminer top
, lancer ps -ef
, et remonter les identifiants parents de nano.
Remarque pour -ef
: e signifie every, f signifie full
utiliser |
('pipe')
👉 Pour obtenir |
au clavier : AltGr + 6
Le symbole | en Linux est appelé "pipe" (ou "tuyau" en français). Il est utilisé pour rediriger la sortie d'une commande vers l'entrée d'une autre commande. Cela permet de combiner plusieurs commandes en une seule ligne, de sorte que la sortie d'une commande devienne l'entrée de la suivante.
Voici un exemple : ls -l | grep "txt"
Dans cet exemple, la commande ls -l
liste les fichiers et répertoires avec des détails, puis grep "txt"
filtre cette liste pour ne montrer que les lignes contenant "txt".
A vous de jouer
1.Quelle commande utiliser pour voir le détail de seulement ce qui concerne nano
? Le tester.
Success
ps -elf | grep nano
2. Tuer le processus lié à nano
Solution
kill
suivi du PID de nano
3. Faire vos propres essais pour réviser les commandes vues.
Fin de ce TP
Ce TP est terminé : Fermer les terminaux, puis Oracle VirtalBox. Se connecter sur votre session habituelle pour passer à la suite.
V. QCM⚓︎
Quelle commande permet de lister les processus ?
- ps
- sh
- proc
- dir
- man
- ls
ps
Quelle abréviation désigne l'identifiant d'un processus dans un système d'exploitation de type unix ?
- SIG
- PID
- SID
- PPID
PID
Quelle commande permet d'interrompre un processus dans un système d'exploitation de type unix ?
- stop
- interrupt
- end
- kill
kill
VI. Réviser Linux (chez vous)⚓︎
🌐 TD à télécharger : Fichier Terminus.pdf
: "Clic droit", puis "Enregistrer la cible du lien sous"
😉 Il sera utile de couper le son du site : clic droit sur l'onglet dans le navigateur, puis sélectionner "couper le son du site"
👉 Le symbole ~ au clavier
- Il se trouve sur la même touche que 2 é ~. Il faut appuyer sur la barre espace pour le faire apparaître.
- En cas de problème : maintenir la touche Alt enfoncée et saisir
126
VII. Un exercice type bac⚓︎
Avec une ligne de commande dans un terminal sous Linux, on obtient l'affichage suivant :
La documentation Linux donne la signification des différents champs :
- UID : identifiant utilisateur effectif ;
- PID : identifiant de processus ;
- PPID : PID du processus parent ;
- C : partie entière du pourcentage d'utilisation du processeur par rapport au temps de vie des processus ;
- STIME : l'heure de lancement du processus ;
- TTY : terminal de contrôle
- TIME : temps d'exécution
- CMD : nom de la commande du processus
Exercice
1. Question 1.
Parmi les quatre commandes suivantes, laquelle a permis cet affichage ?
- ls -l
- ps –ef
- cd ..
- chmod 741 processus.txt
Solution
ps -ef
2. Question 2.
Quel est l'identifiant du processus parent à l'origine de tous les processus concernant le navigateur Web (chromium-browser) ?
Solution
L’identifiant du processus parent à l’origine de tous les processus concernant le navigateur Web est 831
3. Question 3.
Quel est l'identifiant du processus dont le temps d'exécution est le plus long ?
Solution
L’identifiant du processus dont le temps d’exécution est le plus long est 6211 (00:01:16)
Avec l'aide du travail d'Antoine Marot, David Sallé, Julien Simonneau