Chapitre 8. Les screens

1. Le concept
2. Installer et utiliser

1. Le concept

Le problème à résoudre est le suivant : vous avez lancé sur votre système un programme qui fonctionne en mode console (un client IRC par exemple). Vous voulez vous délogguer en laissant tourner le programme... et pouvoir vous relogguer plus tard (en local ou à distance) et récupérer le programme à l'écran.

Pour cela, il faut lancer le programme dans un screen, qui est une sorte écran virtuel que l'on peut détacher et rattacher :

  1. vous ouvrez un screen,

  2. vous lancez le programme dedans,

  3. si vous voulez vous délogguer et laisser tourner le programme, vous détachez le screen,

  4. vous pouvez rattacher le screen et donc retrouver le programme depuis n'importe quelle connexion au système (console locale ou accès distant).

2. Installer et utiliser

2.1. Installer le paquet

# aptitude install screen

Nous allons prendre l'exemple de 2 scénarios pour expliquer comment ça fonctionne :

2.2. 1er scénario

  1. Depuis un premier ordinateur, ouvrez un screen depuis une console locale en lui donnant un nom. Pour cela, tapez la commande :

    % screen -S nom_du_screen
    

    Un message d'explication apparaît : appuyez sur Entrée pour le zapper. Vous avez alors un prompt normal à l'intérieur du screen. Lancez une application qui tourne en mode console (un client IRC par exemple).

  2. Quittez le premier ordinateur en laissant le programme tourner et votre console ouverte (on dit que le screen reste attaché). Vous ouvrez une console sur un deuxième ordinateur et vous vous connectez au premier ordinateur (par une connexion SSH par exemple). Pour rattacher le screen, c'est-à-dire retrouver à l'écran le programme que vous avez lançé dans le screen sur le premier ordinateur, tapez la commande :

    % screen -x nom_du_screen
    

    Si vous ne vous souvenez plus du nom que vous aviez donné à votre screen, lancer simplement la commande screen -x et vous verrez la liste des screens avec leurs noms associés.

  3. Si la taille de votre console sur le deuxième ordinateur n'est pas la même que la taille de votre console sur le premier ordinateur, ce qui se traduit par un programme qui occupe plus ou moins de place que la taille de l'écran : utilisez alors la combinaison de touches Ctrl-a puis F, ce qui a pour effet de redimensionner le programme à la taille de votre nouvelle console.

  4. Vous voulez quitter le deuxième ordinateur : détachez le screen par la combinaison de touches Ctrl-a puis d. Le message suivant apparaît sur la console :

    [detached]
    

    et vous pouvez vous délogguer du deuxième ordinateur.

  5. Vous revenez sur le premier ordinateur et vous retrouvez votre console avec le programme qui tourne à l'intérieur. Si vous avez redimensionné le programme sur le deuxième ordinateur, vous devrez le redimensionner à nouveau avec la même combinaison de touches pour le remettre aux dimensions de votre console initiale.

  6. Vous voulez quitter le programme qui ne vous sert plus : quittez le programme normalement puis fermez le screen en faisant comme si vous vous délogguiez (combinaison de touches Ctrl-d ou commande logout). Le message suivant s'affiche sur la console :

    [screen is terminating]
    

2.3. 2ème scénario

  1. Depuis un premier ordinateur, vous vous connectez à distance sur un deuxième ordinateur. Vous voulez lancer un programme sur ce deuxième ordinateur et pouvoir le récupérer quand vous voulez et depuis n'importe quel ordinateur. Pour cela, lancez le programme dans un screen : pour faire d'une pierre deux coups, c'est à dire ouvrir le screen et lancer le programme en même temps, tapez :

    % screen -S nom_du_screen commande_qui_lance_le_programme
    
  2. Vous voulez vous délogguer du premier ordinateur : détachez le screen avec la combinaison de touches Ctrl-a puis d, déconnectez-vous du deuxième ordinateur puis délogguez-vous du premier ordinateur.

  3. Vous voulez retrouver le programme que vous aviez lançé dans le screen : logguez-vous en local sur le deuxième ordinateur ou connectez-vous sur le deuxième ordinateur à distance depuis un autre ordinateur et tapez la commande suivante pour rattacher le screen que vous aviez détaché :

    % screen -r nom_du_screen
    

    Si vous ne vous souvenez plus du nom que vous aviez donné à votre screen, lancez simplement la commande screen -r et vous verrez la liste des screens avec leurs noms associés.

    Vous aurez peut-être besoin de redimensionner le programme avec la combinaison de touches Ctrl-a puis F.

  4. Vous voulez quitter le programme qui ne vous sert plus : quittez le programme normalement et le screen se fermera tout seul car vous aviez ouvert le screen et lançé le programme en même temps. Le message suivant s'affiche sur la console :

    [screen is terminating]
    

2.4. Plusieurs fenêtres dans un screen

A l'intérieur d'un screen, vous pouvez avoir une deuxième fenêtre avec un nouveau shell à l'intérieur. Pour cela, utilisez la combinaison de touches Ctrl-a puis c. Vous pouvez en ouvrir autant que vous voulez en répétant cette combinaison de touches. Vous pouvez ensuite passer d'une fenêtre à la suivante par la combinaison de touches Ctrl-a puis n (n comme Next) et passer à la fenêtre précédente par la combinaison de touches Ctrl-a puis p (p comme Previous).

Pour fermer une fenêtre, il suffit de fermer le shell qu'elle contient (combinaison de touches Ctrl-d ou commande logout). Le fait de fermer la dernière fenêtre restante provoque la fermeture du screen.