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 [2009/06/08 20:15] – édition externe 127.0.0.1informatique: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** permet de créer un nouveau terminal qu'on pourra quitter, puis récupérer dans l'état ou on l'a laissé. On lance un nouveau terminal, on lance une application dedans, puis on le //détache//. L'application continue de tourner, et on peut, plus tard, récupérer le terminal en le //rattachant//.+**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 d'autres gestionnaires de terminaux comme tmux ou byobu, une version améliorée de screen.//
  
-=====Configuration===== 
  
-Le fichier de configuration se nomme ''.screenrc'', que l'on peut placer dans ''/etc'' ou ''~''.+=====Utilisation=====
  
-Pour afficher une barre de statut :+Installation, lancement de screen et exécution d'une commande dedans : 
 +<code bash> 
 +aptitude install screen
  
-  hardstatus alwayslastline "%d/%m/%Y [%c] | %w"+screen
  
-Pour éviter le message au lancement :+echo test 
 + test 
 +</code>
  
-  startup_message off+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.
  
 +//Plus tard// on décide de récupérer (**r**attacher) notre screen :
 +<code bash>
 +screen -r
 +</code>
  
-=====Utilisation=====+On récupère ainsi l'état dans lequel on l'avait laissé.
  
-On installe et on lance screen :+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).
  
-  aptitude install 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 : 
-  screen+<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.
  
-Dans le terminal qu'on vient d'ouvrir, on lance un anodin+screen -r 314..soekris-01 
 +</code>
  
-  echo test +Sinon, pour simplement lister les sessions existantes : ''screen -ls''
-  test+
  
-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.+Pour lancer un script dans un screen au démarrage par exemple, on utilise : 
 +<code bash> 
 +screen --m script.sh 
 +</code> 
 +... pour créer une nouvelle session sans l'attacher.
  
-//Plus tard// on décide de récupérer (**r**attacher) notre screen : 
  
-  screen -r+=====Combinaisons de touches=====
  
-On récupère ainsi l'état dans lequel on l'avait laissé.+Pour afficher les raccourcis courants, appuyer sur la touche de préfixe ''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.+Une fois screen lancésaisir la hotkey ''Ctrl+a'' suivie de :
  
-On peut aussi partager un terminal : il faut créer un ''screen'', puis quelqu'un d'autre se rattache dessus avec un ''screen -x''+  * ''c'' : pour **c**réer une nouvelle fenêtre (nouveau terminal
-On utilise cette fonctionnalité avec un utilisateur distant connecté en SSH par exemple.+  * ''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 screenEn 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 lancer plusieurs screen à la fois ; pour se rattacher à l'un d'entre eux on utilise la syntaxe : 
  
-  screen -r +=====Diviser la fenêtre (split)=====
-   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 :+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. 
 + 
 +Pour diviser la fenêtre : ''Ctrl+a'' suivi de : 
 +  * ''S'' pour diviser l'écran horizontalement 
 +  * ''|'' pour diviser l'écran verticalement 
 + 
 +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> 
 + 
 +=====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''
 + 
 +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''
 + 
 + 
 +=====Tips===== 
 + 
 +====Copier le buffer dans un fichier==== 
 + 
 +Pour enregistrer le buffer screen dans un fichier texte, il suffit de saisir ''Ctrl+a :'' pour passer en mode commande, puis ''hardcopy -h <fichier.txt>''
 + 
 +Une autre méthode, plus compliquée mais qui permet de comprendre le mécanisme de copies de screen : 
 +  - Passer en mode scrollback buffer : ''Ctrl+a ['' (ou ''Esc''
 +  - 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) 
 +  - Lancer un éditeur de texte, par exemple vi (pour éviter les problèmes d'indentationpenser à passer en mode "paste": '':set paste'' 
 +  - Coller le buffer ''Ctrl+a ]'' 
 + 
 + 
 +=====Annexes=====
  
-  screen -d -m script.sh+====Exemple de template de conf====
  
-pour créer une nouvelle session sans l'attacher.+<code bash> 
 +# ne pas afficher le message au lancement 
 +startup_message off 
 +deflogin on 
 +vbell on 
 +vbell_msg "   Wuff  ----  Wuff!! 
 +defscrollback 1024 
 +bind ^k 
 +bind ^\ 
 +bind \\ quit 
 +bind K kill 
 +bind I login on 
 +bind O login off 
 +bind } history 
 +termcapinfo vt100 dl=5\E[M 
 +hardstatus off 
 +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 %= %| %d/%m/%y %c" 
 +termcapinfo xterm*|linux*|rxvt*|Eterm* OP 
 +termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
  
 +# ~/.screenrc
 +defscrollback 4096
 +startup_message off
 +caption always "%{bw}%H%{g} |%c %{y}%d.%m.%Y%{k} | %?%-Lw%?%{+b wk}%n*%f %t%?(%u)%?%{-b kw}%?%+Lw%? | %{-b rw} Load: %l %{k}"
 +</code>
informatique/logiciels/screen.1244492135.txt.gz · Last modified: 2013/10/14 20:55 (external edit)