Attacher et détacher un terminal avec la commande screen

I. Présentation

Sous Linux, la commande "screen" permet de gérer plusieurs terminaux à la manière des fenêtres dans un environnement graphique. On peut donc créer une nouvelle session (un screen) contenant un terminal, puis un second et nous allons pouvoir passer de l'un à l'autre en nous détachant à l'un puis en nous rattachant à l'autre.

tux-wallpaper5678

L'intérêt premier de screen dans le monde du sysadmin est le suivant : il est possible de créer un "screen", puis de s'y détacher, et cette opération ne coupe pas les opérations en cours, cela même si l'utilisateur ayant lancé le screen en question se déconnecte.

Cela est également pratique pour gérer les applications qui ne rendent pas la main à l'utilisateur lors de leur exécution. Par exemple des scripts qui mettent du temps à s’exécuter ou des applications plus complexes.

Pour la suite du tutoriel, considérez un "screen" comme un simple shell ou une session lancé et duquel on peut se détacher, puis se rattacher, à la manière dont on change de fenêtre dans un environnement graphique.

Voyons comment installer et utiliser screen dans la suite de cet article

II. Installation de screen

Rien de plus simple, sous CentOS/Fedora :

yum install screen

Sous Debian/Ubuntu :

apt-get install screen

Une fois installée, la commande "screen" est disponible.

III. Utilisation de la commande "screen"

Nous allons donc créer une sorte de "terminal virtuel" qui pourra continuer à tourner même lorsque nous l'aurons quitté, nous pourrons ensuite reprendre la main sur ce terminal.

Depuis notre terminal, créons une session nommée "TEST01" avec l'option "-S" de la commande screen :

screen -S TEST01

Nous pouvons voir qu'une nouvelle session est apparue, nous pouvons donc réaliser nos exécutions et saisir nos commandes comme d'habitude. Une fois que nous souhaitons laisser l'exécution faire son chemin (par exemple lors d'un téléchargement ou d'une longue installation), il nous suffit de nous détacher de celle-ci pour la reprendre plus tard, pour cela, saisir la combinaison de touche suivante :

Ctrl + a
 puis "d"

Nous sommes donc revenu sur notre terminal initial, mais constatez que notre session "screen" est toujours en vie en listant les sessions disponibles avec la commande suivante :

screen -ls

Voici un retour possible de cette commande :

command-screen-linux

Dans la capture d'écran faite pour le tutoriel, nous voyons que plusieurs sessions sont actives, deux sessions sont disponibles, celles-ci sont marquées comme "Detached", car personne n'est actif dessus. La session "TEST01" est elle déjà attachée, un utilisateur est donc actif sur celle-ci.

Pour nous rattacher à une session, il suffit d’utiliser l'option "-r" de la commande screen, puis de saisir l'identifiant ou le nom de la session, par exemple :

screen -r TEST02

ou via l'identifiant

screen -r 2166

Pour fermer une session, comme d'habitude, il suffit d'utiliser la commande "exit" pendant que nous sommes attaché à celle-ci. Dés lors, nous reviendrons à notre terminal initial et la session ne sera plus listée lors de l'affichage des sessions screen actives.

Bien entendu, il est possible de gérer ainsi plusieurs sessions avec la commande screen. Également, je vous encourage à constater par vous même le fait que si l'utilisateur se déconnecte de sa session TTY, il retrouve ses sessions screen une fois qu'il se reconnecte, idéal une fois encore lorsqu'il s'agit de traitements longs qui ne rendent pas la main à l'utilisateur avant la fin de leur exécution.

Également, ce procédé est pratique lorsqu'il s'agit de venir en aide lors d'un dépannage sur une autre machine. Il est possible de se passer une session sans avoir a fermer celles-ci.

La commande "screen" dispose d'autres options que je n'explore pas ici. Quoi qu'il en soit je vous encourage à tester cette commande ! 🙂

N'hésitez pas à partager vos questions et vos avis dans les commentaires.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

4 thoughts on “Attacher et détacher un terminal avec la commande screen

  • Effectivement, un bien bel outil très pratique. Fini les coupures réseaux qui nous font perdre l’avancée d’une sauvegarde rsync. Il suffit maintenant de se rattacher à notre screen et ça repart. (ça n’aura même jamais arrêté)

    Il ne faut par contre pas oublier de lancer screen d’abord bien sûr 😉

    Répondre
  • Le plus intéressant est de pouvoir lancer une commande dans une session screen sans qu’elle soit attachée :

    screen -X « nom_session » « commande_a_lancer_dans_la_session_screen »

    Répondre
  • Pour lancer une commande dans un screen qui se terminera à la fin de l’exécution de la commande :

    screen -mdS nom_du_screen votre commande

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.