{"id":500,"date":"2010-04-28T17:46:12","date_gmt":"2010-04-28T15:46:12","guid":{"rendered":"http:\/\/www.sbskl.com\/?p=500"},"modified":"2010-05-19T09:17:32","modified_gmt":"2010-05-19T07:17:32","slug":"conserver-les-splits-dans-screen","status":"publish","type":"post","link":"http:\/\/www.sbskl.com\/?p=500","title":{"rendered":"Conserver les splits dans screen"},"content":{"rendered":"<p>Screen est g&eacute;nial mais il a un d&eacute;faut : si vous le spliter, une fois d&eacute;tach&eacute;, vous perdez votre d&eacute;coupage. Il existe pourtant une astuce&#8230;<\/p>\n<p><!--more--><\/p>\n<h3>Explication<\/h3>\n<p>Le principe de screen est de permettre de lancer des programmes dans un terminal, de fermer ce terminal sans les arr&ecirc;ter et d&#39;en reprendre le contr&ocirc;le de n&#39;importe o&ugrave; en toute transparence.<\/p>\n<p>Screen perd ses splits lors du d&eacute;tachement. Donc, pour ne pas perdre les splits il faudrait ne pas d&eacute;tacher screen ce qui lui fait perdre tout son int&eacute;r&ecirc;t&#8230;<\/p>\n<p>Mais puisque screen permet &agrave; un programme de ne pas s&#39;arr&ecirc;ter, nous pourrions utiliser screen pour lancer screen ! Il suffirait alors de d&eacute;tacher\/rattacher le screen parent pour acc&eacute;der au screen enfant qui lui ne serait jamais d&eacute;tacher (puisqu&#39;enferm&eacute; dans le screen parent)&#8230;<\/p>\n<h3>D&eacute;monstration<\/h3>\n<p>On commence par d&eacute;marrer le screen enfant :<\/p>\n<pre>screen<\/pre>\n<p>On s&#39;en d&eacute;tache avec <strong>Ctrl+a d<\/strong>. On peut v&eacute;rifier sa pr&eacute;sence avec <strong>screen -ls<\/strong> :<\/p>\n<pre>$ screen -ls\r\nThere is a screen on:\r\n    30237.pts-0.pluton    (27.04.2010 23:13:12)    (Detached)\r\n1 Socket in \/var\/run\/screen\/S-sbskl.\r\n<\/pre>\n<p>On lance ensuite le screen parent :<\/p>\n<pre>screen\r\n<\/pre>\n<p>Une fois le screen parent lanc&eacute;, on rattache le screen enfant :<\/p>\n<pre>screen -r\r\n<\/pre>\n<p>Dans l&#39;absolu, c&#39;est termin&eacute;e &agrave; deux d&eacute;tails pr&egrave;s : Le premier est que pour dialoguer avec screen on utilise <strong>Ctrl+a<\/strong> mais l&agrave; nous avons un screen dans un screen. Donc pour dialoguer avec le screen parent, pas de probl&egrave;me (mais aucun int&eacute;r&ecirc;t puisque qu&#39;il se contente d&#39;h&eacute;berger le screen qui nous int&eacute;resse), c&#39;est toujours <strong>Ctrl+a<\/strong> mais pour dialoguer avec le screen enfant il faut utiliser <strong>Ctrl+a a<\/strong>. Exemple, pour afficher la liste des terminaux de l&#39;enfant : <strong>Ctrl+a a &quot;<\/strong>. Le deuxi&egrave;me d&eacute;tail est que si vous avez personnalis&eacute; le fichier <strong>.screenrc<\/strong> avec une belle hardstatus, le parent et l&#39;enfant auront chacun la leur. Pas tr&egrave;s jolie&#8230;<\/p>\n<h3>Am&eacute;lioration<\/h3>\n<p>Pour r&eacute;soudre ces deux probl&egrave;mes, nous allons dire au screen parent d&#39;utiliser un fichier de configuration sp&eacute;cifique qui contiendra une red&eacute;finition de <strong>Ctrl+a<\/strong> ainsi qu&#39;un rattachement automatique au screen enfant. Nous l&#39;appellerons <strong>.screenrc-parent<\/strong> :<\/p>\n<pre>escape ``\r\nscreen screen -r\r\n<\/pre>\n<p>Notez bien qu&#39;il s&#39;agit de l&#39;apostrophe invers&eacute; (AltGr+7)<\/p>\n<h3>R&eacute;sum&eacute;<\/h3>\n<p>Commencez par lancer le screen que vous allez utiliser (il utilise votre beau <strong>.screenrc<\/strong>):<\/p>\n<pre>screen\r\n<\/pre>\n<p>D&eacute;tachez le avec <strong>Ctrl+a d<\/strong> et lancez le screen parent :<\/p>\n<pre>screen -c .screenrc-parent\r\n<\/pre>\n<p>&Ocirc; miracle&#8230; vous &ecirc;tes directement dans votre screen enfant !<\/p>\n<p>Maintenant, vous pouvez spliter avec <strong>Ctrl+a S<\/strong> (ou <strong>Ctrl+a |<\/strong> pour un split vertical) et faire tout ce que vous voulez dans screen.<br \/>\n\tPar contre pour d&eacute;tacher screen sans perdre vos splits, il faut soit fermer la fen&ecirc;tre ou d&eacute;tacher le screen <u>parent<\/u>, avec <strong>`d<\/strong> (AltGr+7 d).<\/p>\n<p>Pour vous rattachez et retrouvez vos splits :<\/p>\n<pre>screen -dRR\r\n<\/pre>\n<p>Voil&agrave; !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Screen est g&eacute;nial mais il a un d&eacute;faut : si vous le spliter, une fois d&eacute;tach&eacute;, vous perdez votre d&eacute;coupage. Il existe pourtant une astuce&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,19],"tags":[8,11],"class_list":["post-500","post","type-post","status-publish","format-standard","hentry","category-linux","category-mac","tag-configuration","tag-outil"],"_links":{"self":[{"href":"http:\/\/www.sbskl.com\/index.php?rest_route=\/wp\/v2\/posts\/500","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.sbskl.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sbskl.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sbskl.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sbskl.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=500"}],"version-history":[{"count":19,"href":"http:\/\/www.sbskl.com\/index.php?rest_route=\/wp\/v2\/posts\/500\/revisions"}],"predecessor-version":[{"id":558,"href":"http:\/\/www.sbskl.com\/index.php?rest_route=\/wp\/v2\/posts\/500\/revisions\/558"}],"wp:attachment":[{"href":"http:\/\/www.sbskl.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sbskl.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sbskl.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}