Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sde2:laboratoare:03_uso [2023/03/27 18:54]
alexandru.radovici created
sde2:laboratoare:03_uso [2023/03/27 19:18] (current)
alexandru.radovici
Line 1: Line 1:
-====== TP - Installation et utilisation d'​applications ======+====== TP - Installation et utilisation d'​applications ======
  
 ===== Démarrage et arrêt des applications ===== ===== Démarrage et arrêt des applications =====
Line 7: Line 7:
 L'​utilisateur peut démarrer des applications à l'aide de l'​interface utilisateur graphique (GUI) ou de l'​interface de ligne de commande (CLI). Dans le cas de l'​interface graphique, le démarrage se fait à l'aide des éléments graphiques (souris, menus, icônes du bureau). Dans le cas de l'​interface de ligne de commande, le démarrage s'​effectue en entrant et en exécutant des commandes. L'​utilisateur peut démarrer des applications à l'aide de l'​interface utilisateur graphique (GUI) ou de l'​interface de ligne de commande (CLI). Dans le cas de l'​interface graphique, le démarrage se fait à l'aide des éléments graphiques (souris, menus, icônes du bureau). Dans le cas de l'​interface de ligne de commande, le démarrage s'​effectue en entrant et en exécutant des commandes.
  
-==== Démarrage et arrêt des applications graphiques ==== 
  
 +==== Démarrage des applications CLI à l'aide de la ligne de commande ====
  
-=== Démarrage d'une application graphique ​à l'aide de la ligne de commande ​===+Les applications CLI, également appelées utilitaires,​ sont conçues pour être démarrées et utilisées ​à partir de la ligne de commande. Nous appelons le plus souvent les applications en ligne de commande **utilitaires** ou simplement **commandes**. Nous écrivons le nom de l'utilitaire / de la commande dans un terminal et l'​utilitaire sera démarré (contrairement au scénario d'​utilisation de ''​%%Alt+F2%%'',​ lorsque nous utilisons des applications CLI dans la ligne de commande, les messages seront Cela se produit parce que la ligne de commande signifie l'​existence d'un terminal où nous pouvons afficher les messages. 
 +)). Par exemple, si nous voulons afficher les utilisateurs présents dans le système, nous lançons une application de terminal et utilisons l'​utilitaire ''​%%who%%''​ :​
  
-En plus des deux méthodes ci-dessus, le démarrage d'une application graphique peut se faire à partir de la ligne de commande ​(CLI), en utilisant la chaîne qui identifie l'​application,​ comme dans le cas de l'​utilisation de ''​%%Alt+F2%%''​Pour démarrer une application graphique depuis la ligne de commande, nous avons besoin d'un terminalLe terminal est un appareil exécutant une application appelée **shell**, qui est l'​interpréteur des commandes que vous entrez. Tout au long de ce chapitre et tout au long du livre, nous utiliserons shell et terminal de manière interchangeable.+<code > 
 +student@uso:​~$ whox 
 +student ​ :0           2020-09-04 17:42 (:0) 
 +student ​ pts/0        2020-09-19 15:57 (192.168.56.1) 
 +</​code>​
  
-Nous démarrons une application de terminal en utilisant soit l'​icône correspondantesoit ''​%%Alt+F2%%''​ suivi de la chaîne ​(commande''​%%gnome-terminal%%''​. Dans l'​application de terminal, nous démarrons ​l'application Firefox en écrivant la chaîne (commande) ​''​%%firefox%%''​, suivie de la touche ''​%%Entrée%%'',​ comme dans l'​image ci-dessous. L'​application Firefox va démarrer.+Ousi nous voulons voir combien ​de mémoire nous avons (disponibledans le système, nous utilisons ​l'utilitaire ​''​%%free%%''​ :
  
-{{:uso:laboratore:laborator-02:firefox-cli.png?​500|Démarrer Firefox depuis la ligne de commande}}+<code > 
 +student@uso:~$ free 
 +              total        used        free      shared ​ buff/​cache ​  ​available 
 +Mem       ​2040972 ​    ​1025716 ​      ​83824 ​      ​32916 ​     931432 ​     794692 
 +Swap       ​777300 ​      ​37056 ​     740244 
 +</​code>​ 
 +=== Exercices ===
  
-À ce stade, nous ne pouvons plus entrer de nouvelles commandes dans l'application du terminal pour démarrer d'autres applications. Nous devrons arrêter l'application Firefox. Arrêtez l'application Firefox depuis l'environnement graphique ​(cliquez sur le bouton ​de fermeture ​de la fenêtre ou utilisez la combinaison ​de touches "%%Alt+F4%%"ou depuis le terminal, en utilisant ​la combinaison ​de touches "​%%Ctrl+c%%"​ .+   - Démarrez ​l'utilitaire ​''​%%ls%%''​ (liste de répertoires en ligne de commande (CLI)) à l'​aide ​de la ligne de commande. 
 +   - Lancer l'​utilitaire ''​%%df%%''​ (afficher l'​espace disqueà l'aide de la ligne de commande
  
-=== Exercices ​===+==== Arguments de la ligne de commande ====
  
-   - Comme ci-dessus, démarrez l'​application LibreOffice ​en utilisant la ligne de commande.+Pour lancer des applications/​utilitaires ​en ligne de commande, on utilise des commandes qui contiennent le nom de l'​utilitaire,​ éventuellement suivi d'​argumentsAinsi, pour lancer les utilitaires "​%%ls%%"​ ou "​%%ps%%",​ on utilise des commandes comme celles ci-dessous, simples ou avec arguments :
  
-==== Maintien de l'accès au terminal ​====+<code bash> 
 +student@uso:​~$ ls 
 +Desktop ​ Documents ​ Downloads ​ examples.desktop ​ Music  Pictures ​ Public ​ snap  Templates ​ uso.git ​ Videos ​ vm-actions-log.txt 
 +student@uso:​~$ ls -l 
 +total 60 
 +drwxr-xr-x ​ 2 student student 4096 Aug  6  2018 Desktop 
 +drwxr-xr-x ​ 3 student student 4096 Aug 20  2018 Documents 
 +drwxr-xr-x ​ 2 student student 4096 Aug  6  2018 Downloads 
 +-rw-r--r-- ​ 1 student student 8980 Aug  6  2018 examples.desktop 
 +drwxr-xr-x ​ 2 student student 4096 Aug  6  2018 Music 
 +drwxr-xr-x ​ 2 student student 4096 Aug  8 11:52 Pictures 
 +drwxr-xr-x ​ 2 student student 4096 Aug  6  2018 Public 
 +drwxr-xr-x ​ 3 student student 4096 Aug  8 09:02 snap 
 +drwxr-xr-x ​ 2 student student 4096 Aug  6  2018 Templates 
 +drwxr-xr-x 14 student student 4096 Aug 20  2018 uso.git 
 +drwxr-xr-x ​ 2 student student 4096 Aug  6  2018 Videos 
 +-rw-r--r-- ​ 1 student student 4827 Aug 21  2018 vm-actions-log.txt 
 +student@uso:​~$ ps 
 +  PID TTY          TIME CMD 
 + 3370 pts/4    00:00:00 bash 
 + 7979 pts/4    00:00:00 ps 
 +student@uso:​~$ ps -f 
 +UID        PID  PPID  C STIME TTY          TIME CMD 
 +student ​  ​3370 ​ 3369  0 08:55 pts/4    00:00:00 -bash 
 +student ​  ​7982 ​ 3370  0 13:17 pts/4    00:00:00 ps -f 
 +</​code>​ 
 + 
 + 
 +==== Forcer ​l'arrêt des applications en ligne de commande ​====
  
-Lorsque nous lançons une application ​graphique depuis ​la ligne de commandel'application « prend le contrôle » du terminal ​nous ne pouvons plus entrer ​de nouvelles commandes pour lancer d'autres ​applications. ​Nous pouvons résoudre ​ce problème en déplaçant ​l'​application ​graphique vers l'**arrière-plan** du shellC'​est-à-dire que nous suivons ​les étapes:+Une application ​dans la ligne de commande ​peut s'​exécuter trop longtemps ou se bloquer. Auquel cas nous voulons ​l'arrêter. La solution de contournement consiste à fermer la fenêtre ​du terminal, ce qui ferme généralement également l'​application. La meilleure solution consiste simplement à fermer l'​application. Pour ce faire, ​nous utilisons la combinaison ​de touches ​''​%%Ctrl+c%%''​ qui arrête l'​exécution de l'​application dans le terminal ((Pour certaines ​applications, la combinaison de touches ''​%%Ctrl+c%%''​ peut ne pas fonctionnerDans Dans ce cas, nous pouvons utiliser la combinaison de touches plus forte "​%%Ctrl+\%%"​. Si "​%%Ctrl+\%%"​ ne fonctionne pas non plus, nous devrons envoyer à l'​application ​un signal plus fort pour l'arrêterNous en discuterons signaux dans "​%%Stopping Processes%% Signaux"​. 
 +)). Cela peut également être fait pour les applications graphiques, comme nous l'​avons vu plus haut.
  
-   * Démarrezdans le terminal, l'​application graphique (**Firefox**) en utilisant ​la commande ''​%%firefox%%''​. Nous disons que l'application s'​exécute au **premier plan** et contrôle le terminal ; c'​est-à-dire qu'il n'​autorise pas l'​exécution d'une autre commande. +Par exemplesi nous utilisons ​la commande ''​%%sleep 100%%'' ​qui se figera pendant 100 secondes, nous l'arrêterons en utilisant ​''​%%Ctrl+c%%''​ comme ci-dessous :​
-   * Dans le terminal, on utilise la combinaison de touches ​''​%%Ctrl+z%%'' ​pour mettre l'​application en arrière-plan. À ce stade, nous avons à nouveau l'​invite du terminal, ​comme ci-dessous :​+
  
 <code bash> <code bash>
-étudiant@uso:​~$ ​firefox +student@uso:​~$ ​sleep 100 
-^Z +^C 
-[1]+ Firefox arrêté+student@uso:​~$
 </​code>​ </​code>​
  
-   Mais l'​application ​est maintenant "​gelée"​ne répond plusNous disons qu'il est **suspendu**. +**Exercice** :​ utilisez la commande suivante qui démarre une application de longue durée et l'arrête de force : 
-   ​* Nous utilisons, dans le terminal, la commande ''​%%bg%%''​comme ci-dessous :+ 
 +   * ''​%%watch ps%%''​ :​ pour surveiller les processus dans le terminal actuel 
 + 
 +===== Exécuter des applications ===== 
 + 
 +Démarrer une application ​signifie allouer des ressources système (processeurmémoire, périphériques d'​entrée/​sortie) pour exécuter l'​applicationUne application en cours d'exécution, c'​est-à-dire utilisant des ressources système pour exécuter du code et traiter des données, ​est appelée un **processus**. Lorsque nous démarrons une application,​ un processus est créé ; quand on arrête l'​application,​ ou quand elle termine son exécution, on entend la fin de l'​exécution du processus
 + 
 +Le processus est démarré à partir d'un fichier exécutable qui contient le code de l'​application (instructions) et des données. Le fichier exécutable est également appelé ​**image de processus**. Le fichier exécutable est un **programme**. ​Nous disons que le processus est un programme en cours d'​exécution ((Le temps de création d'un processus à partir d'un fichier exécutableen chargeant le code et les données du fichier exécutable en mémoire, est appelé ** temps de chargement **. Exécution du processus et l'​utilisation des ressources système s'​appelle **run-time**. 
 +)). 
 + 
 +==== Identification du fichier exécutable d'une application ==== 
 + 
 +Le fichier exécutable d'une application est chargé ​dans la mémoire système et le code est exécuté. à partir de ce momentnous disons que l'​application est **en cours d'​exécution**. 
 + 
 +Par exemple, l'​application Firefox (navigateur web) a associé le fichier exécutable ''​%%/​usr/​bin/​firefox%%''​ ; l'​application Vim (éditeur) a un fichier exécutable associé ''​%%/​usr/​bin/​vim%%''​ ;​ l'​application LibreOffice (suite bureautique) a un fichier exécutable associé ''​%%/​usr/​bin/​libreoffice%%''​. On peut identifier le fichier exécutable d'une application à l'aide de la commande ''​%%which%%'' ​suivi de la commande de lancement de l'​application ​comme ci-dessous :
  
 <code bash> <code bash>
-étudiant@uso:​~$ ​bg +student@uso:​~$ ​which firefox 
-[1]+ firefox ​et+/usr/bin/firefox 
 +student@uso:​~$ which vim 
 +/​usr/​bin/​vim 
 +student@uso:​~$ which libreoffice 
 +/​usr/​bin/​libreoffice
 </​code>​ </​code>​
 +**Exercice** :​ Identifiez le fichier exécutable des applications/​utilitaires ''​python'',​ ''​vim'',​ ''​%%ls%%'',​ ''​%%df%%''​.
  
-   * J'ai donc "​dégelé"​ l'​application,​ qui est maintenant interactive.+==== Enquête de processus ====
  
-Dans ce mode, nous avons l'application **Firefox** ​en cours d'​exécution et avons accès au terminal pour entrer ​de nouvelles commandes.+Un système d'exploitation a généralement plusieurs applications ​en cours d'​exécution, donc plusieurs processus. Trop de processus peuvent surcharger le système, le ralentir ou l'​empêcher de fonctionner. Certains processus peuvent consommer des ressources excessives affectant d'​autres processus. C'est pourquoi il est utile d'​étudier les processus d'un système ​et leur consommation ​de ressources.
  
-**Exercice** : suivez ​les étapes ​ci-dessus pour démarrer ​également l'application ​**LibreOffice** à partir ​de la ligne de commande et conserver ​l'accès au terminal.+Un processus est créé par un autre processus. Par exemple, ci-dessus, le processus ''​%%which%%''​ a été créé à partir d'un processus shell (''​%%bash%%''​). Le processus shell a été à son tour créé par un autre processus. Un processus a un processus parent ; un processus peut avoir plusieurs processus enfants. Les processus font donc partie d'une hiérarchie. 
 + 
 +Au sommet de la hiérarchie des processus se trouve le processus nommé classiquement ''​%%init%%''​. Dans la liste ci-dessus, nous voyons que le processus au sommet de la hiérarchie est ''​%%systemd%%''​. ''​%%systemd%%''​((https://​freedesktop.org/​wiki/​Software/​systemd/​)) est l'​implémentation de ''​%%init%%''​ présent dans la plupart des distributions Linux actuelles ((Le processus ''​%%init%%''​ existera toujours au sommet de la hiérarchie des processus, qu'il soit ou non être appelé ''​%%systemd%%'',​ ''​%%init%%'',​ ''​%%upstart%%''​ ou autrement.)). 
 + 
 + 
 +=== Liste des processus === 
 + 
 +Sur un plan plus didactique, nous pouvons visualiser la liste des processus d'un système. L'​utilitaire ''​%%ps%%''​ affiche les processus actuels du système (un //​instantané//​ des processus système). Lors d'une simple exécution, l'​utilitaire ''​%%ps%%''​ affiche les processus dans le terminal actuel : 
 + 
 +<code bash> 
 +student@uso:​~$ ps 
 +  PID TTY          TIME CMD 
 +14897 pts/4    00:00:00 bash 
 +14910 pts/4    00:00:00 ps 
 +</​code>​ 
 +Dans le terminal courant (indiqué par la colonne ''​%%TTY%%''​ à l'​écran,​ c'​est-à-dire le terminal ''​%%pts/​4%%''​) il y a deux processus : 
 + 
 +   - le processus shell (''​%%bash%%''​) dans lequel nous exécutons des commandes qui créent de nouveaux processus ;​ 
 +   - le processus de listing (''​%%ps%%''​) que nous venons de lancer avec la commande ''​%%ps%%''​ ; il s'​affiche essentiellement 
 + 
 +Pour afficher tous les processus système, nous utilisons l'​option ''​%%-e%%''​ (pour //​everything//​) de l'​utilitaire ''​%%ps%%''​ comme dans la commande ci-dessous :​ 
 + 
 +<code bash> 
 +student@uso:​~$ ps -e 
 +  PID TTY          TIME CMD 
 +    1 ?        00:00:19 systemd 
 +    2 ?        00:00:00 kthreadd 
 +    4 ?        00:00:00 kworker/​0:​0H 
 +    6 ?        00:00:00 mm_percpu_wq 
 +    7 ?        00:00:09 ksoftirqd/​0 
 +    8 ?        00:00:06 rcu_sched 
 +    9 ?        00:00:00 rcu_bh 
 +   10 ?        00:00:00 migration/​0 
 +   11 ?        00:00:00 watchdog/​0 
 +[...] 
 +</​code>​ 
 + 
 +==== Attributs de processus ==== 
 + 
 +L'​utilitaire ''​%%ps%%''​ a un affichage tabulaire des processus, chaque colonne correspondant à un attribut des processus. Dans un run simple, comme nous l'​avons vu plus haut, quatre colonnes sont affichées : 
 + 
 +   ''​%%PID%%''​ : représentant l'​identifiant du processus 
 +   ''​%%TTY%%''​ :​ le terminal dans lequel le processus s'​exécute (apparaît ''​%%?​%%''​ pour un processus qui n'a pas de terminal - généralement des processus de type service, également appelés processus démons , n'ont pas de terminal) 
 +   ''​%%TIME%%''​ : temps d'​exécution sur le CPU (en heures, minutes, secondes) 
 +   ''​%%CMD%%'' ​le nom de l'​image du processus (c'​est-à-dire le nom de l'​exécutable/​programme à partir duquel le processus a été créé) 
 + 
 +=== Identification d'un processus === 
 + 
 +''​%%PID%%''​ (//Process Id//) est l'​attribut essentiel du processus, un index qui identifie le processus au niveau du système. Un processus est identifié par son PID, et non par son nom d'​exécutable (''​%%CMD%%''​). Nous pouvons avoir plusieurs processus créés à partir du même exécutable,​ chaque processus ayant son propre PID ((Il est incorrect de dire "​processus bash"​ ;​ le bon est "un processus créé à partir du programme/​exécutable bash" ou "​processus avec PID XY" Cependant, nous utiliserons généralement l'​expression "​processus bash" car il ressort clairement du contexte de quel processus nous parlons. 
 +)). 
 + 
 +Pour vérifier plusieurs processus, nous allons créer plusieurs processus shell. Pour commencer, nous ouvrons plusieurs sessions de terminal, en utilisant, par exemple, ''​%%Alt+F2%%''​ dans l'​environnement graphique et en entrant la commande ''​%%gnome-terminal%%''​ dans l'​invite créée. Ensuite, nous ne visualisons que les processus créés à partir de l'​exécutable ''​%%bash%%''​ en exécutant la commande :​ 
 + 
 +<code bash> 
 +student@uso:​~$ ps -e | grep bash 
 + 2181 pts/1    00:00:00 bash 
 + 2194 pts/2    00:00:00 bash 
 + 2205 pts/3    00:00:00 bash 
 +14750 pts/0    00:00:00 bash 
 +14897 pts/4    00:00:00 bash 
 +</​code>​ 
 +On obtient un résultat comme ci-dessus. Il y a cinq processus, tous créés à partir de l'​exécutable ''​%%bash%%'',​ avec cinq PID différents :​ ''​%%2181%%'',​ ''​%%2194%%'',​ ''​%%2205 ''​ %%'',​ ''​%%14705%%'',​ ''​%%14879%%''​. 
 + 
 +=== Afficher les attributs d'un processus === 
 + 
 +Un processus a plus que les quatre attributs affichés dans une simple exécution de l'​utilitaire ''​%%ps%%''​. Pour afficher plus d'​attributs,​ nous utilisons l'​option ''​%%-f%%''​ (du //format complet//) ou l'​option ''​%%-F%%''​ (du //format extra complet// ), comme ci-dessous :​ 
 + 
 +<code bash> 
 +student@uso:​~$ ps -f 
 +UID        PID  PPID  C STIME TTY          TIME CMD 
 +student ​ 14897 14896  0 17:12 pts/4    00:00:00 -bash 
 +student ​ 15026 14897  0 17:46 pts/4    00:00:00 ps -f 
 + 
 +student@uso:​~$ ps -F 
 +UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD 
 +student ​ 14897 14896  0  6056  5136   0 17:12 pts/4    00:00:00 -bash 
 +student ​ 15027 14897  0  9728  3340   0 17:46 pts/4    00:00:00 ps -F 
 +</​code>​ 
 +Bien sûr, nous pouvons combiner ces options avec l'​option ''​%%-e%%'' ​pour afficher tous les processus :​ 
 + 
 +<code bash> 
 +student@uso:​~$ ps -ef 
 +UID        PID  PPID  C STIME TTY          TIME CMD 
 +root         ​1 ​    ​0 ​ 0 Aug18 ?        00:00:19 /​lib/​systemd/​systemd --system --deserialize 39 
 +root         ​2 ​    ​0 ​ 0 Aug18 ?        00:00:00 [kthreadd] 
 +root         ​4 ​    ​2 ​ 0 Aug18 ?        00:00:00 [kworker/​0:​0H] 
 +root         ​6 ​    ​2 ​ 0 Aug18 ?        00:00:00 [mm_percpu_wq] 
 +root         ​7 ​    ​2 ​ 0 Aug18 ?        00:00:09 [ksoftirqd/​0] 
 +root         ​8 ​    ​2 ​ 0 Aug18 ?        00:00:06 [rcu_sched] 
 +root         ​9 ​    ​2 ​ 0 Aug18 ?        00:00:00 [rcu_bh] 
 +root        10     ​2 ​ 0 Aug18 ?        00:00:00 [migration/​0] 
 +root        11     ​2 ​ 0 Aug18 ?        00:00:00 [watchdog/​0] 
 +[...] 
 +</​code>​ 
 +Les options ''​%%-f%%''​ et ''​%%-F%%''​ affichent ​également ​d'​autres attributs du processus, tels que : 
 + 
 +   * ''​%%UID%%''​ : le nom de l'utilisateur propriétaire du processus 
 +   ''​%%PPID%%''​ : identifiant du processus parent 
 +   ''​%%C%%''​ :​ pourcentage d'​occupation du processeur 
 +   ''​%%STIME%%''​ :​ heure de début (//heure de début//) 
 +   ''​%%RSS%%''​ :​ mémoire RAM occupée (//taille de l'​ensemble résident//​) 
 + 
 +De tels attributs sont utiles pour voir quels processus consomment le plus de ressources (par exemple CPU ou mémoire). 
 + 
 +==== Surveillance du processus ==== 
 + 
 +L'​utilitaire ''​%%ps%%''​ affiche les processus et leurs attributs ​à un instant donné, un //​instantané//​ des processus système. Souvent on s'​intéresse aussi à l'​évolution des processus dans le temps : évolution ​de la consommation des ressources, émergence ​de nouveaux processus. Autrement dit, pour surveiller les processus. La surveillance des processus consiste à obtenir périodiquement des informations sur les processus. 
 + 
 +Évidemment,​ un moyen simple de surveiller est d'​exécuter périodiquement ​l'utilitaire ''​%%ps%%''​. Il existe cependant des utilitaires dédiés à la surveillance. 
 + 
 +=== Surveillance en utilisant top === 
 + 
 +L'​utilitaire ''​%%top%%''​ est l'​utilitaire de surveillance de processus de base dans le monde Linux. C'est l'​équivalent du Gestionnaire des tâches de Windows. L'​exécution de ''​%%top%%''​ conduit à afficher, dans le terminal, les processus du système et à rafraîchir périodiquement les informations (par défaut ''​%%2%%''​ secondes). L'​image ci-dessous est une fenêtre de terminal exécutant ''​%%top%%''​ :​ 
 + 
 +{{:​uso:​laboratoare:​laborator-02:​top.png?​500|Le meilleur utilitaire}} 
 + 
 +''​%%top%%''​ affiche des informations périodiques sur les processus **et** sur l'​état du système : CPU, consommation de mémoire. A chaque période (par défaut ''​%%2%%''​ secondes) les informations affichées sont rafraîchies.
  
 <​notes>​ <​notes>​
-Nous en apprendrons plus sur les processus ​d'arrière-plan et de suspension ​dans ''​%%Arrêter ​les processus. ​Signaux%%''​.+La sortie de l'​utilitaire ''​%%top%%''​ se fait à l'aide de la touche ''​%%q%%''​((''​%%top%%''​ est un utilitaire interactif. C'​est-à-dire lors de son exécution l'​utilisateur peut interagir avec les processus ​ou modifier les informations affichées. Par exemple, l'utilisation ​de la touche ''​%%M%%'' ​dans une exécution ​''​%%top%%''​ affiche ​les processus ​triés par consommation de mémoireUn résumé des commandes interactives du ''​ %%top%%'' ​s'​obtient à l'aide de la touche ''​%%?​%%''​. 
 +)).
 </​note>​ </​note>​
  
-===== Démarrage ​des applications en ligne de commande =====+==== Arrêt ​des processus. Signaux ​====
  
-==== Démarrage ​des applications CLI à l'aide de la ligne de commande ====+=== Utiliser ​des signaux pour tuer les processus ​===
  
-Les applications CLI, également appelées utilitaires,​ sont conçues pour être démarrées et utilisées à partir ​de la ligne de commande. Nous appelons le plus souvent les applications en ligne de commande **utilitaires** ou simplement **commandes**. Nous écrivons le nom de l'​utilitaire / de la commande dans un terminal et l'​utilitaire sera démarré (contrairement au scénario d'​utilisation de ''​%%Alt+F2%%''​lorsque ​nous utilisons des applications CLI dans la ligne de commande, les messages seront Cela se produit parce que la ligne de commande signifie ​l'existence ​d'​un ​terminal où nous pouvons afficher les messages. +Pour terminer ​de force (tuer) ​un processus, nous utilisons des signaux. Un signal est une notification envoyée par l'utilisateur ou le système ​d'exploitation à un processusUn signal n'est pas nécessaire pour tuer le processus de réceptionmais c'​est ​le comportement le plus courant ​et la principale utilisation des signaux.
-)). Par exemplesi nous voulons afficher les utilisateurs présents dans le système, nous lançons une application de terminal ​et utilisons l'​utilitaire ''​%%who%%''​ :​+
  
-< code > +Pour envoyer un signal à un processus nous avons besoin de connaître son PID et nous utilisons l'​utilitaire ''​%%kill%%''​ suivi du PID du processus. Autrement dit, si nous démarrons un processus ''​%%sleep%%''​ dans un terminal en utilisant la commande ci-dessous :​ 
-étudiant@uso:​~$ ​qui + 
-étudiant :0 2020-09-04 17:42 (:0) +<​code ​bash
-étudiant pts/0 2020-09-19 15:57 (192.168.56.1)+student@uso:​~$ ​sleep 60
 </​code>​ </​code>​
-Ousi nous voulons voir combien de mémoire nous avons (disponible) dans le système, nous utilisons l'​utilitaire ​''​%%free%%''​ :​+dans un autre terminal, nous trouverons son PID (en utilisant ​''​%%pidof%%''​):
  
-< code > +<​code ​bash
-étudiant@uso:​~$ ​gratuit +student@uso:​~$ ​pidof sleep 
-               buff / cache partagé gratuit totalement utilisé disponible +9486
-Mémoire : 2040972 1025716 83824 32916 931432 794692 +
-Échange : 777300 37056 740244+
 </​code>​ </​code>​
-=== Exercices ​===+puis nous le tuerons (en utilisant ''​%%kill%%''​):​ 
 + 
 +<code bash> 
 +student@uso:​~$ kill -SIGKILL 9486 
 +</​code>​ 
 +La commande ''​%%kill%%''​ reçoit en argument le PID du processus à tuer, soit ''​%%9486%%''​. 
 + 
 +Nous vérifions à nouveau s'il existe un processus ''​%%sleep%%''​ utilisant ''​%%pidof%%''​ :​ 
 + 
 +<code bash> 
 +student@uso:​~$ pidof sleep 
 +student@uso:​~$ 
 +</​code>​ 
 +Nous voyons d'​après la sortie que le processus "​%%sleep%%"​ n'​existe plus, il a donc été tué. 
 + 
 +Dans le terminal initial, où j'ai exécuté la commande ''​%%sleep%%'',​ un message apparaît indiquant que le processus a été tué : 
 + 
 +<code bash> 
 +student@uso:​~$ sleep 60 
 +Killed 
 +</​code>​ 
 + 
 +=== Exercices :​ Arrêter les processus ​=== 
 + 
 +   * Démarrez trois processus ''​%%sleep%%''​ dans trois terminaux différents. Tuez-les tous avec une seule commande. Le PID du shell actuel peut être trouvé à l'aide de la commande :​ 
 + 
 +<code bash> 
 +student@uso:​~$ echo $$ 
 +9477 
 +</​code>​ 
 + 
 +   * Tuez le shell actuel. 
 +   * Démarrez une application ''​%%python%%''​. Démarrez une application ''​%%vim%%''​. Tuez ces processus en utilisant l'​utilitaire ''​%%kill%%''​.
  
-   - Démarrez l'​utilitaire ``%%ls%%''​ (liste ​de répertoires en ligne de commande (CLI)) à l'aide de la ligne de commande. +**Notes ​de bas de page**
-   - Lancer l'​utilitaire "​%%df%%"​ (depuis+
sde2/laboratoare/03_uso.1679932448.txt.gz · Last modified: 2023/03/27 18:54 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0