Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:autres:screen [04/10/2010 15:08] smolski |
doc:autres:screen [26/03/2017 01:32] Switch [Multiutilisateur ! Partager ta console avec une autre personne !] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SCREEN ====== | + | ====== Screen ====== |
* Objet : Commande Linux Screen | * Objet : Commande Linux Screen | ||
- | * Niveau requis : DÉBUTANT AVISÉ | + | * Niveau requis :{{tag>débutant avisé}} |
- | * Commentaires : //LA commande idéale couplée avec //[[commande:ssh|SSH]]. | + | * Commentaires : //LA commande idéale couplée avec //[[:doc:reseau:ssh|SSH]]. |
- | * Débutant, à savoir : [[manuel:ldc | La ligne de Commande]] | + | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) |
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Création par [[user>smolski]] le 20/08/2010 | ||
+ | * Testé par .... le .... | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=3031 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 12: | Ligne 18: | ||
Cela permet de s'attacher et de se détacher d'une commande en la laissant active dans la //sessionscreen// créée. | Cela permet de s'attacher et de se détacher d'une commande en la laissant active dans la //sessionscreen// créée. | ||
- | Via [[commande:ssh | SSH]], **screen** peut ouvrir une //session screen// sur un pc distant et de laisser active une commande en exécution tout en se déconnectant totalement du pc distant. \\ | + | Via [[:doc:reseau:ssh | SSH]], **screen** peut ouvrir une //session screen// sur un pc distant et de laisser active une commande en exécution tout en se déconnectant totalement du pc distant. \\ |
Puis, ultérieurement, de revenir sur cette commande dans la même //session screen//. \\ | Puis, ultérieurement, de revenir sur cette commande dans la même //session screen//. \\ | ||
Ligne 23: | Ligne 29: | ||
Rien de plus simple. Il suffit d'utiliser votre gestionnaire de paquets préférés et d'installer le paquet screen. \\ | Rien de plus simple. Il suffit d'utiliser votre gestionnaire de paquets préférés et d'installer le paquet screen. \\ | ||
Par exemple, avec apt-get : | Par exemple, avec apt-get : | ||
- | <code bash> | + | <code root> |
- | aptitude install screen</code> | + | apt-get update && apt-get install screen</code> |
Ligne 33: | Ligne 39: | ||
==== Screen - Ouvrir ==== | ==== Screen - Ouvrir ==== | ||
- | Pour lancer **screen** dans une [[manuel:console | Console]] (ou un [[manuel:terminal | Terminal]]), il suffit de rédiger la commande : | + | Pour lancer **screen** dans une [[:doc:systeme:console | Console]] (ou un [[:doc:systeme:terminal | Terminal]]), il suffit de rédiger la commande : |
- | $ screen | + | <code user>screen</code> |
Au lancement de **screen**, un message s’affiche à l’écran indiquant la version utilisée ainsi que ce programme est sous licence GPL. | Au lancement de **screen**, un message s’affiche à l’écran indiquant la version utilisée ainsi que ce programme est sous licence GPL. | ||
- | // | ||
- | {{ http://images.debian-facile.org/file-Ra38c6907fa06d0e4da3bf4c5913dc7f0.png }} | ||
- | // | + | <file text Message affiché :> |
- | Il ne reste plus qu’à appuyer sur la touche : | + | Screen version 4.02.01 (GNU) 28-Apr-14 |
- | Espace | + | |
- | ou celle de : | + | Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury |
- | Entrée | + | Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan, |
+ | Sadrul Habib Chowdhury | ||
+ | Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael | ||
+ | Schroeder | ||
+ | Copyright (c) 1987 Oliver Laumann | ||
+ | |||
+ | This program is free software; you can redistribute it and/or modify it under | ||
+ | the terms of the GNU General Public License as published by the Free Software | ||
+ | Foundation; either version 3, or (at your option) any later version. | ||
+ | |||
+ | This program is distributed in the hope that it will be useful, but WITHOUT | ||
+ | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
+ | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
+ | |||
+ | You should have received a copy of the GNU General Public License along with | ||
+ | this program (see the file COPYING); if not, see http://www.gnu.org/licenses/, | ||
+ | or contact Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
+ | Boston, MA 02111-1301 USA. | ||
+ | |||
+ | |||
+ | Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to | ||
+ | screen-devel@gnu.org | ||
+ | |||
+ | |||
+ | Capabilities: | ||
+ | +copy +remote-detach +power-detach +multi-attach +multi-user +font +color-256 | ||
+ | +utf8 +rxvt +builtin-telnet | ||
+ | |||
+ | [Press Space or Return to end.] | ||
+ | </file> | ||
+ | //images.debian-facile.org/file-Ra38c6907fa06d0e4da3bf4c5913dc7f0// | ||
+ | |||
+ | **Image disparue !** smolski 18/03/2012 | ||
+ | |||
+ | Il ne reste plus qu’à appuyer sur la touche | ||
+ | <key>Espace</key> | ||
+ | ou sur la touche | ||
+ | <key>Entrée</key> | ||
pour se retrouver dans la fenêtre de **screen**. | pour se retrouver dans la fenêtre de **screen**. | ||
Ligne 54: | Ligne 95: | ||
Pour sortir de **screen** rédigez : | Pour sortir de **screen** rédigez : | ||
exit | exit | ||
- | ou bien appuyez sur la combinaison des touches clavier : | + | ou bien appuyez sur la combinaison des touches clavier |
- | Ctrl+d | + | <key>C-d</key> |
//Nous verrons plus loin qu'il existe d'autres manières de sortir de// **screen**. | //Nous verrons plus loin qu'il existe d'autres manières de sortir de// **screen**. | ||
Ligne 72: | Ligne 113: | ||
== Ctrl+a c == | == Ctrl+a c == | ||
- | Pour créer une nouvelle fenêtre, il suffit de taper la combinaison de touches : | + | Pour créer une nouvelle fenêtre, il suffit de taper la combinaison de touches |
- | Ctrl+a c | + | <key>C-a-c</key> |
Il est à noter qu'en plus de créer une nouvelle fenêtre, **screen** nous emmène directement dans celle-ci. \\ | Il est à noter qu'en plus de créer une nouvelle fenêtre, **screen** nous emmène directement dans celle-ci. \\ | ||
Ligne 81: | Ligne 122: | ||
**Screen** étant un gestionnaire de fenêtres, il permet donc d’ouvrir et de fermer des fenêtres. Il va même jusqu'à indiquer dans quelle fenêtre nous nous trouvons. | **Screen** étant un gestionnaire de fenêtres, il permet donc d’ouvrir et de fermer des fenêtres. Il va même jusqu'à indiquer dans quelle fenêtre nous nous trouvons. | ||
- | Tapez : | + | Tapez |
- | Ctrl+a w | + | <key>C-a-w</key> |
**Résultat** | **Résultat** | ||
Ligne 101: | Ligne 142: | ||
Pour se promener entre les différentes fenêtres, il existe quatre solutions : | Pour se promener entre les différentes fenêtres, il existe quatre solutions : | ||
- | == Ctrl+a n == | + | Pour aller à la fenêtre suivante |
+ | <key>C-a-n</key> | ||
- | Pour aller à la fenêtre suivante : | + | pour aller à la fenêtre précédente |
- | Ctrl+a n | + | <key>C-a-p</key> |
- | == Ctrl+a p == | + | == Ctrl+a [0 (zéro, le chiffre) - 9] == |
- | pour aller à la fenêtre précédente : | + | pour naviguer entre les dix fenêtres de screen |
- | Ctrl+a p | + | |
- | == Ctrl+a 0 (zéro, le chiffre) == | + | <key>C-a-0</key> |
- | pour naviguer entre les dix fenêtres de screen : | + | <key>C-a-1</key> |
- | Ctrl+a 0 ... Ctrl+a 9 | + | |
- | == Ctrl+a ' == | + | ... |
+ | |||
+ | <key>C-a-9</key> | ||
+ | |||
+ | |||
+ | Au choix. :-) | ||
+ | |||
+ | == Ctrl+a ' (apostrophe) == | ||
- | Pour aller dans une des fenêtres par le numéro : | + | Pour aller dans une des fenêtres par le numéro |
- | Ctrl+a ' | + | <key>C-a-'</key> |
Puis, tapez dans le prompt le numéro de la fenêtre que vous désirez atteindre. | Puis, tapez dans le prompt le numéro de la fenêtre que vous désirez atteindre. | ||
Ligne 125: | Ligne 172: | ||
== Ctrl+a " (guillemets doubles) == | == Ctrl+a " (guillemets doubles) == | ||
- | Pour aller dans une des fenêtres visuellement : | + | Pour aller dans une des fenêtres visuellement |
- | Ctrl+a " | + | <key>C-a-"</key> |
Propose la liste des différentes fenêtres et nous pouvons y choisir au clavier, par les flèches de direction, une session où nous situer en la validant. | Propose la liste des différentes fenêtres et nous pouvons y choisir au clavier, par les flèches de direction, une session où nous situer en la validant. | ||
Ligne 134: | Ligne 181: | ||
== Ctrl+a puis shift (flèche pour les majuscules) ' (apostrophe) == | == Ctrl+a puis shift (flèche pour les majuscules) ' (apostrophe) == | ||
- | Pour avoir la liste des différentes fenêtres : | + | Pour avoir la liste des différentes fenêtres |
- | Ctrl+a shift ' | + | <key>C-A-Maj-'</key> |
- | Propose la liste des différentes fenêtres, à l'identique de l'option : | + | Propose la liste des différentes fenêtres, à l'identique de l'option |
- | Ctrl+a w | + | <key>C-a-w</key> |
==== Option : -S nommer la session screen ==== | ==== Option : -S nommer la session screen ==== | ||
Ligne 149: | Ligne 196: | ||
Ceci crée une session screen nommée //user//. | Ceci crée une session screen nommée //user//. | ||
- | Nous pouvons par exemple y lancer une tâche un peu longuette, nous deconnecter pendant cette tâche sans l'arrêter. | + | Nous pouvons par exemple y lancer une tâche un peu longuette, nous déconnecter pendant cette tâche sans l'arrêter. |
- | Ctrl d | + | <key>C-a-d</key> |
Pour y revenir, il suffira de taper : | Pour y revenir, il suffira de taper : | ||
screen -r user | screen -r user | ||
- | Et vérifier ou faire cesser la commande qui y aura été lancée précédemment. | + | Et vérifier la bonne continuité ou faire cesser la commande qui y aura été lancée précédemment en arrêtant screen par |
+ | <key>c</key> + <key>d</key> | ||
+ | |||
+ | ou : | ||
+ | exit | ||
==== Option : -r ==== | ==== Option : -r ==== | ||
Ligne 165: | Ligne 216: | ||
Et vous y serez de retour directement. | Et vous y serez de retour directement. | ||
- | Si vous avez plusieurs sessions en cours, vous pourrez ensuite en consulter la liste avec : | + | Si vous avez plusieurs sessions en cours, vous pourrez ensuite en consulter la liste avec |
- | Ctrl+a" | + | <key>C-a-"</key> |
Comme indiqué dans les options -a | Comme indiqué dans les options -a | ||
+ | |||
+ | ===== Ajouter une bare de status ( hardstatus ) ===== | ||
+ | Une barre de status qui affiche les fenêtres totalement personnalisable; | ||
+ | Ajouter ceci à vote fichier de configuration screen perso : **.screenrc** : | ||
+ | <code bash> | ||
+ | hardstatus alwayslastline | ||
+ | hardstatus string '%{= kG}%{C}Screen: %{c}%{= kG}[%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{C} %d-%m %{W}%c %{g}]' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | ===== Multiutilisateur ! Partager ta console avec une autre personne ! ===== | ||
+ | |||
+ | |||
+ | Screen permet de partager ton terminal avec un autre utilisateur ( ayant un autre compte dans ton ordi ). | ||
+ | Dans cet exemple, **tu est l'utilisateur nommé "foo"**; tu crée une session screen **multiuser**; puis autorise **ton ami nommé "bar"** à t'y rejoindre. Ici,on autorisera à **bar** uniquement la lecture; il ne pourra pas écrire ou exécuter des commandes dans ton terminal. | ||
+ | |||
+ | <note warning>L'utilisation du mode "multiuser" nécessite de modifier les droits de screen en [[doc:systeme:chmod|SUID]]. On l'enlevera en fin d'utilisation pour raisons de sécurité</note> | ||
+ | <code root> | ||
+ | chmod u+s /usr/bin/screen #active le droit SUID du programme screen | ||
+ | chmod 755 /var/run/screen #autorise, pour l'utilisateur root uniquement, l'écriture sur le dossier contenant les sessions screen | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | == création de la session multiuser == | ||
+ | |||
+ | Dans un terminal avec ton compte **foo** : | ||
+ | <code user>screen -S UnScreenPourDeux #Crée une session screen nommée UnScreenPourDeux</code> | ||
+ | |||
+ | |||
+ | Activation du mode multiuser | ||
+ | |||
+ | <key>CTRl a</key><key>:</key>multiuser on | ||
+ | |||
+ | |||
+ | Ajoute ton ami **bar** à Liste de Control dAccès (ACL) | ||
+ | |||
+ | <key>CTRL a</key><key>:</key>acladd bar | ||
+ | |||
+ | |||
+ | Retire (**-**)les droits d'écriture (**w**rite) et d'e**x**écution à **bar** pour **toutes les fenetres** screen ( symbolisées par **#**) et toutes les commandes (**?** représente toute les commandes) pour ta sécurité. | ||
+ | |||
+ | <key>CTRL a</key><key>:</key>aclchg bar -wx "#?" | ||
+ | |||
+ | |||
+ | Ajoute à ton ami **bar** les droits d'exécution (**+x**) des commandes colon //( entrer en mode commande de screen, nécessaire pour les suivantes )//, wall //( envoyer un message aux autres utilisateurs de screen )//, detach //( se détacher de la session, sinon ton ami sera bloqué pour toujours :p )// | ||
+ | |||
+ | <key>CTRL a</key><key>:</key>aclchg bar +x "colon,wall,detach" | ||
+ | |||
+ | |||
+ | |||
+ | == ton ami bar rejoint la session == | ||
+ | |||
+ | Au tour de ton ami **bar** se connecte à distance à ton ordinateur par [[doc:reseau:ssh|SSH]] et rejoint ta session existante ( **-x** ), en précisant ton login et le nom de ta session : | ||
+ | <code user>screen -x foo/UnScreenPourDeux</code> | ||
+ | |||
+ | Il peut alors voir tout ce que tu fais dans ton terminal pour te conseiller et t'envoyer des messages avec <key>CTRL a</key><key>:</key>wall "coucou ;)" | ||
+ | |||
+ | <note>On pense à retirer le SUID de screen et remettre les permissions du dossier pour plus de sécurité après utilisation du mode multiuser</note> | ||
+ | |||
+ | <code root> | ||
+ | chmod u-s /usr/bin/screen | ||
+ | chmod 775 /var/run/screen | ||
+ | </code> | ||
+ | |||
+ | Doc multiuser de screen : [[https://www.gnu.org/software/screen/manual/html_node/Multiuser-Session.html#Multiuser-Session]] | ||
+ | |||
+ | |||
+ | |||
===== Liens et remerciements ===== | ===== Liens et remerciements ===== | ||
+ | * http://doc.ubuntu-fr.org/screen | ||
+ | * %%http://www.daviddallet.com/weblog/posts/2008/10/27/screen-ssh-et-autres-joies/%% - Lien Obsolète | ||
* http://ftp.traduc.org/doc-vf/gazette-linux/html/2008/147/lg147-A.html#commandes | * http://ftp.traduc.org/doc-vf/gazette-linux/html/2008/147/lg147-A.html#commandes | ||
//Merci à //**martin**// de nous avoir initié ce si bô tutô !// Yep ! ;-) | //Merci à //**martin**// de nous avoir initié ce si bô tutô !// Yep ! ;-) | ||
- | ===== Lien ===== | ||
- | * http://doc.ubuntu-fr.org/screen | + | |
- | * http://www.daviddallet.com/weblog/posts/2008/10/27/screen-ssh-et-autres-joies/ | + | |