Home > Admin serveur > La commande screen sous Linux

La commande screen sous Linux

Si comme moi, vous bossez régulièrement en ligne de commande sous Linux (en SSH sur un serveur dédié, par exemple), il doit vous arriver de devoir jongler entre deux applications, deux répertoires, deux scripts… Bref, si vous passez beaucoup de temps à switcher entre deux tâches, screen est fait pour vous.

Le principe de Screen

Screen est un utilitaire en ligne de commande qui permet de créer plusieurs shells virtuels qui tournent en parallèle. En l’utilisant, vous aurez donc accès à plusieurs “sessions”, comme si vous aviez lancé plusieurs clients SSH.

Enorme avantage, screen ne s’arrête pas quand votre connexion au serveur est coupée. En rouvrant votre session Unix normale, vous pourrez faire screen -r (Recover) pour retrouver toutes vos fenêtres exactement dans l’état où vous les avez laissées (les actions en cours ont continué, les scripts ne sont pas interrompus, etc).

Après une rapide installation (le package apt se nomme “screen”), l’utilitaire est directement utilisable. Tapez “screen”, rien ne se passe. Et pourtant tout est ok, on y est. Bienvenue dans le monde de screen. Faites ce que vous avez à faire, éditez par exemple le fichier /etc/hosts de votre machine. Tapez ensuite control+A, puis C (pour Create). Une nouvelle fenêtre virtuelle est créée. Vous vous retrouvez devant une invite de commande, sur un shell vierge. Et c’est là que les réjouissances commencent. Faites un ls, par exemple. Ensuite, un Control+A puis N (Next) vous permet de passer à la fenêtre suivante gérée par Screen.
Toutes les commandes Screen sont composées de la combinaison Control+A puis une lettre (ou un chiffre).

Voici le menu :

  • Ctrl-a c Créer une nouvelle fenêtre (Create)
  • Ctrl-a k Fermer la fenêtre en cours (Kill)
  • Ctrl-a w Liste les fenêtres disponibles (Windows) – La fenêtre courante est repérée par une étoile.
  • Ctrl-a 0-9 Aller à la fenêtre N (Les chiffres sont dans la liste des fenêtres obtenue en faisant W)
  • Ctrl-a n Aller à la fenêtre suivante (Next)
  • Ctrl-a Ctrl-a Switche en mode “2 fenêtres” (ramène à la fenêtre précédemment affichée)
  • Ctrl-a [ Copier
  • Ctrl-a ] Coller
  • Ctrl-a ? Liste des commandes (Aide/Help)
  • Ctrl-a Ctrl-\ Quitter “screen”
  • Ctrl-a d Détacher le process, en laissant la fenêtre ouverte

Le mode Copie de Screen

Screen peut aussi vous permettre de copier/coller efficacement du texte entre deux fenêtres. Pour cela, ouvrez le mode copie en faisant Ctrl-A [ .
Une fois dans le mode copie, vous pouvez déplacer le curseur à l'aide des touches H,J,K et L. La barre d'espace commence/arrête la sélection du texte. Ctrl-A ] servira alors à coller le texte copié dans le “presse-papiers”.

Ce post vous a été utile ? Re-Twittez le ! ReTwittez ce post

Admin serveur , , , , ,

  1. Jojo
    | #1

    Et je rajouterais la super astuce pour splitter le screen en 2 :o )

    Ctrl-A S
    Ctrl-A [tab]
    Ctrl-A c
    Ctrl-A [tab] pour naviguer

    Biz

  2. | #2

    et je me permet aussi:
    - Ctrl-a X pour supprimer le split (comme recommandé dans le post précédent)
    - Ctrl-a ” pour avoir un petit menu des fenêtre disponible et naviguer avec les fleches du haut et du bas, appuyez sur entrer et vous êtes servi.
    - Ctrl-a A pour “nommer” la petite fenetre courrante qui sera visible dans le petit menu

    Drole j’avais oublié les lettres des commandes tellement je les tappais “machinalement” depuis es années
    ça fait aussi des années que j’ai écris sur un petit post-it à faire des recherches dans la documentation pour avoir une “profile” de screen, je m’éxplique, à chaque fois que je lance screen, je voudrais avoir une fenetre nommée syslog, avec une commande lancée: tail -f /var/log/syslog par exemple, une autre avec top, voila. Si vous savez comment faire ça m’interesse…

  3. JLD
    | #3

    Le post date un peu, mais comme j’ai bricolé ça, Julien est peut-être toujours intéressé :

    #!/bin/bash

    #Ouvrir un terminal nommé BIGBROZ dans lequel on lance une session
    #screen nommée bigbroz avec une fenêtre nommée DMESG
    gnome-terminal -t BIGBROZ -e ’screen -S bigbroz -t DMESG’ –maximize

    #Attendre sinon les commandes ne sont pas prises en compte
    sleep 2

    #Spliter le terminal horizontalement
    screen -S bigbroz -X split

    #Spliter la fenêtre du haut verticalement, passer dans la fenêtre de
    #droite, y lancer un terminal et la renommer SYSLOG
    screen -S bigbroz -X split -v
    screen -S bigbroz -X focus
    screen -S bigbroz -X screen -t SYSLOG

    #Passer dans la fenêtre du bas, la spliter verticalement et y créer
    #le terminal DAEMON
    screen -S bigbroz -X focus
    screen -S bigbroz -X split -v
    screen -S bigbroz -X screen -t DAEMON

    #Passer dans la fenêtre de droite et y créer le terminal MESSAGES
    screen -S bigbroz -X focus
    screen -S bigbroz -X screen -t MESSAGES

    #Selectionner la première fenêtre du haut (DMESG) et y lancer la
    #commande tail -f /var/log/dmesg
    screen -S bigbroz -X select 0
    screen -S bigbroz -X exec tail -f /var/log/dmesg
    sleep 1

    #Selectionner fenêtre SYSLOG et y lancer la
    #commande tail -f /var/log/syslog
    screen -S bigbroz -X select 1
    screen -S bigbroz -X exec tail -f /var/log/syslog
    sleep 1

    #Idem pour DAEMON
    screen -S bigbroz -X select 2
    screen -S bigbroz -X exec tail -f /var/log/daemon.log
    sleep 1

    #Idem pour MESSAGES
    screen -S bigbroz -X select 3
    screen -S bigbroz -X exec tail -f /var/log/messages

  1. No trackbacks yet.