User Tools

Site Tools


informatique:logiciels:screen

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:screen [2016/03/09 11:31] – [Exemple de configuration] pteuinformatique:logiciels:screen [2020/12/03 10:11] (current) – Copier le buffer dans un fichier pteu
Line 1: Line 1:
-{{tag>utilitaire système session}} +======Screen======
- +
-======SCREEN======+
  
 =====Présentation===== =====Présentation=====
  
-**Screen** est un gestionnaire de terminal en mode texte ; il permet, dans un terminal, de créer de nouvelles sessions qu'on pourra quitter, puis récupérer dans l'état ou on l'a laissé. On peut par exemple ouvrir un irssi dans un terminal, se déconnecter, puis récupérer la session en se reconnectant.+**Screen** est un gestionnaire de terminal en mode texte ; il permet, dans un terminal, de créer de nouvelles sessions qu'on pourra quitter, puis récupérer dans l'état ou on l'a laissé.
  
-//NB : Il existe une version améliorée de screen (avec un menu de configuration notamment) nommée byobu.//+//NB : Il existe d'autres gestionnaires de terminaux comme tmux ou byobu, une version améliorée de screen.//
  
  
-=====Configuration=====+=====Utilisation=====
  
-Le fichier de configuration se nomme ''.screenrc'', que l'on peut placer dans ''/etc'' ou ''~''.+Installation, lancement de screen et exécution d'une commande dedans : 
 +<code bash> 
 +aptitude install screen
  
-Pour afficher une barre de statut :+screen
  
-  hardstatus alwayslastline "%d/%m/%Y [%c] | %w"+echo test 
 + test 
 +</code>
  
-Pour éviter le message au lancement :+On va ensuite **d**étacher la console avec la combinaison ''Ctrl-a'' puis ''d'' ; on va donc revenir à la console depuis laquelle on a lancé screen.
  
-  startup_message off+//Plus tard// on décide de récupérer (**r**attacher) notre screen : 
 +<code bash> 
 +screen -r 
 +</code>
  
 +On récupère ainsi l'état dans lequel on l'avait laissé.
  
-=====Utilisation=====+On peut également **c**réer d'autres terminaux virtuels ; quand on est dans screen, faire un ''ctrl+a'' et ''c''. On passe alors de l'un à l'autre avec ''ctrl+a'' et ''n'' (**n**ext) ou encore ''ctrl+a'' et ''p'' (**p**revious). ''ctrl+a'' ''ctrl+a'' permet de revenir à l'ancien terminal virtuel. Pour fermer une session screen : ''Ctrl+a d'' (detach).
  
-On installe et on lance screen :+Pour la rejoindre plus tard : ''screen -x'' ou ''screen -r''. S'il en existe plusieurs, ''screen -r'' affichera la liste et il faudra ajouter l'ID de la session à la suite : 
 +<code bash> 
 +screen -r 
 +There are several suitable screens on: 
 +     314..soekris-01 (Detached) 
 +     9364..soekris-01        (Detached) 
 +Type "screen [-d] -r [pid.]tty.host" to resume one of them.
  
-  aptitude install screen +screen -r 314..soekris-01 
-  screen+</code>
  
-Dans le terminal qu'on vient d'ouvrir, on lance un anodin+Sinon, pour simplement lister les sessions existantes : ''screen -ls''
  
-  echo test +Pour lancer un script dans un screen au démarrage par exemple, on utilise : 
-  test+<code bash> 
 +screen -d -m script.sh 
 +</code> 
 +... pour créer une nouvelle session sans l'attacher.
  
-On va ensuite **d**étacher la console avec la combinaison ''ctrl+a'' puis ''d'' ; on va donc revenir à la console d'où on a lancer screen. 
  
-//Plus tard// on décide de récupérer (**r**attacher) notre screen :+=====Combinaisons de touches=====
  
-  screen -r+Pour afficher les raccourcis courants, appuyer sur la touche de préfixe ''Ctrl+a'' suivie de ''?''.
  
-On récupère ainsi l'état dans lequel on l'avait laissé.+Une fois screen lancé, saisir la hotkey ''Ctrl+a'' suivie de :
  
-On peut également **c**réer d'autres terminaux virtuels ; quand on est dans screen, faire un ''ctrl+a'' et ''c''. On passe alors de l'un à l'autre avec ''ctrl+a'' et ''n'' (**n**ext) ou encore ''ctrl+a'' et ''p'' (**p**revious). ''ctrl+a'' ''ctrl+a'' permet de revenir à l'ancien terminal virtuel.+  * ''c'' : pour **c**réer une nouvelle fenêtre (nouveau terminal) 
 +  * ''k'': **k**iller le terminal courant (une confirmation vous est demandée (y/n)) 
 +  * ''n'' (**n**ext) : se déplacer vers le terminal suivant 
 +  * ''p'' (**p**revious) : se déplacer vers le terminal précédent 
 +  * ''<nb>'' : se déplacer vers le terminal <nb>,  avec <nb> son numéro (0, 1, ...) 
 +  * ''"'' : voir la liste des terminaux ouverts 
 +  * ''ctrl+a'' : sélectionner la dernière fenêtre consultée 
 +  * ''Ctrl+<space>'' : sélectionner la prochaine fenêtre 
 +  * ''A'' : pour renommer le titre du terminal courant 
 +  * ''ctrl+x'' : verrouiller la session screen. En fonction de votre implémentation de screen : 
 +    * soit le mdp de votre utilisateur vous sera demandé pour rouvrir la session (e.g. sous Debian); 
 +    * soit il demande un mdp avant de la verrouiller, qu'il faudra redonner pour la rouvrir (e.g. sous macOSX) 
 +  * ''F'' : rafraîchir la fenêtre 
 +  * '':'' : permet d'afficher le prompt pour passer en mode commande
  
-On peut aussi partager un terminal : il faut créer un ''screen'', puis quelqu'un d'autre se rattache dessus avec un ''screen -x''. 
-On utilise cette fonctionnalité avec un utilisateur distant connecté en SSH par exemple. 
  
-On peut lancer plusieurs screen à la fois ; pour se rattacher à l'un d'entre eux on utilise la syntaxe :+=====Diviser la fenêtre (split)=====
  
-  screen -r +Plutôt que d'avoir un terminal par écran, on peut agencer l'affichage des terminaux en divisant l'écran en panneaux/régions, pour en afficher plusieurs ; mais tous les terminaux sont accessibles dans chaque panneau.
-   There are several suitable screens on+
-        314..soekris-01 (Detached) +
-        9364..soekris-01        (Detached) +
-   Type "screen [-d] -r [pid.]tty.host" to resume one of them. +
-  screen -r 314..soekris-01+
  
-Pour lancer un script dans un screen au démarrage par exemple, on utilise :+Pour diviser la fenêtre ''Ctrl+a'' suivi de : 
 +  * ''S'' pour diviser l'écran horizontalement 
 +  * ''|'' pour diviser l'écran verticalement
  
-  screen -d -m script.sh+Autres raccourcis liés au split : 
 +  * ''X'' : fermer le panneau courant 
 +  * ''Q'' : supprimer tous les panneaux sauf celui sélectionné 
 +  * ''F'' : redimensionner la fenêtre sur la taille du panneau sélectionné 
 +  * ''<tab>'' sélectionner le prochain panneau 
 +Il n'existe pas d'inverse du ''Ctrl-a <tab>'' (sélectionner le précédent panneau). Par contre il est possible de créer des raccourcis pour sélectionner le panneau du haut/bas : pour cela il faut éditer le fichier **~/.screenrc** et ajouter ces lignes : 
 +<code bash> 
 +bind k focus down 
 +bind j focus up 
 +bind t focus top 
 +bind b focus bottom 
 +</code>
  
-pour créer une nouvelle session sans l'attacher.+=====Configuration=====
  
 +Le fichier de configuration général se nomme se trouve dans ''/etc/screenrc'', mais chaque utilisateur peut la surcharger dans son fichier ''~/.screenrc''.
  
-=====Combinaisons de touches=====+Lorsqu'un screen est lancé et que l'on veut recharger le fichier de configuration (pour prendre en compte une modif par exemple), faire ''Ctrl-a'' puis saisir : '':source ~/.screenrc''.
  
-Une fois screen lancé, on utilise la combinaison de touche ''ctrl+a'' suivie de : 
  
-  * c : pour créer un nouveau terminal +=====Tips===== 
-  * k : killer le terminal courant (une confirmation vous est demandée (y/n)) + 
-  * n : se déplacer vers le terminal suivant +====Copier le buffer dans un fichier==== 
-  * p : se déplacer vers le terminal précédent + 
-  * <n> : se déplacer vers le terminal <n> avec <nson numéro (0, 1, ...) +Pour enregistrer le buffer screen dans un fichier texteil suffit de saisir ''Ctrl+a :'' pour passer en mode commande, puis ''hardcopy -h <fichier.txt>''
-  * " voir la liste des terminaux ouverts (on peut en sélectionner un façon "selectbox" en HTML) + 
-  * ctrl+a : se délacer vers le dernier terminal consulté +Une autre méthode, plus compliquée mais qui permet de comprendre le mécanisme de copies de screen 
-  * A : pour renommer le titre du terminal courant +  - Passer en mode scrollback buffer : ''Ctrl+a ['' (ou ''Esc'') 
-  * ctrl+x verrouiller la session screen. En fonction de votre implémentation de screen : +  - Sélectionner le texte à copier ; pour copier l'intégralité du buffer ''g'' (aller en début du buffer), ''espace'' (marquer le début de la sélection), ''G'' (aller à la fin du buffer), ''<enter>'' (marquer la fin de la sélection
-    * soit le mdp de votre utilisateur vous sera demandé pour rouvrir la session (e.g. sous Debian); +  - Lancer un éditeur de textepar exemple vi (pour éviter les problèmes d'indentation, penser à passer en mode "paste": '':set paste'' 
-    * soit il demande un mdp avant de la verrouillerqu'il faudra redonner pour la rouvrir (e.g. sous macOSX)+  - Coller le buffer : ''Ctrl+a ]''
  
  
 =====Annexes===== =====Annexes=====
  
-====Exemple de template====+====Exemple de template de conf====
  
 <code bash> <code bash>
-/etc/screenrc+ne pas afficher le message au lancement
 startup_message off startup_message off
 deflogin on deflogin on
Line 102: Line 135:
 hardstatus off hardstatus off
 termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007 termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
 +# Pour afficher une barre de statut :
 +#hardstatus alwayslastline "%d/%m/%Y [%c] | %w"
 +# ou
 hardstatus alwayslastline "%-w%{.BW}%n %t%{-}%+w %= %l | %d/%m/%y %c" hardstatus alwayslastline "%-w%{.BW}%n %t%{-}%+w %= %l | %d/%m/%y %c"
 termcapinfo xterm*|linux*|rxvt*|Eterm* OP termcapinfo xterm*|linux*|rxvt*|Eterm* OP
informatique/logiciels/screen.1457523090.txt.gz · Last modified: 2016/03/09 11:31 by pteu