GNU Screen

Kategorie: Nástroje

GNU Screen je velmi užitečný program pro práci v příkazové řádce, je nastavitelný manažer oken v konzoli s terminály VT100/ANSI a rozděluje je. Dovede rozdělovat celou obrazovku na terminály a přepíná mezi obrazovkami. Rozděluje fyzický terminál mezi několik procesů (často interatktivní shelly). Skýtá až 10 pracovních ploch v podobě shellu, které lze ještě rozdělit. Pro každý terminál je zde paměť historie rolování, mechanismus kopírovat-vložit který dovede přesouvat text mezi okny.

Když je spuštěn příkaz screen, vytvoří se samotné okno s konzolí uvnitř a můžeme s ní pracovat, jak jsme zvyklí. Kdykoli můžeme vytvořit nové okno s jiným programem uvnitř, zabít existující okno, zobrazit seznam oken, kopírovat a vkládat mezi okny, zobrazit historii rolování, přepínat mezi okny v libovolném stylu. Programy pokračující v pozadí pokračují v běhu, ikdyž jejich okno není viditelné. Když je program ukončen, okno se zavře a objeví se předchozí okno.

Ve spolupráci s programem Reptyr je skvělým pomocníkem pro vzdálenou administraci a práci.

Instalace

Alpine Linuxapk add screen
Arch Linuxpacman -S screen
CentOSyum install screen
FreeBSDpkg install screen
OpenSUSEzypper in screen
Ubuntu/Debianapt-get install screen

Nastavení

Nastavení programu je v souboru screenrc, který program používá uživatelský z domovského adresáře a poté hledá systémový v /etc. Primárně program hledá uživatelské nastavení v domovském adresáři.

  • ~/.screenrc
  • /etc/screenrc

Ukázky nastavení screenrc

hardstatus off 
hardstatus alwayslastline 
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W} %c %{g}]'
truecolors on 
hardstatus off 
backtick 0 5 5 "/bin/date" '+%Y-%m-%d' 
backtick 1 5 5 "/bin/date" '+%H:%M' 
hardstatus alwayslastline '%{#00ff00}[ %H ][%{#ffffff}%= %{7}%?%-Lw%?%{1;0}%{1}(%{15}%n%f%t%?(%u)%?%{1;0}%{1})%{7}%?%+Lw%?%? %=%{#00ff00}][ %{#00a5ff}%{6}%0%{#ffffff}%{7}%1%{#00ff00} ]'
  • Stavový panel nahoře:
hardstatus firstline
  • Uvítací hláška:
startup_message off
  • Vloží hardstatus do názvu okna:
backtick 1 5 5 true 
termcapinfo rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007' 
hardstatus string "screen (%n: %t)" 
caption string "%{= kw}%Y-%m-%d;%c %{= kw}%-Lw%{= kG}%{+b}[%n %t]%{-b}%{= kw}%+Lw%1`" 
caption always
  • Vypne vizuální upozornění:
vbell off
  • Po uzavření textového editoru jako například nano se nevyčistí text, pro nápravu:
altscreen on
  • Oprava názvů oken (bash):
windowlist string "%4n %h%=%f"

Příkazy v konzoli

  • -d -r Připojí znovu screen, když je potřeba, tak odpojí screen.
  • -D -R Připojí tady a teď:když běží sezení, připojí jej znovu. Když je to nezbytné, odpojí a odhlásí jej vzdáleně jako první. Když neběží, vytvoří nové sezení a informuje uživatele.
  • -h 4000 Definuje historii rolování na 4 000 řádků.
  • -list Zobrazí seznam sezení programu Screen.
  • -d -m Vytvoří sezení Screen, ale odpojí jej. Použitelné pro skripty spouštění.
  • -r Vrátí se na odpojené sezení.
  • -s program Nastaví výchozí shell na program.
  • -S jmeno-sezeni Vytvoří sezení s vlastním názvem.
  • -T terminal Určí výchozí terminál.
  • -U Spustí Screen v režimu UTF-8, nastaví kódování na UTF-8.
  • -v Vypíše verzi.
  • -x Připojí neodpojené sezení.
  • reptyr pid Připojí program s číslem pid do Screenu. Vyžaduje program Reptyr

Klávesové zkratky

Začátkem zkratek je vždy Ctrl + a a to v tabulce psát nehodlám, zbytečně by se nám to pletlo.

Když stiskneme Ctrl + a, máme zaktivované naslouchání klávesových zkratek GNU Screen (které trvá dokud se nestiskne nějaká klávesa) a pak stačí zadat jen zbývající:

cNové okno
wSeznam oken
0Číslo aktivní obrazovky
1Číslo aktivní obrazovky
2Číslo aktivní obrazovky
3Číslo aktivní obrazovky
4Číslo aktivní obrazovky
5Číslo aktivní obrazovky
6Číslo aktivní obrazovky
7Číslo aktivní obrazovky
8Číslo aktivní obrazovky
9Číslo aktivní obrazovky
nDalší okno
spaceDalší okno
pPředchozí okno
backspacePředchozí okno
SRozdělí okno horizontálně
lRozdělí obrazovku vertikálně
tabPřepne vstup na jiný region obrazovky při rozdělení
QZničí rozdělené regiony kromě aktivního, zruší rozdělení
APřejmenuje název okna
CVyčiští obrazovku
dOdpojí sezení z terminálu
D DOdpojí sezení a odhlásí
iZobrazí informace o oknu
lObnoví okno
tZobrazí systémové informace
vZobrazí verzi
kZabije okno
?Zobrazí klávesové zkratky
\Zabije všechna okna a ukončí Screen
:Režim vkládání příkazů
*Seznam připojených displejů

Sdílení sezení

  • Spustíme Screen na lokálním počítači, tím se nám vytvoří i sezení. Pokud si chceme sezení pojmenovat, použijeme atribut -S a název sezení.
screen -S sdilene
  • Pro připojení k aktivnímu sezení, které není odpojené, použijeme příkaz:
screen -x

Tipy

  • Každá klávesová zkratka programu začíná kombinací Ctrl + a
  • Pro připojení procesu do terminálu použijeme příkaz reptyr: reptyr pid
  • Byobu je rozšíření programu Screen