Cookie

La commande “écran” pour émuler plusieurs sessions shell

Publié par TheJoe sur

Temps de lecture estimé: 4 minutes

Attention


Cet article a été publié il y a plus d'un an, il peut y avoir des développements été.
S'il vous plaît prendre en compte.

Aujourd'hui, nous voyons comment utiliser screen.

J'ai récemment dû exécuter des commandes qui s'attendaient à une très longue durée sur un serveur distant. Dans mon dernier article, par exemple,, J'ai décrit comment transférer des données entre un ancien NAS et un NAS moderne via FTP. Dans ce cas j'ai utilisé wget avec le sujet -b mettre le processus en arrière-plan afin que je puisse déconnecter la session ssh et que le processus se poursuive jusqu'à la fin.

Pour mettre même un processus très long en arrière-plan, ajoutez simplement un & à la fin de la commande. Malheureusement, je suis très négligent et je m'attends souvent à ce que la commande renvoie la sortie dans un court laps de temps, alors qu'en réalité je me rends compte que j'aurais gagné du temps en mettant le caractère maudit en bas de la commande. Un exemple?

~# updatedb &

Au lieu de cela, nous voulons parler des fois où nous avons exécuté le même type de commande, mais ensuite la connexion s'est effondrée pour les causes les plus disparates? Qui n'a pas?

Heureusement ça existe screen qui fait ça et bien plus encore… et maintenant nous verrons.

Screen est capable de gérer une infinité de fenêtres de terminaux virtuels en une seule session. Cela signifie qu'ayant à exécuter plusieurs commandes sur une machine distante, nous n'aurons pas à ouvrir une connexion SSH pour chaque commande que nous exécutons. En une session, nous avons des possibilités infinies “les fenêtres” sessions virtuelles et sans fin.

Les processus d'écran restent actifs même lorsque nous fermons la session principale, sauf si nous les résilions volontairement. Cela signifie qu'en cas de déconnexion accidentelle, le processus se poursuivra jusqu'à la fin et nous pourrons nous reconnecter à la session abandonnée sans douleur..

L'installation

Screen est préinstallé sur toutes les principales distributions. Vérifiez que vous l'avez dans vos colis.

~# screen --version
Screen version 4.08.00 (GNU) 05-Feb-20

Pour les architectures basées sur apt:

~# apt install screen

Pour les architectures basées sur rpm:

~# yum install screen

Écran de démarrage

Pour démarrer une session d'écran, tapez simplement screen dans une console.

~$ screen

Cette commande créera une session d'écran, créera une nouvelle fenêtre virtuelle dans la session et démarrera un shell dans cette fenêtre.

Maintenant que nous avons démarré la session, nous pouvons trouver une liste de commandes en tapant: Ctrl + a ?.

Ed Ecco l'sortie:

                           Command key:  ^A   Literal ^A:  a

    break       ^B b           license     ,              removebuf   =         
    clear       C              lockscreen  ^X x           reset       Z         
    colon       :              log         H              screen      ^C c      
    copy        ^[ [           login       L              select      '         
    detach      ^D d           meta        a              silence     _         
    digraph     ^V             monitor     M              split       S         
    displays    *              next        ^@ ^N sp n     suspend     ^Z z      
    dumptermcap .              number      N              time        ^T t      
    fit         F              only        Q              title       A         
    flow        ^F f           other       ^A             vbell       ^G        
    focus       ^I             pow_break   B              version     v         
    hardcopy    h              pow_detach  D              width       W         
    help        ?              prev        ^H ^P p ^?     windows     ^W w      
    history     { }            quit        \              wrap        ^R r      
    info        i              readbuf     <              writebuf    >         
    kill        K k            redisplay   ^L l           xoff        ^S s      
    lastmsg     ^M m           remove      X              xon         ^Q q      

^]   paste .
"    windowlist -b
-    select -
0    select 0
1    select 1
2    select 2
3    select 3
4    select 4
5    select 5
6    select 6
7    select 7
8    select 8
9    select 9
I    login on
O    login off
]    paste .
|    split -v
:kB: focus prev

Donner un nom à une session

Une session renommée est pratique lorsque nous devons la rappeler. Par exemple en renommant une session “wget_debian” nous saurons d'un coup d'œil en regardant la liste des sessions actives que dans cette session nous avons lancé le téléchargement ISO de Debian.

~$ screen -S wget_debian

Familiarisez-vous avec les fenêtres d'écran

Lorsque vous démarrez une session screen crée une fenêtre virtuelle avec un shell à l'intérieur.

Regardez ici:  Supprimer le silence au début et à la fin d'un fichier audio avec SOX

Les fenêtres d'écran ne doivent pas être confondues avec les sessions. Une fenêtre (toutes les fenêtres que vous voulez) est contenu dans une session, à partir duquel vous pouvez vous déconnecter sans que cela ne mette fin aux processus contenus.

Vous pouvez avoir plusieurs fenêtres dans une session d'écran.

Pour créer un nouveau type de fenêtre virtuelle Ctrl+a c et le premier numéro de 0 une 9 sera attribué.

Voici quelques-unes des commandes les plus courantes pour gérer les fenêtres d'écran:

  • Ctrl + a c Créer une nouvelle fenêtre
  • Ctrl + a " Afficher une liste de fenêtres
  • Ctrl + a 0 (zéro) Passer à la fenêtre “0” (remplaçant “0” avec le numéro relatif à la fenêtre souhaitée
  • Ctrl + a A Renommer la fenêtre courante
  • Ctrl + a S Divise la partie de l'écran horizontalement
  • Ctrl + a | Divise la partie de l'écran verticalement
  • Ctrl + a tab Déplacer le focus vers la région suivante
  • Ctrl + a Ctrl + a Passer de la fenêtre précédente à la suivante
  • Ctrl + a Q Fermer toutes les régions
  • Ctrl + a X Fermer la région actuelle

Débrancher (détacher) votre terminal depuis la session en cours

Un plus, comme déjà dit, est de pouvoir continuer à travailler en laissant les sessions d'écran fonctionner en arrière-plan, tandis que l'utilisateur peut travailler sur autre chose.

Ctrl + a d

Se reconnecter (CV) votre terminal à une session

Pour rétablir la connexion avec une session abandonnée:

~$ screen -r

S'il y a plusieurs sessions sur une seule machine, vous devrez également ajouter l'ID de session après l'argument -r.

Pour trouver l'ID de la session à laquelle se reconnecter, utilisez la commande suivante:

~$ screen -ls
There are screens on:
13871.pts-3.joe-toshiba (29/11/2022 11:59:39) (Detached)
13836.pts-3.joe-toshiba (29/11/2022 11:59:20) (Detached)
13811.pts-3.joe-toshiba (29/11/2022 11:58:49) (Detached)
3 Sockets in /run/screen/S-joe.

Si nous voulons revenir à la session 13836.pts-3 nous tapons la commande:

~$ screen -r 13836

Conclusions

Aujourd'hui, nous avons appris à utiliser l'écran pour créer plusieurs fenêtres à partir d'une seule session, naviguer entre les fenêtres et se déconnecter et se reconnecter aux différentes sessions… mais il y a beaucoup plus à apprendre mon écran.


TheJoe

Je garde ce blog comme un hobby par 2009. Je suis passionné de graphisme, la technologie, logiciel Open Source. Parmi mes articles ne sera pas difficile de trouver de la musique, et quelques réflexions personnelles, mais je préfère la ligne directe du blog principalement à la technologie. Pour plus d'informations me contacter.

0 commentaires

Laisser un commentaire

Espace réservé d'avatar

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *

Ce site utilise Akismet pour réduire le spam. Découvrez comment vos données de commentaire est traité.