GNU/Linux >> Linux Esercitazione >  >> Linux

Suggerimenti per l'utilizzo dello schermo

Cosa succede quando sei connesso a un sistema remoto, utilizzando un programma di lunga durata, e quindi la connessione si interrompe? Le probabilità sono, come minimo, che dovrai riavviare il programma e, nel peggiore dei casi, avrai un danneggiamento dei dati. Per aiutare a aggirare questo problema, alcuni programmi vengono eseguiti in una shell di finestra sul sistema. Un esempio molto semplice di questo è lo screen programma:

[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

Questo apre la mia nuova shell su rhel7dev sistema. Eseguirò il ping comando di seguito dall'interno di quella sessione:

[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

Ora mostrerò come staccare dalla sessione per simulare un'interruzione di rete o semplicemente lasciare qualcosa in esecuzione durante la notte. Per farlo, premo Ctrl , tieni premuto quel tasto, quindi premi A , quindi premi D . Ciò mi riporta al prompt SSH predefinito e sono quindi in grado di eseguire screen -ls per vedere la mia sessione distaccata:

[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 ~]#

[ Potrebbe interessarti anche: Lavorare con le pipe sulla riga di comando di Linux ]

Per riprendere la mia sessione sullo schermo, digito screen -x perché c'era solo una sessione come opzione. Questo mi ha riportato alla sessione dello schermo in cui il ping il comando è ancora in esecuzione:

[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 ~]#

Posso avere più sessioni di schermo contemporaneamente:

[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 ~]#

In ciascuna di queste tre sessioni dello schermo, posso avere comandi in esecuzione o semplicemente lasciare una sessione seduta al prompt.

Uno screen -x predefinito non funzionerà per riprendere una sessione ora a causa delle schermate multiple in esecuzione:

[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 ~]#

Per collegarmi a una delle mie sessioni, devo eseguire screen -x e aggiungi una quantità sufficiente del nome visualizzato per essere univoco:

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

[root@rhel7dev ~]#

Invece di limitarti a una sola sessione o ricordare cosa è in esecuzione su quale schermo, puoi impostare un nome per la sessione usando il -S argomento:

[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 ~]#

Per uscire da una sessione dello schermo, puoi digitare exit oppure premi Ctrl+A e poi D .

Ora che sai come avviare, interrompere ed etichettare screen sessioni entriamo un po' più in profondità. Per dividere la sessione dello schermo a metà verticalmente, premi Ctrl+A e poi | tasto (Maiusc+Barra rovesciata ). A questo punto, avrai la tua sessione schermo con il prompt a sinistra:

Per passare allo schermo a destra, premi Ctrl+A e poi la scheda chiave. Il cursore si trova ora nella sessione corretta, ma non viene visualizzato alcun messaggio. Per ricevere un messaggio, premi Ctrl+A e poi C . Posso farlo più volte per ottenere più divisioni verticali sullo schermo:

Ora puoi passare avanti e indietro tra i due riquadri dello schermo utilizzando Ctrl+A+Tab .

Cosa succede quando cat fuori un file più grande di quanto la tua console possa visualizzare e quindi alcuni contenuti scorrono oltre? Per scorrere indietro nel buffer, premi Ctrl+A e poi Esc . Ora potrai usare i tasti cursore per spostarti sullo schermo e tornare indietro nel buffer.

Ci sono altre opzioni per screen , quindi per vederli, premi Ctrl , quindi A , quindi il punto interrogativo :

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ] 

Ulteriori letture possono essere trovate nella pagina man per screen . Questo articolo è una rapida introduzione all'uso dello screen comando in modo che una sessione remota disconnessa non finisca per uccidere accidentalmente un processo. Un altro programma simile a screen è tmux e puoi leggere su tmux in questo articolo.


Linux
  1. 3 consigli per la stampa con Linux

  2. Utilizzo di Bash per l'automazione

  3. Utilizzo dello strumento SS per la risoluzione dei problemi di rete

  4. Utilizzo delle variabili in SQLCMD per Linux

  5. Sto usando virtio per il mio guest KVM?

Suggerimenti per l'utilizzo del comando top in Linux

Consigli/trucchi utili per Meld per utenti intermedi

Suggerimenti per l'utilizzo di tmux

Il comando di sospensione tramite il comando dello schermo non viene visualizzato in Ps?

Suggerimenti essenziali per l'installazione e l'utilizzo di testo sublime su Ubuntu

Come assegnare un nome a uno schermo?