Académique Documents
Professionnel Documents
Culture Documents
Introduction
Consultez l’adresse suivante https://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base
https://doc.ubuntu fr.org/tutoriel/console_commandes_de_base pour
toute information sur les commandes de base.
1. La commande ps
La commande ps affiche l’état des processus. Si aucune option n’est spécifiée, ce sont les processus
de la session active qui sont affichés.
Options courantes
-e : affiche tous les processus du système.
-f : affiche les informations au
u format long.
-t : affiche tous les processus
La commande ps auxw affiche tous les processus et leur identifiant utilisateur associé.
La commande pidof extrait le PID d’un processus.
2. La commande kill
Kill [-Numéro-du-signal]
signal] PID [PID…]
Lorsqu’un processus est lancé en arrière plan, il ne peut pas être arrêté par les touches ordinaires
d’interruption (touche Supp ou ctrl-C).
ctrl C). On doit utiliser Kill pour envoyer un signal au processus qu’on
souhaite arrêter. Les processus peuvent réagir à différents signaux. La
La liste des signaux disponibles
peut être affichée avec la commande : kill –l.l. Le tableau suivant résume quelques exemples de
signaux :
Signal Utilisation
Envoyé par un processus père à tous ses fils
1 ou SIGHUP
lorsqu’il termine son activité
Signal d’interruption d’un processus. Il est
2 ou SIGINT envoyé par l’activation de la touche Supp ou
Ctrl-C
9 ou SIGKILL Destruction et mort d’un processus
15 ou SIGTERM Fin normale d’un processus
Exécutée sans option, la commande Kill va envoyer le signal SIGTERM (-15) 15) au processus lui
demandant de se terminer.
L’option -9
9 enverra le fameux signal SIGKILL pour interrompre un processus.
Si on désire terminer tous les processus qui portent un nom donné. Dans ce cas, il faut utiliser la
commande killall (terminer tout). La commande kill envoie au processus l’ordre pour se fermer et la
commande killall envoie le même ordre mais à plusieurs processus lorsque plusieurs portent le
même nom.
3. Les commandes jobs, fg, bg et sleep
3.1. jobs
3.2. fg et bg
Si un processus P dont l’exécution prend un certain temps est lancé en avant plan, le shell sera pris et
n aura plus la main pour saisir des commandes. Avec Ctrl-Z, on peut arrêter temporairement le
processus P : son exécution est suspendue jusqu’à ce qu’on déplace en arrière plan avec la
commande bg.
4. La commande sleep
Elle suspend l’exécution durant n secondes (le processus shell passe à l’état bloqué durant ce temps).
Si l’on s’aperçoit qu’une tâche déjà lancée aurait dû l’être avec nice, il n’est pas trop tard pour
réagir : la commande renice permet de change la priorité d’un processus déjà existant.
La commande renice a la syntaxe suivante :
renice [-n prio] [-p] [-g] [-u] ID
L’utilisateur standard ne peut utiliser que les valeurs entre 0 et 19, permettant de baisser la priorité.
L’option –p précise un PID, -g un GID et –u un UID.
6. Les commandes time et top
6.1. La commande time : elle mesure les durées d’exécution d’une commande. C’est un
moyen efficace pour connaitre les temps de traitement et retourne trois valeurs :
Real : durée totale d’exécution de la commande ;
User : durée de temps CPU nécessaire pour exécuter le programme ;
System : durée du temps CPU nécessaire pour exécuter les commandes liées à l’OS (appels
système au sein d’un programme).
Le résultat est sorti par le canal d’erreur standard 2. On peut avoir une indication de la charge de la
machine par le calcul real / (user+system). Si le résultat est inférieur à 10, la machine dispose de
bonne performances, au-delà de 20 la charge de la machine est trop lourde (performances basses).
6.2. La commande top : elle est un utilitaire interactif qui affiche la liste des processus en
cours d’exécution. Par défaut, son critère de tri est l’utilisation actuelle du processeur (touche P)
mais on peut opter pour la mémoire occupée (touche M), le temps processeur consommé (touche T)
ou le numéro de processus ou PID (touche N). La touche k (comme kill) permet d’indiquer un numéro
de processus à tuer. R (comme renice) permet de changer la priorité d’un processus.
Si le processus semble être surchargé, il est ainsi possible d’observer quels processus se battent pour
son contrôle ou consomment toute la mémoire disponible. Il est intéressant en particulier de vérifier
si les processus qui consomment correspondent effectivement aux services réels que la machine
héberge. Un processus au nom inconnu tournant sous l’utilisateur www-data doit immédiatement
attirer l’attention : la probabilité est forte que cela corresponde à un logiciel installé et exécuté sur la
machine en exploitant une faille de sécurité d’une application web.
Top est un outil de base très souple et sa page de manuel explique comment on personnalise
l’affichage pour l’adapter aux besoins et aux habitudes de chacun.
Exercice 1
Interprétez les commandes suivantes
Exercice 2
Dans cet exercice, vous lancerez plusieurs processus puis vous utiliserez les fonctions de contrôle de
shell bash pour les gérer et les contrôler. Vous commuterez aussi d’une console virtuelle à une autre.
1. Commencez par vous inscrire sur les terminaux virtuels 1 et 2 (tty1 et tty2).
2. Passez à tty1 et démarrer un processus à l’aide de la commande suivante :
[enetcom@enetcom]$ (while true; do echo –n A >> log; sleep 1; done)
3. Notez désormais que ce terminal est utilisé par votre processus (exécuté en premier lieu). Le
processus que vous avez lancé ajoute la lettre ‘A’ de façon répétée à une seconde d’intervalle
au fichier ~/log. Passez à tty2 et tapez la commande qui vous permet de voir une séquence
de caractère A qui s’allonge (tail -f).
4. Passez à tty1 et interrompez le processus en cours d’exécution en appuyant CTRL-Z sur cette
console. Le shell reporte que le processus a été arrêté et vous donne un numéro de travail
[1]. Passez à tty2 et vérifiez visuellement que le fichier n’augmente plus.
5. Passez à tty1 et lancez à nouveau le processus, cette fois en arrière plan. Vérifier que le
travail [1] est en cours d’exécution. Enfin passez à tty2 et vérifiez visuellement que le fichier
augmente à nouveau.
6. Passez à tty1 et lancez deux autres processus à l’aide de deux commandes. La première
commande est presque identique à celle que vous avez exécutée dans la deuxième étape
mais elle ajoute B. Il suffit de changer A en B. La deuxième exécute la première, en
remplaçant B par C.
7. Entrez jobs et vérifiez que tous les trois sont en cours d’exécution. Passez à tty2 et vérifiez
que le fichier augmente de nouveau en ajoutant cette fois A, B et C chaque seconde.
8. Tuer les trois processus.
9. Vérifiez avec jobs qu’ils sont terminés.
10. Passez à tty1 et nettoyez en effaçant le fichier ~/log.
Exercice 3
1. Lancer le processus sleep 1000 en arrière plan. Notez son PID.
2. Mettre ce processus en avant-plan, puis l’arrêtez (ne le tuez pas) et le mettre en arrière-
plan.
3. Affichez les détails de ce processus.
4. Quelle est la priorité actuelle de ce processus.
5. Baissez sa priorité à la valeur 10.
6. Envoyer le signal n° 15 à ce processus.
Exercice 4
1. Lancer le programme xclock avec une priorité initiale à 10 en tâche de fond.
2. Extraire le PID du processus xclock.
3. Utiliser la commande xargs pour passer le PID de xclock en paramètre à la commande kill et
tuer le processus.
4. Comment s’assurer que xclock est arrêté.