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