Vous êtes sur la page 1sur 4

TP Gestion des processus sous linux

___________________________________________________________________________

EX1-Identifier un processus : démarrer le terminal, détecter le processus correspondant au terminal appelé “bash” et
Identifier les informations suivantes (pidof cmde : affiche le pid d’un processus démarré par la commande : cmde)
1. Identifiant de processus (PID ) : ………… 4. L'utilisateur (UID) : …………………
2. Parent du processus ( PPID ) …………… 5. Priorité (PRI ) : …………………………
3. L'état du processus : …………………..... 6. La commande correspondante : …………

-----------------------------------------------------------------------------------------------------------------------------------------------------------

EX2-Gestion des processus en temps réel


Pour gérer les processus en temps réel, il faut utiliser la commande “top”. Détecter les informations suivantes :
Nombre de processus total (tasks) : ……...….…
Nbr de processus en cours d'exécution ……..… Nbre de processus arrêtés (stopped) ……
Nbre de processus en état sleeping …………... Nbre de processus redémarré …………….

RMQ : Dès que top est lancé, il est possible d'exécuter des commandes interactives: N (par pid) - A (ordre
chronologique) - P (utilisation de CPU) - M (utilisation de la mémoire) - K (tuer un processus dont le pid sera
demandé).

- Quel est le dernier et le premiers processus créés …………...…………………………………………...…………….


- Donner les 3 processus consommateurs de CPU …………………………………………………………………………
- Donner les 3 processus consommateurs de la mémoire …………………………………………………………………

-----------------------------------------------------------------------------------------------------------------------------------------------------------

EX3-Envoyer un signal aux processus (kill)

Si vous connaissez le PID, il est possible d'envoyer un signal au processus : La syntaxe d’envoi d’un signal est :
kill -signal pid où signal est un numéro ou un nom de signal (le signal par défaut est SIGTERM).
-SIGSTOP (17) pour arrêter un processus. SIGCONT (19) pour redémarrer un processus arrêté.
-SIGKILL (9) pour tuer un processus. SIGTERM (15) pour signifier au processus qu'il doit se tuer.

Démarrer le programme xeyes (s’il existe) : …………………... Identifier son PID ……….…… et PPID ………………
arrêter le processus : ……..…………..……..………. redémarrer le processus …………………………… Tuer le
processus ………………………….………..…. que ramarquez-vous…………………………………………………..

-----------------------------------------------------------------------------------------------------------------------------------------------------------

EX4 :
1- Quelle commande vous permet de vérifier facilement quel utilisateur consomme la plus grande partie des
ressources processeur du système ? ………………….. lequel …………………………………………………...
2- La commande (pstree), est-ce que tous les processus ont un processus parent ? …………………………………..
3- Qu'arrive t-il si un processus enfant perd son parent ?, tester ……………………………………………………..
4- Quelle commande permet d'envoyer un signal à un processus ? ………………………………………………..
5- De quel élément avez-vous besoin pour envoyer un signal à un processus? ………………………………………
…………………………………………………………………………………………………………………………
6- Quel signal reçoivent tous les processus lorsque la session “bash” à partir de la quelle ils ont été lancés se
termine? ……………………… tester cette opération …………………………………………………………...
7- Quel est le processus de l’utilisateur courant puis celui de root qui utilise le plus de mémoire ?
EX5:
1-Ouvrez deux terminaux. Dans l'un deux, tapez la suite de commandes suivante :
# while true ; do echo -n la date est :; date; done
Dans l'autre terminal, vérifiez que vous avez la possibilité de stopper et de redémarrer les travaux.
………………………………………………………………..……………………………………………………………

2- Faites que l'affichage de sortie de la commande « ps -o champ1, champ2, ...» soit formatée de la manière suivante:
username, commande et nice value. La commande est: ……………………………………….................................
3-Arrêtez tous les processus nommés bash qui appartiennent à votre propre utilisateur.
4- Avec la commande top, affichez les processus de root puis taper l’option : …….. pour arrêter des processus ?
……..………………………………………………………………….…………………………………………………….

-----------------------------------------------------------------------------------------------------------------------------------------------------------

Ex7:
1. Ouvrez le manuel (man cmde) des commandes suivantes en arrière plan, une à une : ps, top, kill, ls.
2. Affichez la liste des PIDs des processus suspendus à l'aide de la commande jobs
……………………………………………………………………………………………………………...…….
3. Utilisez la commande kill et les signaux correspondants pour arrêter ces processus, commencer par le premier
créé, puis le suivant …………………………………………………………………………………...………...

-----------------------------------------------------------------------------------------------------------------------------------------------------------

Ex8:
1. Copiez le fichier /dev/random dans le répertoire courant.
2. Si la copie n'est pas terminée au bout de 5 secondes, suspendez le processus et
relancez le en tâche de fond.
3. Affichez la taille du fichier copié à avec : ls -l ………...
4. Patientez quelques secondes, puis vérifiez si le processus cp est toujours en cours.
5. Si c'est le cas, affichez à nouveau la taille du fichier. …………..

NB: Le fichier /dev/random est un fichier virtuel, au même titre que /dev/null. Lorsqu'on lit son
contenu, ce fichier produit des données aléatoires, sans jamais s'arrêter.

-----------------------------------------------------------------------------------------------------------------------------------------------------------

Ex9 : Soit la commande : find /etc -name hosts 1>find1.out 2>&1


Signifie : la sortie standard : (1) : qui est le résultat de la commande; sera redirigé vers le fichier find1.out ;
puis redirection de la sortie standard d’erreur (2) vers le même endroit que la sortie standard (1) : c.à.d le
fichier find1.out . soit la 2eme commande : find /etc -name hosts 2>find2.out 1>&2
comparer le contenu de 2 fichiers .

Écrire une commande qui affiche le contenu d’un fichier f1 ( cat …) qui doit afficher le résultat
sur écran, si des erreurs sont produites, alors elles seront insérées dans le fichier f-erreur.

-----------------------------------------------------------------------------------------------------------------------------------------------------------

EX10 : Les tubes

Soit la commande “ls -l” qui affiche le contenu du dossier courant, soit la commande “wc -l” qui
compte le nombre de lignes; écrire une commande utilisant les tubes pour compter le nombre de fichier se
trouvant dans le dossier /etc : ………………………………………………………………………………...
EX11:

1. Lancer la commande en avant-plan: sleep 5000 ; Le shell est bloqué ? ……...


2. Interrompre cette commande en tapant CTRL−Z ; Le shell est bloqué ? ………..
3. Lancer une autre commande en arrière plan : top &
4. Afficher les travaux (jobs) suspendus et ceux en arrière-plan: jobs
5. Quel est l’état de 2 processus : sleep : …………. top : ……………………
6. Afficher les infos des processus : ps -l (Etat, pid, ppid, uid, Nice, la commande)
7. Le processus sleep est marqué « stopped (Terminé) » ; le redémarrer en avant-plan avec la
commande fg <Numero-job> ……………………………………………………
8. L’Interrompre à nouveau …………………………………………….
9. Nous pouvons redémarrer le job en arrière-plan avec la commande bg ; redémarrer la commande
top en arrière plan (vérifier son numéro de job)
10. Afficher les infos des processus <sleep> : …………….. et <top> : …………………..

-----------------------------------------------------------------------------------------------------------------------------------------------------------

EX12 : Arrêt des processus

L’arrêt se fait avec CTR-C ou bien envoie d’un signal de terminaison normale SIGTERM (15) ou aussi avec
la terminaison forcée ou destruction SIGKILL (9)
La syntaxe : kill -Nom_ou_numero_du_signal pid_du_processus

1. Lançons un processus en arrière-plan: sleep 5000&


Le processus n’est pas interruptible par la combinaison de touches CTRL−C.
2. Obtenons le PID du processus avec la commande ps -l
3. Arrêter le processus avec la commande kill …………………………………………………
4. Lançons 3 processus “sleep 5000” , “top” et “cat” en même temps
a. cas 1 : en mode intéractif. que remarquez-vous …………………………………
cas 2 : en arrière-plan. que remarquez-vous ……………………………….……
5. Ouvrir un 2eme terminal, identifier les pid des processus en cours … puis envoyer des signaux (15
pour ceux suspendus S) et (9 pour ceux arrêtés). que remarquez-vous

-----------------------------------------------------------------------------------------------------------------------------------------------------------

EX14: Exécution périodique

Syntaxe : min h jm m js user cmde


exemple : 00 18 * * 6 Ali echo “bon week-end” : ce message est affiché chaque vendredi à 18h

NB : min : Les minutes ; h : Les heures ; jm : Les jours dans le mois ; m : Les mois ; js : Les
jours de la semaine ; user : L’utilisateur système sous lequel la tâche sera réalisée ; cmde : La
commande à réaliser ;

1-Quel est le rôle de la commande : cp ~ -R /home/ali/travail


2-programmer cette tâche chaque samedi chaque début du mois pour l’utilisateur “Ali” à 12:30
EX15:

1. Lancer deux terminaux (tty1 et tty2).


2. Exécuter dans le tty1 la commande : (while true; do echo salut >> log; sleep 1; done)

Ouvrir le fichier : log pour vérifier son contenu. (avec la commande : cat log )

expliquer : …………......................................................................................................................................................

3. Dans le terminal tty2, utiliser la commande (tail -f log) pour afficher en temps réel le contenu du fichier log, quel

résultat ? ……………………………………………………………………………………………………………...

4. Dans le tty1, interrompre le processus en cours d’exécution en utilisant Ctrl+Z. Quel est le numéro de travail (job)

associé au processus interrompu ? …………………………………………………………………………………...

5. Vérifier dans tty2 si le remplissage du fichier log est arrêté………………………………...

6. Dans le tty1, lancer à nouveau le processus arrêté mais en arrière plan. ………………………..

7. Vérifier si le travail déjà arrêté est en cours d’exécution…………………… Vérifier dans tty2, l’état de

fichier /tmp/log …………………………… Expliquer le rôle de ces deux commandes.

8. Dans tty2, vérifier que les trois processus sont en cours d’exécution et consulter le fichier /tmp/log ……………..

9. Dans tty1, utiliser ensuite kill pour envoyer un SIGSTOP au numéro de travail du premier

processus exécuté pour le suspendre. Vérifier avec la commande jobs …………………………………….

10. Relancer le travail du premier processus à l’aide de kill et le signal SIGCONT. ……………………….

11. Utiliser SIGTERM pour terminer les travaux [2] et [3]. Vérifier avec jobs qu’ils sont terminés.

12. Vérifier si tous les processus ont été terminés, sinon terminer ceux qui restent …….

Vous aimerez peut-être aussi