Screen
De Tuxien.
Sommaire |
Introduction
Screen est un gestionnaire de fenêtres en mode texte : pas besoin de X.
La session est persistente : on peut s'y connecter et s'y deconnecter tout en gardant la session, comme avec X.
Plusieurs utilisateurs peuvent se connecter à la même session de screen, que ce soit pour le dépannage ou encore l'extreme programming.
Démarrer screen
Screen : sans argument (tout seul) : démarre une nouvelle session.
Voici quelques un des arguments possibles :
-S NomDeLaSession : démarre une nouvelle session sous le nom NomDeLaSession -x NomDeLaSession : essaye de se connecter à la session NomDeLaSession -ls : voir les sessions en cours -wipe : tuer les screens qui resteraient fantômes -x [PID|NomDeSession] : se connecter a un screen -c chemin/vers/config : spécifier un chemin vers le fichier de configuration manuellement, par défaut: ~/.screenrc
Cas d'utilisations
Une session screen contient une ou plusieures fenêtres auquelles on a l'habitude de mettre un seul logiciel. On peut en mettre plusieurs bien sûr mais on va préférer utiliser un buffer pour BitchX, un pour Lynx ....
Example
Je suis par exemple à la maison, je lance dans une session de terminal un torrent à télécharger.
Arrivé au boulot, d'un coup de baguette magique,
je me connect en ssh et retrouve ma session de terminal distante dans la session en cours :
l'affichage reprend comme si j'étais devant mon terminal à la maison.
Interface
Principe
Pour éviter que les raccourcis de screens ne soient intercepté par le logiciel dans le buffer, chaque session screen utilise un caractère échappatoire (escape-key). Lorsque l'utilisateur presse ce caractère : screen intercepte le prochain caractère au lieu de l'envoyer dans le buffer. L'escape-key par défaut est Ctrl+a.
Raccourcis claviers
Les raccourcis claviers fonctionnent une fois que l'on est dans une session screen.
Ctrl-a : ouvre l'invite de commande screen (oui, c'est Ctrl-a et puis le caractère deux points :) Ctrl-a k arrête le screen Ctrl-a S (maj) coupe la fenêtre en 2. La nouvelle fenêtre est vierge. Ctrl-a p afficher la fenêtre précédente Ctrl-a n afficher la fenêtre suivante Ctrl-a c créer une nouvelle fenêtre avec un shell en entrée Ctrl-a A (maj) renommer la fenêtre Ctrl-a " liste les screens Ctrl-a d Detache le screen Ctrl-a ? Affiche le liste des raccourcis clavier Ctrl-a Ctrl-w Liste les fenêtres
Créer de nouveaux raccourcis
Commande bind
La commande bind permet de créer de nouveaux raccourcis, voici son synopsis :
bind touche [ "commande 1" [ "commande 2 " [ ... "commande N" ] ] ]
bind: la commande en elle même, à utiliser dans son fichier de config ou dans l'invite de commande.
touche: la touche du nouveau raccourci
commande: une commande screen
Example
Créer une nouvelle fenêtre dans la session courante, qui lancera une connection telnet sur l'hote 'foobar' avec Ctrl+a puis f:
bind f screen telnet foobar
Commande other
La commande other permet d'afficher la fenêtre dans laquelle vous etiez juste avant (comme en faisant escape-key deux fois) :
Commande select
La commande select permet de selectionner une fenetre avec un nombre.
Example
select 2
Affiche la fenetre 2.
Commande stuff
La commande stuff permet d'inserer des keystrokes (appuis sur touche du clavier) dans la fenêtre courante.
stuff trucs
stuff: la commande en elle même, à utiliser dans son fichier de config ou dans l'invite de commande.
trucs: les trucs a inserer dans la fenêtre.
Enter
Dans stuff, pour faire Enter (ou Entrée sur les claviers francais), utiliser soit ^J, soit \012.
stuff unecommande^J
Example
Si la fenêtre propose un shell, la commande suivante permet de lancer updatedb en taches de fond (voir Bash, taches de fond, commande fg, raccourci bash Ctrl+z):
stuff updatedb &^J
Example
La commande suivante permet d'assigner au raccourci clavier Ctrl+v la séquence: afficher fenêtre 0, tapper dedans updatedb&<ENTER>, afficher la fenetre precedente:
bind v eval "select 0" "stuff updatedb&^J" "other"
Multiplicité
Pour utiliser plusieures sessions screens les unes dans les autres : il suffit d'attribuer un escape-key unique à chaque session.
L'invite de commande screen est interressante puisqu'elle permet de changer des paramêtres et d'executer des commandes, notamment :
escape ^Hh pour changer l'escape-key en Ctrl-h. startup_message off supprime le message d'accueil de screen (que c'est un logiciel libre etc ...) vbell off supprime la "visual bell", genre "Bell in window 6" hardstatus [on|off] hardstatus [always]lastline|message|ignore [string] hardstatus string [string] Cette commande configure une ligne de status (example ci-après)
Ligne de status
Il n'y a pas de ligne de status par défaut, ce qui est bien dommage.
C'est quand même plus agréable d'avoir une sorte de barre de taches/status dans son gestionnaire de fenêtre.
Voici un exemple, à ajouter dans .screenrc ou a coller dans l'invite de commande :
hardstatus alwayslastline "%{bk}%?%-Lw%?%{wb}%n*%f %t%?(%u)%?%{bk}%?%+Lw%= %{mk}@ %H %{ck}%Y%{bk}-%{ck}%m%{bk}-%{ck}%d %{yk}%D %{gk}%c"
Et en root, je la préfère toute en rouge :
hardstatus alwayslastline "%{kr}%?%-Lw%?%{cr}%n*%f %t%?(%u)%?%{kr}%?%+Lw%= %{mk}@ %H %{ck}%Y%{kb}-%{ck}%m%{kb}-%{ck}%d %{yk}%D %{gk}%c"
Configuration
Principe
Screen lit un fichier de configuration (~/.screenrc par défaut) et envoie chaque ligne dans son invite de commande lorsqu'une session démarre.
Exemple
Voici un example de fichier de configuration ~/.screenrc qui permet un peu de customisation :
defutf8 on
startup_message off
vbell off
hardstatus alwayslastline "%{bk}%?%-Lw%?%{wb}%n*%f %t%?(%u)%?%{bk}%?%+Lw%= %{mk}@ %H %{ck}%Y%{bk}-%{ck}%m%{bk}-%{ck}%d %{yk}%D %{gk}%c"
escape ^Hh
bindkey -d
screen -t irc 1 irssi
screen -t email 2 mutt
screen -t rss 3 snownews
screen -t ng 4 slrn
screen -t x 5 bash
screen -t log 6 su -c "tail -f /var/log/everything/current"
chdir /pd/music
screen -t music 7 bash
chdir /
screen -t root 8 su -c "screen -S main"
screen -t devangels 9 ssh -t monserv screen -x
chdir ~
screen -t dev 0 screen -c .screenrc.dev -S dev
Infos
- Page créée par Kiki1102, 6 mars 2007
- Contributeurs: Kiki1102 x4, Waterploof x10, Skety x2, Is null x8
- Dernière modification le Kiki1102, 19 septembre 2008
