GNU/Linux >> Tutoriels Linux >  >> Linux

Exemples de commandes d'écran pour gérer plusieurs sessions de terminal

Dans ce guide, nous verrons ce qu'est GNU Screen et l'utilisation de base de la commande Screen avec des exemples dans les systèmes d'exploitation Linux et Unix.

Qu'est-ce que l'écran GNU ?

Écran GNU est un multiplexeur de terminal (gestionnaire de fenêtres). Comme son nom l'indique, Screen multiplexe le terminal physique entre plusieurs shells interactifs, afin que nous puissions effectuer différentes tâches dans chaque session de terminal.

Toutes les sessions d'écran exécutent leurs programmes de manière totalement indépendante. Ainsi, un programme ou un processus s'exécutant à l'intérieur d'une session screen continuera à s'exécuter même si la session est accidentellement fermée ou déconnectée.

Par exemple, lors de la mise à niveau d'Ubuntu serveur via SSH, la commande Screen continuera à exécuter le processus de mise à niveau au cas où votre session SSH serait interrompue pour une raison quelconque.

L'écran GNU nous permet de créer facilement plusieurs sessions d'écran, de basculer entre différentes sessions, de copier du texte entre les sessions, d'attacher ou de détacher d'une session à tout moment, etc.

GNU Screen est l'un des outils de ligne de commande importants que tous les administrateurs Linux devraient apprendre et utiliser chaque fois que nécessaire.

Voyons comment gérer plusieurs sessions Terminal à l'aide de la commande Screen avec des exemples sous Linux.

Installer l'écran GNU sous Linux

GNU Screen est disponible dans les dépôts par défaut de la plupart des systèmes d'exploitation Linux.

Pour installer GNU Screen sur Arch Linux, EndeavourOS, Manjaro Linux, exécutez :

$ sudo pacman -S screen

Sur Debian, Ubuntu, Linux Mint :

$ sudo apt-get install screen

Sur Fedora, RHEL, CentOS. AlmaLinux, Rocky Linux :

$ sudo dnf install screen

Ou,

$ sudo yum install screen

Sur CentOS 8, Screen n'est pas disponible dans les dépôts officiels. Vous devez donc activer [EPEL] référentiel, puis installez l'écran.

$ sudo dnf install epel-release
$ sudo dnf install screen

Sur SUSE/openSUSE :

$ sudo zypper install screen

Allons-y et voyons quelques exemples de commandes d'écran.

Exemples de commandes d'écran

Le raccourci de préfixe par défaut pour toutes les commandes dans Screen est Ctrl+a . Vous devez beaucoup utiliser ce raccourci lorsque vous utilisez Screen. Alors, n'oubliez pas ce raccourci clavier.

Créer une nouvelle session Screen

Créons une nouvelle session Screen et attachons-la. Pour cela, tapez la commande suivante dans le terminal :

screen

Maintenant, exécutez n'importe quel programme ou processus dans cette session. Le processus ou le programme en cours d'exécution continuera de s'exécuter même si vous êtes déconnecté de cette session.

Se détacher des sessions Screen

Pour vous détacher de l'intérieur d'une session d'écran, appuyez sur Ctrl+a et d . Vous n'êtes pas obligé d'appuyer sur les deux combinaisons de touches en même temps. Appuyez d'abord sur Ctrl+a puis appuyez sur d . Après vous être détaché d'une session, vous verrez une sortie comme ci-dessous.

[detached from 29149.pts-0.sk]

Ici, 29149 est l'ID d'écran et pts-0.sk est le nom de la session d'écran. Vous pouvez attacher, détacher et tuer des sessions Screen en utilisant soit l'ID d'écran, soit le nom de la session respective.

Créer une session nommée

Vous pouvez également créer une session d'écran avec n'importe quel nom personnalisé de votre choix autre que le nom d'utilisateur par défaut comme ci-dessous.

screen -S ostechnix

La commande ci-dessus créera une nouvelle session d'écran avec le nom "xxxxx.ostechnix" et attachez-le immédiatement. Pour vous détacher de la session en cours, appuyez sur Ctrl+a suivi de d .

Nommer les sessions d'écran peut être utile lorsque vous souhaitez trouver quels processus s'exécutent sur quelles sessions. Par exemple, lorsqu'une pile LAMP de configuration dans une session, vous pouvez simplement la nommer comme ci-dessous.

screen -S lampstack

Créer des sessions détachées

Parfois, vous souhaiterez peut-être créer une session, mais ne souhaitez pas l'attacher automatiquement. Dans de tels cas, exécutez la commande suivante pour créer une session détachée nommée "senthil" :

screen -S senthil -d -m

Ou, brièvement :

screen -dmS senthil

La commande ci-dessus créera une session appelée "senthil", mais ne s'y attachera pas.

Répertorier les sessions d'écran

Pour répertorier toutes les sessions en cours d'exécution (attachées ou détachées), exécutez :

screen -ls

Exemple de sortie :

There are screens on:
    29700.senthil   (Detached)
    29415.ostechnix (Detached)
    29149.pts-0.sk  (Detached)
3 Sockets in /run/screens/S-sk.

Comme vous pouvez le voir, j'ai trois sessions de course et toutes sont détachées.

S'il n'y avait pas de sessions d'écran en cours d'exécution, vous obtiendrez une sortie comme ci-dessous.

No Sockets found in /run/screen/S-sk.

Joindre aux sessions Screen

Si vous souhaitez vous attacher à une session à tout moment, par exemple 29415.ostechnix , lancez simplement :

screen -r 29415.ostechnix

Ou,

screen -r ostechnix

Ou utilisez simplement l'identifiant de l'écran :

screen -r 29415

Pour vérifier si nous sommes attachés à la session susmentionnée, il vous suffit de lister les sessions ouvertes et de vérifier.

screen -ls

Exemple de sortie :

There are screens on:
        29700.senthil   (Detached)
        29415.ostechnix (Attached)
        29149.pts-0.sk  (Detached)
3 Sockets in /run/screens/S-sk.

Comme vous le voyez dans la sortie ci-dessus, nous sommes actuellement attachés à 29415.ostechnix session. Pour quitter la session en cours, appuyez sur ctrl+a, d.

Créer des sessions imbriquées

Lorsque nous exécutons la commande "screen", cela créera une seule session pour nous. Nous pouvons cependant créer des sessions imbriquées (une session dans une session).

Tout d'abord, créez une nouvelle session ou attachez-la à une session ouverte. Je vais créer une nouvelle session nommée "imbriquée".

screen -S nested

Maintenant, appuyez sur Ctrl+a et c à l'intérieur de la session pour créer une autre session. Répétez simplement cette opération pour créer un nombre quelconque de sessions Screen imbriquées. Chaque séance se verra attribuer un numéro. Le nombre commencera à partir de 0 .

Vous pouvez passer à la session suivante en appuyant sur Ctrl+n et passer au précédent en appuyant sur Ctrl+p .

Voici la liste des raccourcis clavier importants pour gérer les sessions imbriquées.

  • Ctrl+a ” -  Lister toutes les sessions
  • Ctrl+a 0 - Passer à la session numéro 0
  • Ctrl+an - Passer à la session suivante
  • Ctrl+ap - Revenir à la session précédente
  • Ctrl+a S - Diviser la région actuelle horizontalement en deux régions
  • Ctrl+al - Diviser la région actuelle verticalement en deux régions
  • Ctrl+a Q - Fermer toutes les sessions sauf celle en cours
  • Ctrl+a X - Fermer la session en cours
  • Ctrl+a \ - Arrêtez toutes les sessions et terminez l'écran
  • Ctrl+a ? - Afficher les raccourcis clavier. Pour quitter cela, appuyez sur ENTER.

Verrouiller les sessions

L'écran a une option pour verrouiller une session d'écran. Pour ce faire, appuyez sur Ctrl+a et x . Entrez votre mot de passe Linux pour verrouiller l'écran.

Screen used by sk <sk> on ubuntuserver.
Password:

Sessions d'enregistrement

Vous voudrez peut-être tout enregistrer lorsque vous êtes dans une session Screen. Pour ce faire, appuyez simplement sur Ctrl+a et H .

Alternativement, vous pouvez activer la journalisation lors du démarrage d'une nouvelle session en utilisant -L paramètre.

screen -L

À partir de maintenant, toutes les activités que vous avez effectuées dans la session seront enregistrées et stockées dans un fichier nommé screenlog.x dans votre répertoire $HOME. Ici, x est un nombre.

Vous pouvez afficher le contenu du fichier journal en utilisant cat commande ou toute application de visualisation de texte.

Suggestion de lecture :

  • Comment enregistrer tout ce que vous faites dans le terminal

Sessions d'écran de démarrage automatique

Le démarrage automatique des sessions Screen aidera grandement lors de l'exécution d'un long processus via SSH. Si vous avez perdu la connectivité réseau pour une raison quelconque, le processus continuera de s'exécuter dans la session Screen du système distant et vous pourrez vous y connecter à nouveau lorsque le réseau reviendra en ligne. Pour savoir comment démarrer automatiquement un écran au démarrage du système, consultez le lien suivant.

  • Comment démarrer automatiquement une session d'écran sous Linux lors de la connexion

Vérifiez si vous êtes une session Screen ou non

Comme vous l'avez peut-être remarqué, la session normale et la session Screen seront exactement les mêmes. Vous ne verrez aucune indication évidente si vous êtes dans la session Screen ou dans la session normale. Pour savoir si vous êtes en session Screen ou non, suivez les étapes indiquées dans le lien ci-dessous.

  • Comment vérifier si vous êtes en session écran ou pas sous Linux

Séances d'écran d'arrêt

Si une session n'est plus nécessaire, tuez-la simplement. Pour tuer une session détachée nommée "senthil":

screen -r senthil -X quit

Ou,

screen -X -S senthil quit

Ou,

screen -X -S 29415 quit

S'il n'y a pas de sessions ouvertes, vous verrez la sortie suivante :

$ screen -ls
No Sockets found in /run/screens/S-sk.

Pour plus de détails, consultez les pages de manuel.

$ man screen

Il existe également un utilitaire de ligne de commande similaire nommé "Tmux" qui fait le même travail que GNU Screen. Pour en savoir plus, consultez le guide suivant.

  • Exemples de commandes Tmux pour gérer plusieurs sessions de terminal

Linux
  1. Partage de sessions de terminal Linux avec Tmux et Screen

  2. Utiliser la commande Screen pour gérer les sessions de terminal dans Ubuntu 20.04

  3. 7 Exemples de commandes Linux df

  4. 8 Exemples de commandes Linux TR

  5. Exemples de commande diskutil du terminal Mac

Comment utiliser Screen Command sur Linux pour gérer les terminaux

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

15 exemples de commande Linux sfdisk pour gérer les partitions de disque

Exemples de commandes d'écran :prendre le contrôle du terminal Linux/Unix

Exemples de commandes ip pour gérer la mise en réseau sous Linux

ClusterSSH(cssh) – Gérer plusieurs sessions SSH sous Linux