====== Screen, multiplexeur de terminal ======
Screen est assez utile pour les sysadmin, principalement dans deux cas :
* Lorsqu'on lance une commande qui peut durer longtemps (genre un gros rsync), si la connexion ssh est fermée, la commande continue de s'éxécuter dans screen et on peut y retourner pour voir où ça en est
* Si on est deux ou plus sur un serveur, cela permet de partager son écran et voir ce qui arrive à l'autre, ce qui est utile en cas de problème ou dans le cadre de l'apprentissage.
Screen n'est pas le seul logiciel à faire ça, il y a des choses plus récentes (Tmux ou Byobu par exemple), mais ça reste une référence dans le milieu des sysadmin.
Il y a de la doc un peu partout sur comment marche le truc, mais je galère à chaque fois à retrouver quelques trucs simples... donc je note ça ici, et en français.
--- //[[user:zatalyz|zatalyz]] 2018/04/30 10:02//
===== Commandes de base =====
Démarrer un screen :
screen -S nom_du_screen
Se détacher pour scroller :
* ctrl+a et echap
Quitter le screen ("se détacher") sans fermer ce dernier
* ctrl+a suivi de ''d''
Se rattacher à un screen ouvert
screen -r nom_du_screen
On fait aussi screen -DR mais je ne comprends pas trop le [[https://linux.die.net/man/1/screen|man]] à ce sujet.
===== Partager avec d'autres utilisateurs =====
Il est possible de partager une session screen avec des utilisateurs connectés sous leur propre nom, sur la même machine.
Merlin veut partager sa sessin avec Zatalyz. Il créé sa session :
screen -S partagee
Puis il va activer l'option "multiuser" :
* ctrl+a '':multiuser on''
Ce genre de commande se fait en passant la combinaison de touches "CTRL+a" puis en faisant '':'' suivi de la commande écrite.
Ensuite il donne l'accès à ''zatalyz''
* ctrl+a '':acladd zatalyz''
L'utilisateur ''zatalyz'' pourra lister les sessions screen auxquelles elle peut se connecter :
screen -list merlin/ # (le / est important)
S'affiche alors une liste contenant au minimum la session nommée ''partagee''. ''zatalyz'' peut s'y connecter comme suit :
screen -x merlin/partagee
''merlin'' pourra voir les utilisateurs connectés à sa session screen :
* ctrl+a ''*''
Une fois la session partagée finie ''merlin'' peut révoquer l'accès de ''zatalyz'' avec :
* ctrl+a '':acldel zatalyz''
===== Problèmes =====
Il se peut que l'erreur suivante se produise lorsqu'on veut lister les sessions screen (''screen -list merlin/'') :
Directory '/run/screen' must have mode 755.
Dans ce cas, il suffit de faire ce qui est indiqué, en tant que root évidemment sinon ça ne fonctionne pas :
sudo chmod 755 /run/screen
L'opération est à répéter après un reboot. Une solution définitive doit exister, mais vu qu'on ne partage un screen que ponctuellement, le jeu n'en vaut pas la chandelle.
===== Sources et liens utiles =====
* [[http://web.archive.org/web/20090419014053/http://linuxhacks.org/tutorials/jakes_gnu_screen_tutorial.php]]
* [[https://doc.ubuntu-fr.org/screen|Documention Ubuntu-fr sur Screen]]
* [[https://linux.die.net/man/1/screen|Manpage (anglais)]]
{{tag>Programmation Serveur Sysadmin}}