přejít na obsah přejít na navigaci

Linux E X P R E S, Screen: Správce sezení v terminálu

Screen: Správce sezení v terminálu

konzole.jpg

Možná to také znáte, připojíte se přes SSH na vzdálený počítač a během důležité aktualizace je připojení najednou ztraceno, nebo spustíte nějakou časově náročnější úlohu, např. kompilaci či skript, a protože vše trvá déle než jste původně předpokládali, přemýšlíte nad tím, zda spojení ukončit a příště se o to pokusit znovu, nebo ještě počkat a domů vyrazit o chvíli později. Tak přesně v těchto a mnoha dalších případech se vám hodí program screen.


reklama

Screen je vcelku malý nástroj, který vám umožní spravovat více různých sezení, které dál poběží i v okamžiku, kdy se od počítače odpojíte (ať už z vlastní vůle nebo z důvodu vyšší moci), ke kterým se budete moci později kdykoliv opět připojit a zkontrolovat jejich výsledek. Ale dost bylo teorie, pojďme se podívat jak na to.

Pro instalaci programu screen v Debianu a jemu podobných systémech bude stačit zadat něco jako aptitude install screen. V jiných distribucích tomu bude podobně.

Nové sezení spustíte jednoduše zadáním příkazu screen. Objeví se vám krátké informační okno, které potvrďte klávesou [Enter] a dál už pracujete podobně jako v klasické konzoli. Jediný rozdíl spočívá v tom, že jakmile zadáte příkaz exit, dojde k ukončení screenu. Doteď by to nebylo zas až tak zajímavé. Zkuste ovšem místo klasického příkazu exit stisknout klávesovou zkratku [Ctrl + a] a pak ještě písmeno „d“. Objeví se vám krátká informace o tom, že jste se odpojili od obrazovky screen.

Spuštění screenuSpuštění screenu

Příkaz pro odpojení od screenu funguje ať se děje cokoliv, může vám zrovna běžet kompilace, můžete zrovna kopírovat pomocí Midnight Commanderu nebo můžete mít spuštěné stahování wget či jinou libovolnou aplikaci. I když se odpojíte, program zůstává běžet a tak je to podobné, jako když se jenom podíváte na obrazovku jiného počítače. Jedna z mála věcí, která screen spolehlivě zabije je restartování počítače.

A jak že se znovu připojíte? Máte-li spuštěnou pouze jednu virtuální obrazovku screen, bude stačit zadat příkaz:

screen -r

Pokud máte spuštěno více obrazovek screen, objeví se vám jejich seznam, který vypadá např. takto:

There are several suitable screens on:
	5488.pts-1.imhotep	(3.11.2009 17:36:55)	(Detached)
	5471.pts-1.imhotep	(3.11.2009 17:34:09)	(Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Seznam spuštěných screenů zobrazíte také zadáním příkazu: screen -ls.

Více screenů najendouVíce screenů najendou

Do příslušného okna se pak dostanete zadáním:

screen -r 5488.pts-1.imhotep

Nebo zkráceně jenom:

screen -r 5488

Pokročilá práce se screen

Trochu sadomasochisticky může působit možnost spuštění další obrazovky v samotném screenu. A jak že se to provádí? Zadejte [Ctrl + a] následované písmenem „c“. Tím se vytvoří další obrazovka v aktuálním screenu. Mezi těmito obrazovkami se pak přepínáme pomocí tlačítek [Ctrl + a] „n“ pro další obrazovku a [Ctrl + a] + „p“ pro předchozí obrazovku. Jak je vidět, obrazovek je možno vytvořit hned víc a libovolně mezi nimi procházet. Jakmile stisknete oblíbené [Ctrl + a] „d“ pro odpojení od screenu, odpojíte se od všech. Později si je ovšem můžete znovu obvyklým způsobem spustit.

Kompletní seznam zkratek screenu si zobrazíte zadáním kombinace [Ctrl + a] následované symbolem „?“. Tím se vám zobrazí seznam všech možností.

Screen vám také umožní monitorovat ticho nebo naopak aktivitu v ostatních oknech. K tomu slouží [Ctrl + a] „m“ pro monitorování aktivity a [Ctrl + a] „_“ pro monitorování ticha. Jakmile se pak přepnete do dalšího okna screenu budete na aktivitu (nebo ticho) sledovaného okna upozorněni krátkou hláškou v levé dolní částí obrazovky. Na můj vkus je sice trochu krátká, ale rychlé přepnutí můžete provést zadáním [Ctrl + a] „'“ (jednoduchá uvozovka) následované zadáním čísla obrazovky nebo pomocí [Ctrl + a] „"“ (dvojité uvozovky) a vybráním okna ze seznamu.

Zkratkových kláves a možností screenu je ještě víc, ale proč hned vypisovat jejich seznam. Osobně jsem si dlouhou dobu vystačil s těmi opravdu základními (vytvoření nového screenu a opětovné připojení k němu). Teď, když jsem začetl do nápovědy, tak možná ještě časem začnu používat nová okna a přepínání mezi nimi. ;-)

Využití screenu při SSH (nebo jiném) připojení

Pokud screen nainstalujete na server, můžete se pomocí normálního SSH připojit, spustit screen a začít stahovat novou verzi Mandriva Linuxu či Ubuntu, nebo kompilovat nějaký komplexnejší program. Poté screen odpojíte a odpojíte se z SSH připojení. Stahování / kompilace bude pokračovat i když už přes SSH připojeni nebudete. Později se můžete znovu připojit a situaci zkontrolovat.

Nahoru

Odkazy

(Jako ve škole)
Průměr: 1,00 | Hodnotilo: 5
 

Top články z OpenOffice.cz

Příspěvky

Miroslav Hrončok Screen: Správce sezení v terminálu
Miro Hrončok 5. 11. 2009, 00:54:50
Odpovědět  Odkaz 
Díky, tohle jsem potřeboval. Nevěděl jsem, jak na serveru něco spustit a odpojit se, aby to běželo dál.
Re:Screen: Správce sezení v terminálu
Frantisek S. 9. 11. 2009, 14:42:45
Odpovědět  Odkaz 
ze by "prikaz &" ?
Martin Šín Re:Re:Screen: Správce sezení v terminálu
Martin Šín 9. 11. 2009, 16:05:27
Odpovědět  Odkaz 
Toto zhyne při odpojení ...
Re:Re:Re:Screen: Správce sezení v terminálu
ldx 21. 11. 2009, 23:12:11
Odpovědět  Odkaz 
( cmd &) - kulaty zavorky = samostatny proces, slozeny { } = proces je potomkem aktualniho (bash terminalu). screen je dobrej na slozitejsi veci, ke kterym se clovek potrebuje vratit.
Screen: Správce sezení v terminálu
grim 5. 11. 2009, 06:13:34
Odpovědět  Odkaz 
je možné (nechat si) spustit screen automaticky po připojení přes ssh?
Martin Šín Re:Screen: Správce sezení v terminálu
Martin Šín 5. 11. 2009, 07:31:28
Odpovědět  Odkaz 
No, já bych přidal řádek "screen" (nebo lépe "/usr/bin/screen") - bez těch uvozovek do souboru .bashrc v domovském adresáři uživatele, ke kterému se připojujete... Screen se pak spustí po přihlášení.
Miroslav Hrončok Re:Re:Screen: Správce sezení v terminálu
Miro Hrončok 5. 11. 2009, 07:41:58
Odpovědět  Odkaz 
Což ale není dobré, protože hele:
1. připojím se na ssh a automaticky s emi pustí screen
2. pustím stahování videa z dovolené
3. odpojím se od screenu i ssh
[pauza]
4. připojím se na ssh a chci pustit screen -r, místo toho se mi pustí nový screen
Martin Šín Re:Re:Re:Screen: Správce sezení v terminálu
Martin Šín 5. 11. 2009, 07:47:26
Odpovědět  Odkaz 
Máš pravdu, pak bychom to upravili třeba takto: "screen -r || screen". Zdá se mi, že to i funguje ..
Martin Šín Re:Re:Re:Re:Screen: Správce sezení v terminálu
Martin Šín 5. 11. 2009, 07:48:46
Odpovědět  Odkaz 
No anebo tam dát jen to screen -r a jednou ten screen prostě spustit ručně. ;-) (Si připadám jak spammer, takových příspěvků)
Miroslav Hrončok Re:Re:Re:Screen: Správce sezení v terminálu
Miro Hrončok 5. 11. 2009, 07:49:09
Odpovědět  Odkaz 
Dal bych tam:
if [ "$(pidof SCREEN)" ]; then # bůhvíproč je to velkým
screen -r # případně screen -ls, podle vámi preferovaného chování
else
screen
fi
Re:Re:Re:Screen: Správce sezení v terminálu
Ondřej Válek 5. 11. 2009, 08:19:31
Odpovědět  Odkaz 
Použijte

screen -DRS default

neboli "dej mi screen s názvem sezení 'default', pokud neexistuje, tak ho vytvoř, a pokud existuje a má ho někdo jiný připojený, tak ho odpoj a dej mi ho". Výsledek je takový, že ten scree dostanete vždy, nikdy se nevytváří zbytečně nový a navíc se k němu automaticky dostanete i když vám třeba kvůli výpadku zatuhne SSH spojení.
Re:Re:Re:Re:Screen: Správce sezení v terminálu
grim 5. 11. 2009, 08:52:24
Odpovědět  Odkaz 
díky všem zúčastněným
Screen: Správce sezení v terminálu
pbd 5. 11. 2009, 08:42:03
Odpovědět  Odkaz 
Pokud se vám stane, že už něco spustíte mimo screen (nebo tmux) a musíte se odpojit, můžete zkusit poslat proces na pozadí (ctrl+z), nechat běžet dál (bg), zakázat shellu, aby posílal při ukončení SIGHUP (set NOHUP) a odpojit se. Není to samozřejmě náhrada za screen, jelikož po odpojení už proces nedostanete nijak na popředí (opravte mě prosím), ale třeba kopírování nějakého souboru to zachránit může.
Vít Baloun Re:Screen: Správce sezení v terminálu
Vít Baloun 9. 11. 2009, 10:02:57
Odpovědět  Odkaz 
jde to. mrkněte se na příkazy fg a bg, je to jeden ze základních konceptů unixu a je dost šikovné s tím umět pracovat. V kostce: příkazem jobs vypíšete, co zrovna běží v souvislosti s vaším sezením na pozadí a můžete se mezitím přepínat pomocí fg a bg. Pomocí ctrl+Z přepnete běžící úlohu do pozadí, přesněji řečeno ji zastavíte. Pak ji buď hodíte do popředí pomocí fg anebo ji rozběhnete v pozadí pomocí bg. Stadnardně se odpojuje aplikace už při jejím startu od terminálu přidáním znaku & na konec příkazu. Pokud tedy chcete například něco spustit a odhlásit se od terminálu (ssh) aniž by příkaz skončil, zkuste to pomocí třebas
$ nohup dlouhotrvajici_prikaz &
Pozor, takový příkaz je pak sice rezistentní vůči HANGUP (= třeba odhlášení), ale i nadále jde zabít třeba pomocí SIGTERM. Pokud ho spustíte a potřebujete nějak pracovat s jeho interaktivitou (zadat heslo... ono to stále vidíte, protože stderr se pořád týká vašeho sezení), hodíte si ho do popředí pomocí fg... Atd atd. Co bych se tu rozepisloval, mrkněte na man nohup, tam to budete mít bez faktických chyb, které jsem tu mohl uvést já :-)
Já to používám místo screenu, sice to není pohodlné, ale ve většině případů to postačí.
Screen: Správce sezení v terminálu
Nfn 5. 11. 2009, 23:26:24
Odpovědět  Odkaz 
Screen je bezva. A jeho rozšíření screen-profiles nebo nověji byobu je ještě lepší.
Vyzkoušejte, já používám třeba v Ubuntu.
https://launchpad.net/~byobu/+archive/ppa
Lukáš Zapletal Screen: Správce sezení v terminálu
zapletal 6. 11. 2009, 22:30:43
Odpovědět  Odkaz 
Screen patří mezi "top" programy, které instaluji ihned po nové instalaci. Kromě toho taky: vim a mc :-)
Screen: Správce sezení v terminálu
Vojta 9. 11. 2009, 10:11:06
Odpovědět  Odkaz 
Rád bych upozornil na podobný článek týkající se screenu, který vyšel před nějakým časem na Linuxsoftu.
http://www.linuxsoft.cz/article.php?id_article=1100
Screen: Správce sezení v terminálu
Petr 12. 01. 2010, 14:11:04
Odpovědět  Odkaz 
http://www.pixelbeat.org/lkdb/screen.html - tabulka klávesových zkratek + příklad nastavení.

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Martin Šín

Martin Šín

Martin Šín (*1980) vystudoval pedagogickou fakultu a nyní pracuje jako učitel matematiky a výpočetní techniky na střední škole. Ve volném čase překládá a také hraje hry (ani jedno mu příliš nejde). V práci se snaží prosazovat open-source programy.


  • Distribuce: Debian
  • Hodnocení autora: **

| proč linux



Public Relations

Extrémní virtuální servery s SSD úložištěm

Pojmy, jako jsou cloud a virtualizace, na nás v dnešní době vykukují zpoza každého rohu. A není divu. Služby založené na virtualizaci fyzického hardwaru se těší velké oblibě a často jsou vnímány jako levnější alternativa k fyzickému serveru. Dedikované virtuální servery od Coolhousingu jsou však jiné.

Pokračování ...