Obrazovka nebo obrazovka GNU je terminálový multiplexer. Pomocí tohoto můžete spouštět libovolný počet aplikací založených na konzole, interaktivních příkazových shellů, aplikací založených na kurzech atd. Pomocí obrazovky můžete pokračovat v běhu programu poté, co omylem zavřete terminál, nebo dokonce po odhlášení a později pokračovat, ať jste kdekoli.
Praktickým příkladem je situace, kdy spouštíte úlohu na vzdáleném počítači s Linuxem, na kterém máte ssh relaci. Mnohokrát jste viděli, jak se tato ssh relace ukončuje a vy už nemůžete pracovat. Zde je nástroj obrazovky, který vám pomůže obnovit relace.
Jak funguje obrazovka?
Když se zavolá obrazovka, vytvoří se jediné okno s shellem (nebo zadaným příkazem) a pak vám ustoupí z cesty, abyste mohli program používat jako obvykle. Poté můžete kdykoli vytvořit nová (celoobrazovková) okna s dalšími programy v nich (včetně více shellů), zabíjet aktuální okno, zobrazit seznam aktivních oken, kopírovat text mezi okny, přepínat mezi okny atd. .
Obrazovka spravuje relaci skládající se z jednoho nebo více oken každý obsahuje shell nebo jiný program. Kromě toho může obrazovka rozdělit displej terminálu na více regionů , přičemž každý zobrazuje obsah okna. Všechna okna spouštějí své programy zcela nezávisle na sobě. Programy pokračují v běhu, když jejich okno aktuálně není vidět, a dokonce i když je celá relace obrazovky odpojena od uživatelského terminálu. To je praktické, aby se zabránilo nedobrovolné relaci časového limitu ssh.
Nyní se podívejme, jak používat tento nástroj v Linuxu.
1) Vyvolat nová okna
Pokud příkaz screen ve vašem systému ještě není, můžete jej nainstalovat pomocí příkazu níže.
V Debianu
# apt-get install screen
Na Centos
# yum install screen
Obrazovku můžete spustit pouhým zadáním obrazovky do příkazového řádku. Tento příkaz obrazovky spustí nové okno na obrazovce.
# screen
Můžete otevřít nové okno na obrazovce a také pojmenovat okno, například nahoře. Vytvoří relaci s identifikovanou tímto názvem. Název lze později použít k opětovnému připojení.
# screen -S aloft
Všimněte si, že veškerou svou práci můžete dělat tak, jak jste v normálním prostředí CLI.
2) Seznam všech procesů obrazovky
Jelikož jsme schopni spouštět nová okna na obrazovce, je možné zobrazit aktuálně otevřené obrazovky včetně těch běžících na pozadí. Zobrazí seznam všech existujících relací obrazovky.
# screen -ls
There is a screen on:
10437.aloft (Attached)
1 Socket in /var/run/screen/S-root.
3) Hlavní příkaz obrazovky
S obrazovkou je možné pracovat pomocí některých příkazů. Níže uvádíme hlavní užitečnější příkazy.
Ctrl-a
následujec
:vytvořit nová oknaCtrl-a
následujew
:zobrazí seznam všech aktuálně otevřených okenCtrl-a
následujeA
:přejmenování aktuálních oken. Název se objeví, když vypíšete seznam oken otevřených pomocíCtrl-a
následujew
.Ctrl-a
následujen
:přejděte na další oknaCtrl-a
následujep
:přejít na předchozí oknaCtrl-a
následovaný Ctrl-a:zpět na poslední použitá okna.Ctrl-a
následované číslem od 0 do X:přejděte do oken č. X.Ctrl-a
následuje"
:vyberte okna, do kterých chcete přejít.Ctrl-a
následujek
:zavře aktuální okna (kill)Ctrl-a
následujeS
:rozdělit aktuální okna vodorovně. Pro přepínání mezi okny stiskněteCtrl-a
následujeTab
.Ctrl-a
následovaný|
:vertikálně rozdělit aktuální oknaCtrl-a
následujed
:odpojit relaci obrazovky bez jejího zastaveníCtrl-a
následujer
:znovu připojte relaci oddělené obrazovkyCtrl-a
následuje[
:spuštění režimu kopírováníCtrl-a
následovaný]
:vložte zkopírovaný text
4) Zobrazit parametr obrazovky
Pro nápovědu si můžete vypsat všechny parametry obrazovky. Chcete-li to provést, zadejte Ctrl-a
následovaný znakem ?
. Zobrazí se seznam všech příkazů.
5) Odpojení relace
Nejlepší výhodou příkazu screen je možnost odpojit relaci obrazovky. Můžete zahájit relaci obrazovky na jednom počítači v kanceláři, odpojit relaci od místního terminálu, jít domů, vzdáleně se přihlásit k našemu kancelářskému počítači a znovu připojit relaci obrazovky k terminálu našeho domácího počítače. Během této doby se všechny úlohy na vašem kancelářském počítači nadále vykonávaly. Tato funkce se používá, aby se zabránilo ztrátě dat, ke které náhle dojde během přerušení ssh připojení.
Abychom dobře pochopili, o čem mluvíme, uveďme si příklad. Spouštíme instalační proces.
Nyní odpojíme obrazovku pomocí Ctrl-a
následuje d
. Můžeme to zkontrolovat pomocí příkazu níže.
# screen -ls
There is a screen on:
12449.win (Detached)
1 Socket in /var/run/screen/S-root.
Obrazovku je možné odpojit pomocí screen -d
příkaz následovaný id obrazovky nebo jejím názvem. To znamená, že budete muset otevřít další okna nebo konzolu, abyste odpojili relaci, pokud na aktuální konzoli probíhá proces. Nejprve musíte vypsat aktuální připojenou obrazovku.
# screen -ls
There is a screen on:
13686.win200 (Attached)
1 Socket in /var/run/screen/S-root.
Nyní na novém terminálu zadejte příkaz níže.
# screen -d 13686
nebo můžete použít jméno
# screen -d win200
Budete mít výstup, jak je uvedeno níže, který označuje, že obrazovka byla odpojena.
[remote detached from 13686.win200]
6) Znovu připojte relaci
Po odpojení obrazovky je možné ji znovu připojit pomocí příkazu. Normálně vaše relace obrazovky stále funguje, takže všechny vaše procesy nejsou zastaveny. Před opětovným připojením relace je třeba uvést relaci jako výše a poté vybrat relaci, kterou chcete znovu připojit.
# screen -r 13686
nebo můžete použít
# screen -r win200
Můžete vidět, že po opětovném připojení relace okna ukazují konec procesu, který je dokončen. To znamená, že můžete pracovat na ssh a odpojit relaci, kterou znovu připojíte u vás doma, abyste mohli pokračovat ve svém pracovním procesu, aniž byste cokoli ztratili.
7) Vytvořte nový interaktivní shell
Pokud máte nějaké úkoly a nechcete o svou práci přijít, je možné vytvořit nový interaktivní shell. Některé interaktivní shelly (číslované od 0 do X) můžete snadno otevřít v jednom okně terminálu. Když zahájíte novou relaci, budete v shell 0 .
Chcete-li to provést, musíte vytvořit nová okna ve stávajících oknech pomocí Ctrl-a
následuje c
. Budete mít něco jako níže.
Můžete vidět obrazovka 3 v horní části snímku obrazovky, což znamená, že jsme na třetí obrazovce. V dolní části také vidíme 3
8) Přepínání mezi okny obrazovky
Pokud jste otevřeli více než jedno okno obrazovky, můžete mezi jednotlivými okny přepínat stisknutím Control-a
následuje space
nebo číslo pláště. Chcete-li například přepnout na shell číslo 1, stiskněte Control-a
pak 1
. Například se přesuneme na první obrazovku.
Horní a spodní část snímku obrazovky ukazuje, že jsme na první obrazovce.
9) Rozdělit okna
Chcete-li mít globální přehled o své práci, budete možná muset rozdělit okna místo toho, abyste měli více oken. Ctrl-a
následuje S
nebo |
rozdělit obrazovku vodorovně nebo svisle. Operaci je možné opakovat bez omezení. Chcete-li přesunout další okna, použijte Ctrl-a
následuje Tab
.
Když je kurzor na spodních oknech, můžete vytvořit nové okno (Ctrl-a
následuje c
) nebo zavolejte existující okno (Ctrl-a
následované číslem).
Chcete-li zavřít rozdělená okna, použijte Ctrl-a
následovaný X
(Všimněte si, že se jedná o velké písmeno).
10) Znovu se připojte k odpojené relaci ssh
Když se poprvé přihlásíte,
- spuštěním obrazovky spustíte relaci obrazovky. Získáte další shell, spouštějte v něm příkazy.
# screen -S remote_session
- Po dokončení odpojte relaci obrazovky a poté se odhlaste do ssh
[detached from 20995.remote_session]
- Nejprve můžete uvést všechny relace obrazovky
# screen -ls
There are screens on:
20995.remote_session (Detached)
14331.daby (Attached)
14134.mom (Detached)
3 Sockets in /var/run/screen/S-root.
- Znovu se připojte k relaci obrazovky a pokračujte v práci
# screen -d -r remote_ression
Příkaz screen se nejvíce používá pro relaci ssh, protože pomáhá pokračovat v práci po odpojení bez ztráty aktuálně probíhajících procesů.
11) Posuňte se v oknech obrazovky nahoru
Protože obrazovka přebírá správu vašich vzdálených programů, nemůžete používat funkce posouvání emulátoru terminálu při spuštění obrazovky. Pro přístup k vyrovnávací paměti pro posun zpět musíte použít příkazy obrazovky.
- Použijte
Ctrl-a
následujeescape
- Stiskněte
Up
aDown
šipky neboPgUp
aPgDn
pro procházení předchozího výstupu.
Na snímku obrazovky můžete vidět, kde je můj kurzor. Každý virtuální terminál má svůj vlastní scrollback buffer.
12) Podívejte se na vlastníka každé relace obrazovky
screen -ls
nebo screen -list
příkazy vám zobrazují pouze vaše vlastní relace obrazovky, a to i pro uživatele root. Pokud vím, je to tak dobré, jak jen to může být pro obrazovku samotnou.
Pokud chcete vidět, které relace obrazovky byly zahájeny, kteří uživatelé se podívají do adresáře jednotlivých uživatelů v /var/run/screen/
.
# ls -lR /var/run/screen
/var/run/screen:
total 0
drwx------ 2 patrick patrick 60 Jun 17 20:47 S-patrick
drwx------ 2 root root 100 Jun 17 19:39 S-root
/var/run/screen/S-patrick:
total 0
srwx------ 1 patrick patrick 0 Jun 17 20:47 21941.pat_session
/var/run/screen/S-root:
total 0
srw------- 1 root root 0 Jun 9 16:45 14134.mom
srwx------ 1 root root 0 Jun 9 01:07 14331.daby
srwx------ 1 root root 0 Jun 17 20:46 20995.remote_session
13) Sdílení relace obrazovky s jedním účtem
Můžete mít dva lidi přihlášené ke stejnému účtu ze vzdálených míst. Mohou snadno sdílet relaci obrazovky (takže to, co jeden píše, vidí druhý a naopak). Chcete-li to provést:
- Vytvořte relaci pojmenované obrazovky:
# screen -d -m -S share_session
- Připojte se k relaci obrazovky v okně terminálu
# screen -x share_session
- Požádejte druhou osobu (přihlášenou do stejného účtu), aby se také připojila k relaci obrazovky
# screen -x share_session
budete mít přesně stejný výstup zobrazený na druhém místě. Vše, co se objeví na vašem terminálu, se objeví také na terminálu druhého uživatele.
14) Relace uzamčené obrazovky
Je možné zamknout relaci obrazovky bez uzamčení vašeho běžného uživatele relace. To znamená, že můžete opustit počítač a mít jistotu, že nikdo nepřijde k neoprávněným operacím. K tomu použijte příkaz Ctrl-a
následuje x
(Všimněte si, že se jedná o malé písmeno).
Screen used by root <root> on centos-01.
Password:
15) Ukončete relaci obrazovky
Až budete hotovi a budete chtít ukončit relaci obrazovky, můžete použít příkaz Ctrl-a
následuje k
. Budete vyzváni k potvrzení.
Můžete také použít příkaz exit. Pokud chcete uložit probíhající proces, můžete před ukončením relace jednoduše odpojit relaci obrazovky.
Závěr
Obslužný program obrazovky může monitorovat aktivitu nebo nečinnost okna. To je skvělé, pokud stahujete velké soubory, kompilujete nebo čekáte na výstup. V případě potřeby můžete dokonce spustit nějaký proces z počítače pomocí příkazu obrazovky a po dokončení jej odpojit.