Quentin Demoulière

Mon blog personnel

Screen, un de mes outils Unix favoris

Rédigé par Quentin Demouliere - - Aucun commentaire

Je tenais à parler aujourd'hui d'un outil trop peu souvent exposé : screen. C'est un formidable couteau suisse utile à tout bon sysadmin Unix qui se respecte. Je l'utilise régulièrement, j'ai donc décidé de publier un petit mémo récapitulatif.

Qu'est-ce que screen ?

Screen est un multiterminal qui pernet de faire tourner des programmes même en étant déconnecté de la machine de calcul.

Screen permet d'avoir facilement plusieurs shell ouverts et de lancer plusieurs commandes simultanément. Il vous permet également de laisser tourner vos commandes en taches de fond sur les machines hôtes, même si vous vous déconnectez de la machine.

Installation sous Debian

#aptitude install screen

Pour utiliser l'application, rien de plus simple, il suffit d'utiliser la commande screen :

$screen

Ensuite la gestion du programme se fait à l'aide de ctrl-a, voici la liste des options à connaitre :

ctrl-a c #Créer une nouveau terminal
ctrl-a w #Lister toutes les fenêtres
ctrl-a n #Se déplacer vers la fenêtre suivante
ctrl-a p #Se déplacer vers la fenêtre précédente
ctrl-a k #Détruire la fenêtre actuellement utilisée
ctrl-a / #Détruire toutes les fenêtres et quitter
ctrl-a A #Renommer la fenêtre en cours d'utilisation
ctrl-a d #Se détacher de screen pour le faire passer en arrière plan

Cas concret d'utilisation de screen

Je suis connecté en SSH sur ma machine Debian hébergée dans mon université. J'utilise vim et je suis en train de réaliser un script. Mais tout  à coup, rupture de ma connexion internet et coupure de ma liaison SSH sans avoir eu le temps de sauvegarder mon travail.

SNIFF.... L'utilisation de screen au préalable m'aurait évitée la perte de ce que j'avais mis tant de temps à produire :

prof@perso $ ssh prof@debian.universite-tours.fr
prof@debian $ screen
prof@debian $ vim mon_script_perl.pl

Disconnect

prof@perso $ ssh prof@debian.universite-tours.fr
prof@debian $ screen -ls

There is a screen on:
3550.pts-0.debian (07/01/2013 14:11:21) (Detached)
1 Socket in /var/run/screen/S-prof.

prof@debian $ screen -r 3550

Et enjoy, vous voilà sur votre screen tel qu'il était avant l'interruption de la connexion SSH. Ainsi vous pouvez appliquer cela pour des compilations longues et importantes, des téléchargements et même dans votre travail à distance au quotidien.

screen -ls #Lister les sessions screen actives
screen -r #Se réattacher à une session screen

Ecran Splité avec Screen

Comme avec vim, il est possible de spliter l'écran pour avoir plusieurs fenêtres :

ctrl-a S    #Spliter l'écran horizontalement
ctrl-a tab #Se déplacer d'une fenêtre à l'autre
ctrl-a X    #Supprimer la fenêtre sélectionnée
Ctrl-a Q #Ferme toutes les régions sauf la région active

Le split vertical se fait uniquement en mode commande, faites Ctrl-a : et saisissez la commande split -v.

Partager sa session screen avec d'autres utilisateurs

En amont, il faut réaliser les opérations suivantes :

root@debian # chmod 755 /var/run/screen
root@debian # chmod u+s /usr/bin/screen

prof@debian $ screen -S monscreen
etudiant@pc-01 $ ssh etudiant@debian

Sur le screen lancé par le professeur :
ctrl-a :
multiuser on
ctrl-a :
acladd etudiant

etudiant@debian $ screen -x monscreen

Conclusion

Tout ceci est loin d'être exhaustif. Rendez-vous sur la page man de screen pour obtenir toutes les options possibles. Et vous ? Quelle est votre utilisation de screen ?

 Wink

Debian and Unix Addict

Écrire un commentaire

Quelle est la dernière lettre du mot zczdg ? :