GNU/Linux >> Znalost Linux >  >> Linux

Tipy pro používání obrazovky

Co se stane, když se připojíte ke vzdálenému systému pomocí dlouho běžícího programu a pak připojení přestane fungovat? Pravděpodobnost je minimálně, že budete muset restartovat program a v nejhorším případě budete mít poškození dat. Abychom tomu pomohli obejít, některé programy běží v prostředí okna v systému. Velmi základním příkladem je screen program:

[pgervase@pgervase ~]$ ssh [email protected]
X11 forwarding request failed on channel 0
Last login: Wed Jan 27 12:10:06 2021 from xxxxxxxx.redhat.com

[root@rhel7dev ~]# screen

Tím se otevře můj nový shell na rhel7dev Systém. Spustím ping příkaz níže zevnitř této relace:

[root@rhel7dev ~]# ping www.google.com
PING www.google.com (74.125.24.147) 56(84) bytes of data.
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=1 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=2 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=3 ttl=100 time=242 ms

Nyní ukážu, jak se odpojit od relace a simulovat výpadek sítě nebo jednoduše nechat něco běžet přes noc. Chcete-li to provést, stiskněte Ctrl , podržte tuto klávesu a poté stiskněte A a poté stiskněte D . To mě přivádí zpět k výchozímu příkazu SSH a pak jsem schopen spustit screen -ls k zobrazení mé oddělené relace:

[root@rhel7dev ~]# screen -x
[detached from 25665.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There is a screen on:
    25665.pts-0.rhel7dev    (Detached)
1 Socket in /var/run/screen/S-root.

[root@rhel7dev ~]#

[ Mohlo by se vám také líbit: Práce s kanály na příkazovém řádku systému Linux ]

Pro obnovení relace obrazovky napíšu screen -x protože bylo možné pouze jedno sezení. To mě přivedlo zpět k relaci obrazovky, kde byl ping příkaz stále běží:

[root@rhel7dev ~]# ping www.google.com
PING www.google.com (74.125.24.147) 56(84) bytes of data.
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=1 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=2 ttl=100 time=242 ms
<snipped>
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=19 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=20 ttl=100 time=242 ms
^C
--- www.google.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 20278ms
rtt min/avg/max/mdev = 242.105/242.197/242.727/0.576 ms
[root@rhel7dev ~]#

Mohu mít více relací obrazovky najednou:

[root@rhel7dev ~]# screen -ls
There is a screen on:
    25665.pts-0.rhel7dev    (Detached)
1 Socket in /var/run/screen/S-root.

[root@rhel7dev ~]# screen
[detached from 25693.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There are screens on:
    25693.pts-0.rhel7dev    (Detached)
    25665.pts-0.rhel7dev    (Detached)
2 Sockets in /var/run/screen/S-root.

[root@rhel7dev ~]# screen
[detached from 25706.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There are screens on:
    25706.pts-0.rhel7dev    (Detached)
    25693.pts-0.rhel7dev    (Detached)
    25665.pts-0.rhel7dev    (Detached)
3 Sockets in /var/run/screen/S-root.

[root@rhel7dev ~]#

V každé z těchto tří relací obrazovky mohu mít spuštěné příkazy nebo jednoduše opustit relaci sezením na výzvu.

Výchozí screen -x nyní nebude fungovat obnovení relace, protože běží několik obrazovek:

[root@rhel7dev ~]# screen -x
There are several suitable screens on:
    25706.pts-0.rhel7dev    (Detached)
    25693.pts-0.rhel7dev    (Detached)
    25665.pts-0.rhel7dev    (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

[root@rhel7dev ~]#

Abych se mohl připojit k jedné z mých relací, musím spustit screen -x a přidejte dostatek názvu obrazovky, aby byl jedinečný:

[root@rhel7dev ~]# screen -x 257
[detached from 25706.pts-0.rhel7dev]

[root@rhel7dev ~]#

Spíše než se snažit omezit se na jednu relaci nebo si pamatovat, co běží na které obrazovce, můžete relaci pojmenovat pomocí -S argument:

[root@rhel7dev ~]# screen -S "db upgrade"
[detached from 25778.db upgrade]

[root@rhel7dev ~]# screen -ls
There are screens on:
    25778.db upgrade    (Detached)
    25706.pts-0.rhel7dev    (Detached)
    25693.pts-0.rhel7dev    (Detached)
    25665.pts-0.rhel7dev    (Detached)
4 Sockets in /var/run/screen/S-root.

[root@rhel7dev ~]# screen -x "db upgrade"
[detached from 25778.db upgrade]

[root@rhel7dev ~]#

Chcete-li ukončit relaci obrazovky, můžete zadat exit nebo stiskněte Ctrl+A a poté D .

Nyní, když víte, jak spustit, zastavit a označit screen relací pojďme trochu více do hloubky. Chcete-li relaci obrazovky vertikálně rozdělit na poloviny, stiskněte Ctrl+A a poté | klávesa (Shift+zpětné lomítko ). V tomto okamžiku budete mít relaci obrazovky s výzvou vlevo:

Chcete-li přepnout na obrazovku vpravo, stiskněte Ctrl+A a poté Tab klíč. Váš kurzor je nyní ve správné relaci, ale žádná výzva. Chcete-li získat výzvu, stiskněte Ctrl+A a poté C . Mohu to udělat vícekrát, abych získal více vertikálních rozdělení na obrazovku:

Nyní můžete přepínat tam a zpět mezi dvěma panely obrazovky pomocí Ctrl+A+Tab .

Co se stane, když cat ven soubor, který je větší, než dokáže zobrazit vaše konzole, a tak se nějaký obsah posune kolem? Chcete-li se ve vyrovnávací paměti posunout zpět, stiskněte Ctrl+A a poté Esc . Nyní se budete moci pomocí kurzorových kláves pohybovat po obrazovce a vracet se zpět do vyrovnávací paměti.

Existují další možnosti pro screen , takže je zobrazíte stisknutím Ctrl a poté A a poté otazník :

[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ] 

Další informace naleznete v manuálové stránce screen . Tento článek je rychlým úvodem do používání screen příkaz, aby odpojená vzdálená relace neskončila náhodným zabitím procesu. Další program, který je podobný screen je tmux a můžete si přečíst o tmux v tomto článku.


Linux
  1. Linuxové tipy pro používání cronu k plánování úloh

  2. 3 tipy pro tisk s Linuxem

  3. Linuxové tipy pro používání GNU Screen

  1. 8 tipů pro příkazový řádek Linuxu

  2. 5 tipů pro GNU Debugger

  3. Tipy a triky pro použití CUPS pro tisk s Linuxem

  1. 3 solidní tipy na sebehodnocení pro systémové správce

  2. Použití nástroje SS pro řešení problémů se sítí

  3. Příkaz spánku pomocí příkazu obrazovky se v Ps nezobrazuje?