2022-01-05 15:12 Doba čtení: 18 min

Jak používat příkaz obrazovky Linuxu

Pomocí nástroje Linux screen můžete běžící aplikace v terminálu přesunout do pozadí a kdykoli je potřebujete, vrátit je zpět do popředí. Umožňuje také rozdělení obrazovky a funguje i při SSH připojení, a to i po odpojení a opětovném připojení!

Co je to příkaz screen?

Příkaz screen je terminálový multiplexor s rozsáhlými možnostmi. Je to nástroj s obrovským potenciálem. Manuálová stránka tohoto příkazu čítá přes 4100 řádků.

Níže jsou uvedeny nejčastější situace, kdy se příkaz screen používá, a dále se jim budeme v tomto článku věnovat:

  • Obvyklý postup je vytvoření nového okna s shellem, spuštění příkazu a následné přesunutí okna na pozadí (tzv. "odpojení"). Chcete-li sledovat průběh vašeho procesu, můžete okno znovu zobrazit ("znovu připojit") a pokračovat v práci. To je ideální pro dlouhotrvající procesy, u kterých nechcete riskovat jejich přerušení zavřením terminálového okna.
  • Jakmile máte aktivní relaci screen, můžete vytvářet další okna a v nich spouštět další procesy. Mezi těmito okny lze snadno přepínat a sledovat jejich stav. Také je možné rozdělit terminálové okno na vertikální nebo horizontální části a zobrazit tak různé obrazovky současně.
  • Můžete se připojit k vzdálenému počítači, vytvořit relaci screen a spustit proces. Poté se můžete odpojit od serveru, znovu se připojit a proces bude stále běžet.
  • Je možné sdílet relaci screen mezi dvěma různými SSH připojeními, což umožňuje dvěma uživatelům sledovat stejný obsah v reálném čase.

Instalace nástroje screen

Pro instalaci nástroje screen v systému Ubuntu použijte následující příkaz:

sudo apt-get install screen

Pro instalaci nástroje screen v systému Manjaro použijte tento příkaz:

sudo pacman -Sy screen

V systému Fedora použijte následující příkaz:

sudo dnf install screen

Začínáme s nástrojem screen

Pro spuštění nástroje screen zadejte jednoduchý příkaz a stiskněte Enter:

screen

Zobrazí se informace o licenci. Stisknutím mezerníku zobrazíte druhou stránku, nebo stisknutím Enter se vrátíte do příkazového řádku.

Zůstane vám příkazový řádek a zdá se, že se nic nestalo. Nyní ale pracujete v shellu uvnitř multiplexovaného terminálového emulátoru. Proč je to užitečné? Začněme proces, který bude trvat dlouho. Stáhneme zdrojový kód nejnovějšího linuxového jádra a přesměrujeme ho do souboru s názvem latest_kernel.zip.

K tomu použijeme následující příkaz:

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

Stahování začíná a výstup příkazu curl zobrazuje jeho průběh.

Další krok nelze zobrazit, protože se jedná o stisknutí kláves. Stisknete Ctrl+A, uvolníte klávesy a stisknete klávesu d pro odpojení obrazovky.

Proces stahování pokračuje, ale okno se stahováním je nyní skryté. Vrátíte se do terminálu, ze kterého jste spustili relaci screen. Zobrazí se zpráva o odpojení okna screen s označením 23167.pts-0.wdzwdz.

Pro opětovné připojení budete potřebovat číslo ze začátku názvu okna. Pokud ho zapomenete, vždy můžete použít parametr -ls (list) pro zobrazení seznamu odpojených oken:

screen -ls

Jakmile jste připraveni, použijte parametr -r (reattach) a číslo relace pro opětovné připojení, například takto:

screen -r 23167

Okno běžící na pozadí se nyní vrátí do okna terminálu, jako by nikdy nebylo odpojené.

Pokud proces má doběhnout do konce, tak se tak nakonec stane. Pokud jde o trvalý proces, budete ho chtít nakonec ukončit. V obou případech, jakmile proces skončí, můžete pro ukončení obrazovky zadat příkaz exit. Alternativně můžete stisknout Ctrl+A a poté K pro vynucené ukončení okna.

Zadejte následující příkaz:

exit

Vrátíte se do předchozího terminálového okna, které bude stále zobrazovat příkaz, který jste použili pro opětovné připojení okna. Protože jsme zavřeli jediné odpojené okno, zobrazí se zpráva o ukončení nástroje screen.

Použití pojmenovaných relací screen

Pro pojmenování relace screen můžete použít parametr -S (název relace). Pro opětovné připojení k relaci je pohodlnější použít zapamatovatelné jméno místo číselného identifikátoru. Pro pojmenování relace "bigfile" zadejte následující:

screen -S bigfile

Po spuštění relace screen se zobrazí prázdné okno s příkazovým řádkem. Budeme stahovat velký soubor, takže můžeme použít dlouhotrvající proces jako příklad.

Zadáme následující:

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

Jakmile stahování začne, stiskneme Ctrl+A a poté D pro odpojení relace. Pro zobrazení detailů o naší odpojené relaci použijeme parametr -ls (list):

screen -ls

Kromě číselného identifikátoru (23266) vidíme i název naší relace (bigfile). Pro její opětovné připojení zadejte následující příkaz včetně názvu relace:

screen -r bigfile

Jsme opět připojeni k našemu oknu stahování a vidíme, že stahování stále probíhá.

Po dokončení stahování napíšeme exit pro uzavření relace okna.

Použití nástroje screen s více okny

Zatím jsme používali screen pro spuštění jednoho procesu na pozadí v odpojeném okně. Ale screen toho dokáže mnohem více. Nyní spustíme několik procesů, které nám umožní sledovat některé aspekty našeho počítače.

Pro zahájení relace screen s názvem "monitor" zadejte následující:

screen -S monitor

V příkazovém řádku naší nové relace okna spustíme dmesg s parametry -H (human-readable) a -w (wait for new messages). Tento příkaz zobrazí zprávy z jádra a nové zprávy se objeví, jakmile dorazí.

Zadáme následující:

dmesg -H -w

Zobrazí se existující zprávy. Nejsme vráceni do příkazového řádku, protože dmesg čeká na nové zprávy a zobrazí je, jakmile se objeví.

Chceme spustit další aplikaci, proto potřebujeme nové okno screen. Stisknutím Ctrl+A a poté C vytvoříme nové okno. V něm použijeme příkaz watch s opakovaným spouštěním vmstat pro získání často aktualizovaného zobrazení využití virtuální paměti v našem počítači.

Do nového příkazového řádku zadáme následující:

watch vmstat

Zobrazí se výstup příkazu vmstat a bude se aktualizovat každé dvě sekundy.

Nyní máme spuštěné dva procesy. Pro přepínání mezi okny screen stiskněte Ctrl+A a číslo okna. První okno, které jsme vytvořili, je okno nula (0), další je okno 1 a tak dále. Pro přepnutí do prvního okna (dmesg) stiskněte Ctrl+A a 0.

Stisknutím Ctrl+A a 1 se vrátíme do okna s vmstat.

To je docela šikovné! Můžeme stisknout Ctrl+A a poté D pro odpojení od relace; později se můžeme znovu připojit. Obě relace budou stále spuštěné. Pro přepínání mezi okny opakovaně stiskneme Ctrl+A a číslo (0 nebo 1) okna, na které chceme přepnout.

Nyní zobrazíme obě obrazovky v jednom okně. Pro tento krok je vhodné roztáhnout terminálové okno do takové velikosti, aby to mělo smysl. Naše příklady jsou omezeny velikostí našich snímků obrazovky, takže naše okna budou vypadat trochu stísněně.

Pro provedení tohoto kroku stiskněte Ctrl+A a poté Shift+S (vyžaduje se velké "S").

Okno se rozdělí na dvě "oblasti".

Horní oblast stále zobrazuje vmstat a spodní oblast je prázdná. Kurzor je zvýrazněný na snímku níže. Pro přesun do spodní oblasti stiskněte Ctrl+A a poté Tab.

Kurzor se přesune do spodní oblasti, která je vlastně prázdné místo. Není to shell, takže do něj nemůžeme nic psát. Pro zobrazení užitečného obsahu stiskněte Ctrl+A a poté "0" pro zobrazení okna s dmesg v této oblasti.

Tím získáme dva živé výstupy v jednom rozděleném okně. Pokud okno odpojíme stisknutím Ctrl+A a D a poté ho znovu připojíme, ztratíme zobrazení s rozděleným panelem. Můžeme ho však obnovit pomocí následujících klávesových zkratek:

  • Ctrl+A, S: Horizontální rozdělení okna.
  • Ctrl+A, Tab: Přesun do spodní oblasti.
  • Ctrl+A, 0: Zobrazení nultého okna ve spodní oblasti.

Můžeme jít ještě o krok dále. Nyní rozdělíme spodní panel svisle a přidáme do zobrazení třetí proces. S kurzorem ve spodní oblasti stiskneme Ctrl+A a C pro vytvoření nového okna s shellem. Ve spodní oblasti se zobrazí nové okno a příkazový řádek.

Nyní spustíme příkaz df pro kontrolu využití souborového systému:

df

Jakmile se df spustí, stiskneme Ctrl+A a znak svislice (|). Tím se spodní oblast rozdělí svisle. Stisknutím Ctrl+A a Tab se přesuneme do nové oblasti. Poté stiskneme Ctrl+A a 0 pro zobrazení okna s dmesg.

Také můžete přecházet z oblasti do oblasti a přidávat další svislá nebo vodorovná rozdělení. Zde je několik dalších užitečných klávesových kombinací:

  • Ctrl+A, Tab: Přeskakování mezi aktuální a předchozí oblastí.
  • Ctrl+A, Q: Zavře všechny oblasti kromě aktuální.
  • Ctrl+A, X: Zavře aktuální oblast.

Použití nástroje screen přes SSH

Pomocí nástroje screen můžete spustit relaci okna, odpojit ji, aby běžela na pozadí, odhlásit se nebo znovu přihlásit a relaci opět připojit.

Provedeme SSH připojení k našemu počítači z jiného pomocí příkazu ssh. Je nutné zadat název účtu, ke kterému se připojujeme, a adresu vzdáleného počítače.

Pro náš příklad zadáme následující:

ssh [email protected]

Po ověření a přihlášení na vzdáleném počítači zadejte následující příkaz pro zahájení relace screen s názvem "ssh-geek":

screen -S ssh-geek

<img src="https://etechblog.cz/wp-content/uploads/2022/01/1641394304_208_Jak-pouzivat-prikaz-obrazovky-Linuxu.png" alt="Příkaz "screen -S ssh-geek"

Tomáš Dvořák
Autor
Czechia

Píše o bezpečnosti, webu a chytrých službách s důrazem na srozumitelnost.

Předchozí článek
Jak dlouho může koronavirus žít na smartphonu?
Další článek
Jak procházet Chrome na vašem iPhone pomocí gest přejetí