Comment utiliser la commande d’écran de Linux

Avec la commande d’écran Linux, vous pouvez pousser les applications de terminal en cours d’exécution vers l’arrière-plan et les faire avancer lorsque vous souhaitez les voir. Il prend également en charge les affichages en écran partagé et fonctionne sur les connexions SSH, même après la déconnexion et la reconnexion!

Qu’est-ce que la commande d’écran?

La commande screen est un multiplexeur terminal, et il regorge d’options. Dire qu’il peut faire beaucoup est le grand-père des euphémismes. La page de manuel s’étend sur plus de 4100 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 contenant un shell, à exécuter une commande, puis à pousser la fenêtre vers l’arrière-plan (appelé «détachement»). Lorsque vous voulez voir comment fonctionne votre processus, vous pouvez à nouveau ramener la fenêtre au premier plan («rattacher») et l’utiliser à nouveau. C’est idéal pour les processus longs que vous ne voulez pas interrompre accidentellement en fermant la fenêtre du terminal.
Une fois que vous avez une session d’écran en cours d’exécution, vous pouvez créer de nouvelles fenêtres et y exécuter d’autres processus. Vous pouvez facilement passer d’une fenêtre à l’autre pour suivre leur progression. Vous pouvez également diviser la fenêtre de votre terminal en zones verticales ou horizontales et afficher vos différentes fenêtres d’écran dans une seule fenêtre.
Vous pouvez vous connecter à une machine distante, démarrer une session d’écran 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 session d’écran entre deux connexions SSH différentes afin que deux personnes puissent voir la même chose, en temps réel.

Écran d’installation

Pour installer screen sur ubuntu, utilisez cette commande:

sudo apt-get install screen

le

Pour installer screen sur Manjaro, utilisez la commande suivante:

sudo pacman -Sy screen

le

Sur Fedora, vous tapez ce qui suit:

sudo dnf install screen

le

Premiers pas avec l’écran

Pour démarrer l’écran, tapez-le simplement comme indiqué ci-dessous et appuyez sur Entrée:

screen

le

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

le

Vous êtes laissé à l’invite de commande et rien ne semble s’être passé. Cependant, vous exécutez maintenant un shell dans un émulateur de terminal multiplexé. Pourquoi est-ce une bonne chose? Eh bien, commençons un processus qui va prendre beaucoup de temps. Nous téléchargerons le code source du dernier noyau Linux et le redirigerons 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

le latest_kernel.zip ”dans une fenêtre de terminal. ‘ width = ”646 ″ height =” 77 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

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

La sortie du latest_kernel.zip ”dans une fenêtre de terminal. ‘ width = ”646 ″ height =” 247 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

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

  Comment utiliser la commande which sous Linux

Le processus de téléchargement est toujours en cours, mais la fenêtre affichant le téléchargement est supprimée. Vous êtes renvoyé à la fenêtre du terminal à partir de laquelle vous avez lancé la session d’écran. Un message vous indique qu’une fenêtre d’écran intitulé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 le rattacher. Si vous l’oubliez, vous pouvez toujours utiliser l’option -ls (liste), comme indiqué ci-dessous, pour obtenir une liste des fenêtres détachées:

screen -ls

le

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

screen -r 23167

le

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

Une session d'écran rattachée a été restaurée dans la fenêtre du terminal.

Si c’est un processus qui va jusqu’à sa conclusion, il finira par s’achever. 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 quitter l’écran. Vous pouvez également appuyer sur Ctrl + A, puis K pour tuer de force une fenêtre.

Tapez la commande suivante:

exit

le

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

le

Utilisation des sessions d’écran nommées

Vous pouvez utiliser l’option -S (nom de session) pour nommer votre session d’écran. 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

le

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 que nous puissions utiliser un processus de longue durée comme exemple.

Nous tapons ce qui suit:

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

le bigfile.zip ”dans une fenêtre de terminal. ‘ width = ”646 ″ height =” 77 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

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 écran pour voir les détails de notre session détachée:

screen -ls

le

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

screen -r bigfile

le

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

Sortie de téléchargement Curl dans une session d'écran rattachée dans une fenêtre de terminal.

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

Utilisation de l’écran avec plusieurs fenêtres

Jusqu’à présent, 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 exécuterons quelques processus qui nous permettent de surveiller certains aspects de notre ordinateur.

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

screen -S monitor

le

À 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 les nouveaux messages). Cette volonté afficher les messages du tampon du noyau; les nouveaux messages apparaîtront au fur et à mesure qu’ils se produisent.

  Forcer Facebook à détecter les miniatures et les liens lors du partage d'une URL

Nous tapons ce qui suit:

dmesg -H -w

le

Les messages existants apparaissent. Nous ne sommes pas retournés à l’invite de commande car dmseg attend de nouveaux messages et les affichera dès leur arrivée.

le

Nous voulons exécuter une autre application, nous avons donc besoin d’une nouvelle fenêtre d’écran. Nous appuyons sur Ctrl + A, puis C pour créer une nouvelle fenêtre. Nous allons utiliser watch pour courir à plusieurs reprises vmstat, nous obtenons donc un affichage de l’utilisation de la mémoire virtuelle sur notre ordinateur.

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

watch vmstat

le

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

le

Nos deux processus sont maintenant en cours d’exécution. Pour sauter entre les fenêtres de l’écran, 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 accéder à la première fenêtre (celle de dmesg), nous appuyons sur Ctrl + A et 0.

Revenir à la

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

Revenir à la

C’est assez chouette! Nous pouvons appuyer sur Ctrl + A, puis D pour se détacher de cette session; nous pouvons rattacher plus tard. Les deux sessions seront toujours en cours d’exécution. Encore une fois, pour basculer entre les fenêtres, nous appuyons sur Ctrl + A et le numéro (0 ou 1) de la fenêtre vers laquelle nous voulons basculer.

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 limités à la taille de nos captures d’écran, donc nos fenêtres auront l’air un peu étroites.

Pour ce faire, nous pressons Ctrl + A, puis Shift + S (un «S» majuscule est requis).

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

UNE

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

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

le

Cela nous donne les deux sorties en direct dans une fenêtre partagé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 le restaurer avec les raccourcis clavier suivants:

Ctrl + A, S: divise la fenêtre horizontalement.
Ctrl + A, Tab: Déplacer vers la région inférieure.
Ctrl + A, 0: affiche 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 un shell dedans. La région inférieure affiche la nouvelle fenêtre et nous donne une invite de commande.

UNE

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

df

UNE

Quand nous voyons df en cours d’exécution, nous appuyons sur Ctrl + A et le caractère pipe (|). Cela divise la région inférieure verticalement. Nous appuyons sur Ctrl + A et Tab pour passer à la nouvelle région. Ensuite, nous appuyons sur Ctrl + A et 0 pour afficher la fenêtre dmesg.

  Comment dépanner le capteur de fréquence cardiaque de votre Apple Watch

UNE

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

Ctrl + A: va et vient entre les régions actuelles et précédentes.
Ctrl + A, Q: ferme toutes les régions sauf celle actuelle.
Ctrl + A, X: ferme la région actuelle.

Utilisation de l’écran via SSH

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

Faisons un SSH connexion à notre ordinateur à partir d’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]

le

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

screen -S ssh-geek

le

À des fins de démonstration, nous exécuterons en haut de la fenêtre d’écran, mais vous pouvez démarrer n’importe quel processus de longue durée ou sans fin.

Nous tapons ce qui suit:

top

le

Une fois que top est en cours d’exécution dans la fenêtre, nous appuyons sur Ctrl + A, puis D pour détacher la fenêtre.

le

Nous sommes revenus à la fenêtre du terminal distant d’origine.

L'utilisateur est revenu à sa fenêtre de terminal d'origine

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

exit

le

Nous tapons ce qui suit pour nous reconnecter:

ssh [email protected]

le

Une fois que nous sommes reconnectés et connectés, nous pouvons taper ce qui suit pour rattacher la session d’écran:

screen -r ssh-geek

le

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

le

C’est génial si vous souhaitez démarrer un processus sur une machine, puis reprendre là où vous vous êtes arrêté sur une autre.

Partager une session d’écran

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

Il taperait ce qui suit:

ssh [email protected]

le

Une fois connecté, il démarre une session d’écran appelée «ssh-geek» en utilisant l’option -S (nom de session). Il utilise également les options -d (détacher) et -m (création forcée) pour créer une nouvelle session d’écran déjà détachée.

Il tape ce qui suit:

screen -d -m -S ssh-geek

le

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

screen -X ssh-geek

le

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

ssh [email protected]

le

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

screen -X ssh-geek

le

Maintenant, tout ce que l’une ou l’autre personne type, l’autre verra. Par exemple, lorsqu’une personne émet la commande de date, elle la voit toutes les deux telle qu’elle est saisie, ainsi que sa sortie.

le

Sortie du

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

Pour un logiciel qui a vu le jour pour la première fois en 1987, screen offre toujours une bonne productivité. Se familiariser avec ce sera du temps bien dépensé!