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. — 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 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.