V této příručce uvidíme, co je GNU Screen a základní použití příkazu Screen s příklady v operačních systémech Linux a Unix.
Co je obrazovka GNU?
Obrazovka GNU je terminálový multiplexer (správce oken). Jak název napovídá, Screen multiplexuje fyzický terminál mezi více interaktivními shelly, takže v každé relaci terminálu můžeme provádět různé úkoly.
Všechny relace obrazovky spouštějí své programy zcela nezávisle. Program nebo proces běžící v relaci obrazovky tedy zůstane spuštěn, i když je relace náhodně uzavřena nebo odpojena.
Například při upgradu Ubuntu serveru přes SSH, příkaz Screen bude pokračovat v procesu upgradu pro případ, že bude vaše relace SSH z nějakého důvodu ukončena.
GNU Screen nám umožňuje snadno vytvářet vícenásobné obrazovky, přepínat mezi různými relacemi, kopírovat text mezi relacemi, kdykoli připojit nebo odpojit relaci a tak dále.
GNU Screen je jedním z důležitých nástrojů příkazového řádku, který by se měli všichni správci Linuxu naučit a používat, kdekoli je to nutné.
Podívejme se, jak spravovat více relací terminálu pomocí příkazu Screen s příklady v Linuxu.
Instalace obrazovky GNU v Linuxu
GNU Screen je k dispozici ve výchozích úložištích většiny operačních systémů Linux.
Chcete-li nainstalovat GNU Screen na Arch Linux, EndeavourOS, Manjaro Linux, spusťte:
$ sudo pacman -S screen
V systémech Debian, Ubuntu, Linux Mint:
$ sudo apt-get install screen
Na Fedoře, RHEL, CentOS. AlmaLinux, Rocky Linux:
$ sudo dnf install screen
Nebo,
$ sudo yum install screen
Na CentOS 8 není Screen k dispozici v oficiálních repozitářích. Musíte tedy povolit [EPEL]
úložiště a poté nainstalovat obrazovku.
$ sudo dnf install epel-release
$ sudo dnf install screen
Na SUSE/openSUSE:
$ sudo zypper install screen
Pokračujme a podívejme se na některé příklady příkazů na obrazovce.
Příklady příkazů na obrazovce
Výchozí zkratka předpony pro všechny příkazy na obrazovce je Ctrl+a
. Tuto zkratku musíte často používat při používání obrazovky. Takže si zapamatujte tuto klávesovou zkratku.
Vytvořit novou relaci obrazovky
Vytvořme novou relaci obrazovky a připojte se k ní. Chcete-li to provést, zadejte do terminálu následující příkaz:
screen
Nyní spusťte jakýkoli program nebo proces uvnitř této relace. Spuštěný proces nebo program bude pokračovat, i když budete odpojeni od této relace.
Odpojit od relací obrazovky
Chcete-li se odpojit od relace obrazovky, stiskněte Ctrl+a a d . Nemusíte stisknout obě kombinace kláves současně. Nejprve stiskněte Ctrl+a a poté stiskněte d . Po odpojení od relace uvidíte výstup podobný níže.
[detached from 29149.pts-0.sk]
Zde, 29149 je ID obrazovky a pts-0.sk je název relace obrazovky. Relace obrazovky můžete připojit, odpojit a ukončit pomocí ID obrazovky nebo názvu příslušné relace.
Vytvořit pojmenovanou relaci
Můžete také vytvořit relaci obrazovky s libovolným vlastním jménem podle vašeho výběru, jiným než výchozí uživatelské jméno, jak je uvedeno níže.
screen -S ostechnix
Výše uvedený příkaz vytvoří novou relaci obrazovky s názvem "xxxxx.ostechnix" a okamžitě se k němu připojte. Chcete-li se odpojit od aktuální relace, stiskněte Ctrl+a následuje d .
Pojmenování relací obrazovky může být užitečné, když chcete zjistit, které procesy běží na kterých relacích. Například, když se sada LAMP uvnitř relace skládá, můžete ji jednoduše pojmenovat jako níže.
screen -S lampstack
Vytvářejte oddělené relace
Někdy možná budete chtít vytvořit relaci, ale nechcete ji automaticky připojovat. V takových případech spusťte následující příkaz k vytvoření oddělené relace s názvem "senthil" :
screen -S senthil -d -m
Nebo krátce:
screen -dmS senthil
Výše uvedený příkaz vytvoří relaci nazvanou „senthil“, ale nepřipojí se k ní.
Seznam relací obrazovky
Chcete-li zobrazit všechny spuštěné relace (připojené nebo odpojené), spusťte:
screen -ls
Ukázkový výstup:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Detached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Jak můžete vidět, mám tři běžící relace a všechny jsou oddělené.
Pokud nebyly spuštěny žádné relace obrazovky, získáte výstup jako níže.
No Sockets found in /run/screen/S-sk.
Připojit k relacím obrazovky
Pokud se chcete k relaci kdykoli připojit, například 29415.ostechnix , jednoduše spusťte:
screen -r 29415.ostechnix
Nebo,
screen -r ostechnix
Nebo použijte ID obrazovky:
screen -r 29415
Chcete-li ověřit, zda jsme připojeni k výše uvedené relaci, jednoduše uveďte seznam otevřených relací a zkontrolujte.
screen -ls
Ukázkový výstup:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Attached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Jak vidíte na výše uvedeném výstupu, jsme aktuálně připojeni k 29415.ostechnix zasedání. Chcete-li opustit aktuální relaci, stiskněte ctrl+a, d.
Vytvářejte vnořené relace
Když spustíme příkaz "screen", vytvoří pro nás jednu relaci. Můžeme však vytvořit vnořené relace (relace uvnitř relace).
Nejprve vytvořte novou relaci nebo připojte k otevřené relaci. Chystám se vytvořit novou relaci s názvem „vnořená“.
screen -S nested
Nyní stiskněte Ctrl+a a c uvnitř relace k vytvoření další relace. Toto opakujte, abyste vytvořili libovolný počet vnořených relací obrazovky. Každé sezení bude přiděleno číslo. Číslo bude začínat od 0 .
Na další relaci se můžete přesunout stisknutím Ctrl+n a přejděte na předchozí stisknutím Ctrl+p .
Zde je seznam důležitých klávesových zkratek pro správu vnořených relací.
- Ctrl+a ” - Vypsat všechny relace
- Ctrl+a 0 - Přepněte na číslo relace 0
- Ctrl+a n - Přepnout na další relaci
- Ctrl+a p - Přepnout na předchozí relaci
- Ctrl+a S - Rozdělit aktuální oblast vodorovně na dvě oblasti
- Ctrl+a l - Rozdělit aktuální oblast vertikálně na dvě oblasti
- Ctrl+a Q - Zavřete všechny relace kromě aktuální
- Ctrl+a X - Zavřete aktuální relaci
- Ctrl+a \ - Zabijte všechny relace a ukončete obrazovku
- Ctrl+a ? - Zobrazit klávesové zkratky. Chcete-li to ukončit, stiskněte ENTER.
Uzamknout relace
Obrazovka má možnost uzamknout relaci obrazovky. Chcete-li tak učinit, stiskněte Ctrl+a a x . Pro uzamčení obrazovky zadejte své heslo pro Linux.
Screen used by sk <sk> on ubuntuserver. Password:
Protokolování relací
Možná budete chtít zaznamenat vše, když jste v relaci obrazovky. Chcete-li tak učinit, stiskněte Ctrl+a a H .
Případně můžete povolit protokolování při zahájení nové relace pomocí -L parametr.
screen -L
Od této chvíle budou všechny aktivity, které jste v rámci relace provedli, zaznamenávány a ukládány do souboru s názvem screenlog.x ve vašem $HOME adresáři. Zde, x je číslo.
Obsah souboru protokolu můžete zobrazit pomocí cat příkaz nebo jakékoli aplikace pro prohlížení textu.
Doporučené čtení:
- Jak zaznamenávat vše, co děláte v terminálu
Relace automatického spuštění obrazovky
Automatické spouštění relací obrazovky výrazně pomůže při spuštění dlouho běžícího procesu přes SSH. Pokud z jakéhokoli důvodu ztratíte připojení k síti, proces bude pokračovat v relaci obrazovky ve vzdáleném systému a můžete se k ní znovu připojit, až bude síť opět online. Chcete-li vědět, jak automaticky spustit obrazovku při spuštění systému, přejděte na následující odkaz.
- Jak automaticky spustit relaci obrazovky v systému Linux při přihlášení
Zkontrolujte, zda jste relace obrazovky nebo ne
Jak jste si mohli všimnout, normální relace a relace obrazovky budou vypadat úplně stejně. Neuvidíte žádnou zřejmou indikaci, zda jste uvnitř relace obrazovky nebo normální relace. Chcete-li zjistit, zda jste v relaci obrazovky nebo ne, postupujte podle kroků uvedených v níže uvedeném odkazu.
- Jak zkontrolovat, zda jste v relaci obrazovky nebo ne v systému Linux
Kill Screen sessions
Pokud již relace není vyžadována, jednoduše ji zabijte. Chcete-li zabít oddělenou relaci s názvem "senthil":
screen -r senthil -X quit
Nebo,
screen -X -S senthil quit
Nebo,
screen -X -S 29415 quit
Pokud nejsou žádné otevřené relace, uvidíte následující výstup:
$ screen -ls No Sockets found in /run/screens/S-sk.
Další podrobnosti naleznete na manuálových stránkách.
$ man screen
Existuje také podobný nástroj příkazového řádku s názvem "Tmux" který dělá stejnou práci jako GNU Screen. Chcete-li se o tom dozvědět více, podívejte se do následujícího průvodce.
- Příklady příkazů Tmux pro správu více relací terminálu