Débuter avec GNU Screen
Pour utiliser des machines via SSH, il peut être intéressant de profiter de l'outil Screen du projet GNU. Celui-ci permet d'accéder à plusieurs sessions au sein d'une même fenêtre de terminal, de conserver ces sessions sur le serveur (de sorte que l'on peut se connecter facilement d'un endroit à un autre et de retrouver son travail "en l'état"), etc.
Pour démarrer, il suffit de le lancer par la commande 'screen'. Pour quitter une fenêtre, taper 'exit' (le nombre de fois nécessaire pour fermer tous les terminaux ouverts). Pour laisser en l'état, "détacher" la session, taper screen -d.
Pour faciliter la prise en main, copier les lignes ci-dessous dans le fichier ~/.screenrc permet d'avoir une interface un peu moins austère que ce que l'on a par défaut, notamment une barre en bas de l'écran qui liste les fenêtres ouvertes, affiche le nom de la machine et l'heure (le nom de la machine est utile pour s'y retrouver avec des "nested-screen", i.e. quand on lance un screen dans un autre screen).
# .screenrc example
###################
vbell off
autodetach on
startup_message off
defscrollback 1000
# emulate .logout message
pow_detach_msg "Screen session of $LOGNAME $:cr:$:nl:ended."
# default windows
# screen -t local 0
# screen -t mail 1 mutt
# screen -t 40 2 rlogin server
# keybindings
#remove some stupid / dangerous key bindings
bind k
bind ^k
bind .
bind ^
bind \
bind ^h
bind h
#make them better
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history
# C-a space to have windowlist
bind ' ' windowlist -b
backtick 1 5 5 true
termcapinfo rxvt* 'hs:ts=E]2;:fs= 07:ds=E]2; 07'
hardstatus string "screen (%n: %t)"
caption string "%{= kc}%H%{= kw} | %-w%{= bW}%n %t%{-}%+w %= %c"
caption always
#################
Les commandes indispensables :
- screen -d : détache la session courante
- screen -r : une fois connecté en ssh à la machine souhaitée, permet de reprendre la session screen. (On peut ouvrir plusieurs sessions de screen, auquel cas on se voit proposer les sessions avec leur pid).
Dans les raccourcis-clavier ci-dessous, C-a signifie "appui simultané sur les touches 'Ctrl' et 'a'".
- C-a c : crée une nouvelle fenêtre, avec un nouveau shell
- C-a A : modifier le nom de la fenêtre courante
- C-a k : ferme la fenêtre courante (avec le screenrc fourni, la commande devient C-a K)
- C-a " et C-a
: affiche la liste des fenêtres pour naviguer de l'une à l'autre (avec les flèches directionnelles) - C-a n/p : naviguer sur la fenêtre suivante/précédente
- C-a C-a : revenir à la précédente fenêtre affichée.
- C-a 1-9 : la navigation entre les fenêtres est possible avec les touches numériques
- C-a x : verrouille la session et demande le mot de passe de l'utilisateur.
La page de manuel est très complète pour paramétrer à sa convenance ("man screen") et Internet regorge également de documentation (via les fichiers .screenrc d'utilisateurs). Pour ceux qui utilisent Emacs, on peut "remapper" le Ctrl+a en autre chose, via le screenrc et la commande bind (voir les détails sur le net).