Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Comment utiliser la commande screen de Linux

By admin on février 23, 2021

  • Dave McKay

    @TheGurkha

  • 27 mars 2020, 8 :00am EDT
Un terminal Linux sur un ordinateur portable avec d'autres sessions de terminal superposées derrière lui.
fatmawati achmad zaenuri/

Avec la commande Linux screen, vous pouvez pousser les applications de terminal en cours d’exécution à l’arrière-plan et les faire avancer lorsque vous voulez les voir. Elle prend également en charge les affichages sur écran partagé et fonctionne sur les connexions SSH, même après avoir été déconnectée et reconnectée !

Qu’est-ce que la commande screen ?

La commande screen est un multiplexeur de terminal, et elle est absolument bourrée d’options. Dire qu’elle peut faire beaucoup est la grand-mère des sous-entendus. La page de manuel compte plus de 4 100 lignes.

Voici les cas les plus courants dans lesquels vous utiliseriez la commande screen, et nous les aborderons plus en détail dans cet article :

  • L’opération standard consiste à créer une nouvelle fenêtre avec un shell dedans, à exécuter une commande, puis à pousser la fenêtre en arrière-plan (ce que l’on appelle  » détacher « ). Lorsque vous voulez voir comment votre processus se déroule, vous pouvez tirer la fenêtre au premier plan à nouveau (« reattach ») et l’utiliser à nouveau. C’est génial pour les longs processus que vous ne voulez pas terminer accidentellement en fermant la fenêtre du terminal.
  • Une fois que vous avez une screen session en cours d’exécution, vous pouvez créer de nouvelles fenêtres et exécuter d’autres processus dans celles-ci. Vous pouvez facilement sauter entre les fenêtres pour surveiller leur progression. Vous pouvez également diviser votre fenêtre de terminal en régions verticales ou horizontales, et afficher vos différentes screen fenêtres dans une seule fenêtre.
  • Vous pouvez vous connecter à une machine distante, démarrer une screen session, et lancer un processus. Vous pouvez vous déconnecter de l’hôte distant, vous reconnecter, et votre processus sera toujours en cours d’exécution.
  • Vous pouvez partager une screen session entre deux connexions SSH différentes afin que deux personnes puissent voir la même chose, en temps réel.

Installation de screen

Pour installer screen sur ubuntu, utilisez cette commande :

sudo apt-get install screen

La commande "sudo apt-get install screen" dans une fenêtre de terminal."sudo apt-get install screen" command in a terminal window.

Pour installer screen sur Manjaro, utilisez la commande suivante :

sudo pacman -Sy screen

La commande "sudo pacman -Sy screen" dans une fenêtre de terminal."sudo pacman -Sy screen" command in a terminal window.

Sur Fedora, vous tapez les éléments suivants :

sudo dnf install screen

La commande "sudo dnf install screen" dans une fenêtre de terminal."sudo dnf install screen" command in a terminal window.

Démarrer avec screen

Pour démarrer screen, il suffit de le taper comme indiqué ci-dessous et d’appuyer sur Entrée:

screen

La commande "screen" dans une fenêtre de terminal."screen" command in a terminal window.

Publicité

Vous verrez une page d’informations sur la licence. Vous pouvez appuyer sur la barre d’espacement pour lire la deuxième page ou sur Entrée pour revenir à l’invite de commande.

La commande "screen" informations sur la licence dans une fenêtre de terminal."screen" command license information in a terminal window.

Vous restez à l’invite de commande, et rien ne semble s’être passé. Cependant, vous exécutez maintenant un shell à l’intérieur d’un émulateur de terminal multiplexé. Pourquoi est-ce une bonne chose ? Eh bien, commençons un processus qui va prendre beaucoup de temps à se terminer. Nous allons télécharger le code source du dernier noyau Linux et le rediriger dans un fichier appelé latest_kernel.zip.

Pour ce faire, nous tapons ce qui suit :

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

La commande "curl latest_kernel.zip" dans une fenêtre de terminal."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Notre téléchargement commence, et la sortie curl nous montre la progression.

La sortie de la commande "curl latest_kernel.zip" dans une fenêtre de terminal."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Publicité

Nous ne pouvons pas vous montrer une image du bit suivant, car c’est une séquence de touches. Vous tapez Ctrl+A, vous relâchez ces touches, puis vous appuyez sur d pour détacher l’écran.

Le processus de téléchargement est toujours en cours mais la fenêtre montrant le téléchargement est supprimée. Vous êtes ramené à la fenêtre du terminal à partir de laquelle vous avez lancé la session screen. Un message vous indique qu’une fenêtre screen étiquetée 23167.pts-0.howtogeek a été détachée.

Vous avez besoin du numéro du début du nom de la fenêtre pour la rattacher. Si vous l’oubliez, vous pouvez toujours utiliser l’option -ls (liste), comme indiqué ci-dessous, pour obtenir la liste des fenêtres détachées :

screen -ls

La commande "screen -ls" dans une fenêtre de terminal."screen -ls" command in a terminal window.

Quand vous êtes prêt, vous pouvez utiliser l’option -r (rattacher) et le numéro de la session pour la rattacher, comme suit :

screen -r 23167

La commande "screen -3 23167" dans une fenêtre de terminal."screen -3 23167" command in a terminal window.

Publicité

La fenêtre qui travaillait en arrière-plan est maintenant ramenée dans votre fenêtre de terminal comme si elle n’était jamais partie.

Une session d'écran rattachée est restaurée dans la fenêtre de terminal.

S’il s’agit d’un processus qui va se dérouler jusqu’à sa conclusion, il finira par se terminer. S’il s’agit d’un processus continu, vous voudrez éventuellement y mettre fin. Dans tous les cas, lorsque le processus se termine, vous pouvez taper exit pour sortir de la screen. Vous pouvez également appuyer sur Ctrl+A, puis sur K pour tuer de force une fenêtre.

Tapez la commande suivante :

exit

La commande "exit" dans une fenêtre de terminal."exit" command in a terminal window.

Vous êtes ramené à votre fenêtre de terminal précédente, qui affichera toujours la commande que vous avez utilisée pour rattacher la fenêtre. Comme nous avons fermé notre seule et unique fenêtre détachée, nous obtenons un message indiquant que screen se termine.

Le message de terminaison de la commande "screen" dans une fenêtre de terminal."screen" command terminating message in a terminal window.

RELATED : Comment utiliser curl pour télécharger des fichiers à partir de la ligne de commande Linux

Utilisation de sessions écran nommées

Vous pouvez utiliser l’option -S (nom de session) pour nommer votre screen session. Si vous utilisez un nom mémorable plutôt que l’identité numérique de la session, il est plus pratique de se reconnecter à une session. Nous tapons ce qui suit pour nommer notre session « bigfile »:

screen -S bigfile

La commande "screen -S bigfile" dans une fenêtre de terminal."screen -S bigfile" command in a terminal window.

Publicité

Lorsque screen lance notre session, nous voyons une fenêtre vide avec une invite de commande. Nous allons télécharger un gros fichier, afin d’utiliser un processus long comme exemple.

Nous tapons ce qui suit :

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

La commande "curl bigfile.zip" dans une fenêtre de terminal."curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip" command in a terminal window.

Lorsque le téléchargement commence, nous appuyons sur Ctrl+A, puis sur D pour détacher la session. Nous tapons ce qui suit pour utiliser l’option -ls (liste) avec screen pour voir les détails de notre session détachée :

screen -ls

La commande "screen -ls" dans une fenêtre de terminal."screen -ls" command in a terminal window.

Derrière l’identifiant numérique (23266), nous voyons le nom de notre session (bigfile). Nous tapons ce qui suit, y compris le nom de la session, pour la rattacher :

screen -r bigfile

La commande "screen -r bigfile" dans une fenêtre de terminal."screen -r bigfile" command in a terminal window.

Nous sommes reconnectés à notre fenêtre de téléchargement et constatons que le long téléchargement est toujours en cours.

La sortie du téléchargement Curl dans une session écran rattachée dans une fenêtre de terminal.

Publicité

Quand le téléchargement est terminé, nous tapons exit pour fermer la fenêtre de session.

Utilisation de screen avec plusieurs fenêtres

Jusqu’ici, nous avons utilisé screen pour placer un seul processus en arrière-plan dans une fenêtre détachée. Cependant, screen est capable de faire bien plus que cela. Ensuite, nous allons exécuter quelques processus qui nous permettront de surveiller certains aspects de notre ordinateur.

Nous tapons ce qui suit pour démarrer une session d’écran appelée « monitor »:

screen -S monitor

La commande "screen -S monitor" dans une fenêtre de terminal."screen -S monitor" command in a terminal window.

À l’invite de commande de notre nouvelle session de fenêtre, nous lancerons dmesg et utiliserons les options -H (lisible par l’homme) et -w (attendre de nouveaux messages). Cela affichera les messages du tampon du noyau ; les nouveaux messages apparaîtront au fur et à mesure.

Nous tapons ce qui suit :

dmesg -H -w

La commande "dmesg -H -w" dans une fenêtre de terminal."dmesg -H -w" command in a terminal window.

Avertissement

Les messages existants apparaissent. Nous ne sommes pas renvoyés à l’invite de commande car dmseg attend les nouveaux messages et les affichera au fur et à mesure de leur arrivée.

La sortie "dmsesg" dans une fenêtre de terminal."dmsesg" output in a terminal window.

RELATED : Comment utiliser la commande dmesg sous Linux

Nous voulons exécuter une autre application, nous avons donc besoin d’une nouvelle screen fenêtre. Nous appuyons sur Ctrl+A, puis sur C pour créer une nouvelle fenêtre. Nous allons utiliser watch pour exécuter de manière répétée vmstat, afin d’obtenir un affichage fréquemment mis à jour de l’utilisation de la mémoire virtuelle sur notre ordinateur.

À la nouvelle invite de commande, nous tapons ce qui suit :

watch vmstat

La commande "watch vmstat" dans une fenêtre de terminal."watch vmstat" command in a terminal window.

La sortie vmstat apparaît et se met à jour toutes les deux secondes.

La sortie "vmstat" dans une fenêtre de terminal."vmstat" output in a terminal window.

Nos deux processus sont maintenant en cours d’exécution. Pour sauter entre les screen fenêtres, vous appuyez sur Ctrl+A, et le numéro de la fenêtre. La première que nous avons créée est la fenêtre zéro (0), la suivante est la fenêtre 1, et ainsi de suite. Pour sauter à la première fenêtre (la dmesg une), on appuie sur Ctrl+A et 0.

Retourner à l

Si nous appuyons sur Ctrl+A et 1, cela nous ramène à la fenêtre vmstat.

Retourner à l

Publicité

C’est plutôt astucieux ! Nous pouvons appuyer sur Ctrl+A, puis sur D pour nous détacher de cette session ; nous pourrons nous rattacher plus tard. Les deux sessions seront toujours en cours d’exécution. Encore une fois, pour passer d’une fenêtre à l’autre, nous appuyons sur Ctrl+A et sur le numéro (0 ou 1) de la fenêtre vers laquelle nous voulons passer.

Passons à l’étape suivante et visualisons les deux écrans dans une seule fenêtre. Lorsque vous faites cela, vous étirez votre fenêtre de terminal à une taille qui rend cette étape utile. Nos exemples sont contraints à la taille de nos captures d’écran, donc nos fenêtres auront l’air un peu à l’étroit.

Pour ce faire, nous appuyons sur Ctrl+A, puis sur Shift+S (un « S » majuscule est nécessaire).

La fenêtre se divise en deux « régions. »

Une session de fenêtre "écran" se divise en deux régions horizontales dans une fenêtre de terminal."screen" window session split into two horizontal regions in a terminal window.

La région supérieure affiche toujours vmstat, et la région inférieure est vide. Le curseur est mis en évidence dans la capture d’écran ci-dessous. Pour le déplacer vers la région inférieure, nous appuyons sur Ctrl+A, puis sur Tab.

Une session de fenêtre "écran" divisée en deux régions horizontales avec le curseur dans la région inférieure dans une fenêtre de terminal."screen" window session split into two horizontal regions with cursor in the bottom region in a terminal window.

Publicité

Le curseur se déplace vers la région inférieure, qui n’est en fait qu’un espace vide. Ce n’est pas un shell, donc on ne peut pas y taper quoi que ce soit. Pour obtenir un affichage utile, nous appuyons sur Ctrl+A, puis sur « 0 » pour afficher la fenêtre dmesg dans cette région.

La session "screen" avec un volet divisé horizontal montrant un processus différent dans chaque région dans une fenêtre de terminal."screen" session with a horizontal split pane showing a different process in each region in a terminal window.

Cela nous donne les deux sorties en direct dans une fenêtre divisée. Si nous appuyons sur Ctrl+A et D pour détacher la fenêtre, puis la rattacher, nous perdrons la vue du volet divisé. Cependant, nous pouvons la restaurer avec les raccourcis clavier suivants :

  • Ctrl+A, S : diviser la fenêtre horizontalement.
  • Ctrl+A, Tab : Se déplacer vers la région inférieure.
  • Ctrl+A, 0 : Afficher la fenêtre zéro dans la région inférieure.

Nous pouvons aller encore plus loin. Nous allons maintenant diviser le volet inférieur verticalement, et ajouter un troisième processus à l’affichage. Avec le curseur dans la région inférieure, nous appuyons sur Ctrl+A et C pour créer une nouvelle fenêtre avec une coquille dedans. La région inférieure affiche la nouvelle fenêtre et nous donne une invite de commande.

Une session "écran" avec un volet divisé horizontalement montrant une nouvelle fenêtre dans la région inférieure dans une fenêtre de terminal."screen" session with a horizontal split pane showing a new window in the lower region in a terminal window.

Suite, nous exécutons la commande df pour vérifier l’utilisation du système de fichiers :

df

Une session "écran" avec un volet divisé horizontalement, et "df" tapé dans la région inférieure dans une fenêtre de terminal."screen" session with a horizontal split pane, and "df" typed in the lower region in a terminal window.

Publicité

Lorsque nous voyons df s’exécuter, nous frappons Ctrl+A et le caractère pipe (|). Cela divise la région inférieure verticalement. Nous appuyons sur Ctrl+A et Tab pour nous déplacer vers la nouvelle région. Ensuite, nous appuyons sur Ctrl+A et 0 pour afficher la fenêtre dmesg.

Une session "écran" montrant trois volets dans une fenêtre de terminal."screen" session showing three panes in a terminal window.

Vous pouvez également vous déplacer d’une région à l’autre et ajouter d’autres divisions verticales ou horizontales. Voici quelques combinaisons de touches plus utiles:

  • Ctrl+A : Sauter en arrière et en avant entre la région actuelle et la précédente.
  • Ctrl+A, Q : Fermer toutes les régions sauf la région actuelle.
  • Ctrl+A, X : Fermer la région actuelle.

Utiliser l’écran sur SSH

Avec screen, vous pouvez démarrer une session de fenêtre, la détacher pour qu’elle soit toujours en cours d’exécution en arrière-plan, vous déconnecter ou vous reconnecter, et rattacher la session.

Etablissons une connexion SSH à notre ordinateur depuis un autre avec la commande ssh. Nous devons fournir le nom du compte avec lequel nous allons nous connecter et l’adresse de l’ordinateur distant.

Pour notre exemple, nous tapons ce qui suit :

ssh [email protected]

La commande "ssh dave@192.168.4.30" dans une fenêtre de terminal."ssh dave@192.168.4.30" command in a terminal window.

Publicité

Après nous être authentifiés sur l’ordinateur distant et nous être connectés, nous tapons ce qui suit pour démarrer une screen session appelée « ssh-geek » :

screen -S ssh-geek

La commande "screen -S ssh-geek" dans une fenêtre de terminal."screen -S ssh-geek" command in a terminal window.

Pour la démonstration, nous allons exécuter top dans la fenêtre screen, mais vous pourriez lancer n’importe quel processus long ou sans fin.

On tape ce qui suit :

top

La commande "top" dans une fenêtre de terminal."top" command in a terminal window.

Une fois que top s’exécute dans la fenêtre, on appuie sur Ctrl+A, puis sur D pour détacher la fenêtre.

Le processus "top" s

Nous sommes ramenés à la fenêtre de terminal initiale, distante.

L'utilisateur est renvoyé à sa fenêtre de terminal originale

Si nous tapons exit, comme indiqué ci-dessous, cela déconnecte la session SSH et nous sommes de retour sur notre ordinateur local :

exit

La commande "exit" dans une fenêtre de terminal."exit" command in a terminal window.

Nous tapons ce qui suit pour nous reconnecter :

ssh [email protected]

La commande "ssh dave@192.168.4.30" dans une fenêtre de terminal."ssh dave@192.168.4.30" command in a terminal window.

Publicité

Après avoir été reconnecté et connecté, nous pouvons taper ce qui suit pour rattacher la screen session :

screen -r ssh-geek

La commande "screen -r ssh-geek" dans une fenêtre de terminal."screen -r ssh-geek" command in a terminal window.

Nous sommes maintenant reconnectés à notre instance toujours en cours d’exécution de top.

Le processus "top" en cours d

C’est idéal si vous voulez lancer un processus sur une machine, puis reprendre là où vous vous êtes arrêté sur une autre.

RELATED : Comment créer et installer des clés SSH à partir du shell Linux

Partager une session d’écran

Vous pouvez également utiliser une screen session pour permettre à deux personnes de voir et d’interagir avec la même fenêtre. Imaginons qu’une personne exécutant Fedora sur son ordinateur souhaite se connecter à notre serveur Ubuntu.

Il taperait ce qui suit :

ssh [email protected]

La commande "ssh dave@192.168.4.30" dans une fenêtre de terminal."ssh dave@192.168.4.30" command in a terminal window.

Après s’être connecté, il lance une session d’écran appelée « ssh-geek » en utilisant l’option -S (nom de la session). Il utilise également les options -d (détacher) et -m (création forcée) pour créer une nouvelle screen session déjà détachée.

Il tape les éléments suivants :

screen -d -m -S ssh-geek

La commande "screen -d -m -S ssh-geek" dans une fenêtre de terminal."screen -d -m -S ssh-geek" command in a terminal window.

Publicité

Il tape ce qui suit, en utilisant l’option -X (mode multi-écran) pour attacher la session:

screen -X ssh-geek

La commande "screen -X ssh-geek" dans une fenêtre de terminal."screen -X ssh-geek" command in a terminal window.

Sur un ordinateur Manjaro, une autre personne se connecte à l’ordinateur Ubuntu avec les mêmes identifiants de compte, comme indiqué ci-dessous :

ssh [email protected]

La commande "ssh dave@192.168.4.1" dans une fenêtre de terminal."ssh dave@192.168.4.1" command in a terminal window.

Une fois connectée, elle tape la commande screen et utilise l’option -X (mode multi-écran) pour rejoindre la même session de fenêtre, comme suit :

screen -X ssh-geek

La commande "screen -X ssh-geek" dans une fenêtre de terminal."screen -X ssh-geek" command in a terminal window.

Maintenant, tout ce que l’une des deux personnes tape, l’autre le verra. Par exemple, lorsqu’une personne émet la commande « date », elles la voient toutes deux telle qu’elle est tapée, ainsi que sa sortie.

La commande "date" dans une fenêtre de terminal."date" command in a terminal window.

Sortie de la commande "date" dans une fenêtre de terminal."date" command in a terminal window.

Publicité

Les deux personnes partagent désormais une session screen qui s’exécute sur un ordinateur Ubuntu distant.

Pour un logiciel qui a vu le jour en 1987, screen fait toujours le poids en termes de productivité. Se familiariser avec lui sera du temps bien dépensé !

RELATED : 37 Commandes Linux importantes que vous devez connaître

Dave McKay
Dave McKay a d’abord utilisé des ordinateurs lorsque le ruban de papier perforé était en vogue, et il n’a cessé de programmer depuis. Après plus de 30 ans dans l’industrie informatique, il est maintenant journaliste technologique à plein temps. Au cours de sa carrière, il a travaillé comme programmeur indépendant, responsable d’une équipe internationale de développement de logiciels, chef de projet de services informatiques et, plus récemment, comme responsable de la protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire la bio complète  »

Navigation de l’article

Pourquoi mes suppléments me donnent-ils la nausée?
Qu’est-ce que le mal d’altitude ?

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents

  • Firebush (Français)
  • 9 Meilleures vitamines et suppléments pour chiens pour une santé améliorée
  • Prévision des taux des CD pour 2021 : Les taux resteront probablement bas, mais ils pourraient augmenter plus tard dans l’année
  • Comment structurer la documentation du système de management de la qualité
  • Douleur pelvienne chronique et prostatite : symptômes, diagnostic et traitement
  • Croustillant aux baies mélangées
  • Recette de pudding au chocolat à faible teneur en glucides
  • Jeux et activités sains pour les enfants | Informatique en ligne de l’UIC
  • Wheat Ales (American)
  • Les bienfaits de l’allaitement maternel au-delà d’un an

Méta

  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Archives

  • mars 2021
  • février 2021
  • janvier 2021
  • décembre 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com