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
Et je rajouterais la super astuce pour splitter le screen en 2
)
Ctrl-A S
Ctrl-A [tab]
Ctrl-A c
Ctrl-A [tab] pour naviguer
Biz
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…
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