GNU/Linux >> Tutoriales Linux >  >> Linux

Consejos para usar la pantalla

¿Qué sucede cuando está conectado a un sistema remoto, usando un programa de ejecución prolongada y luego se interrumpe la conexión? Lo más probable es que, como mínimo, tendrá que reiniciar el programa y, en el peor de los casos, tendrá datos dañados. Para ayudar a evitar esto, algunos programas se ejecutan en un shell de ventana en el sistema. Un ejemplo muy básico de esto es la screen programa:

[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

Esto abre mi nuevo shell en el rhel7dev sistema. Ejecutaré el ping Comando a continuación desde dentro de esa sesión:

[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

Ahora demostraré cómo desconectarse de la sesión para simular una interrupción de la red o simplemente dejar algo funcionando durante la noche. Para hacer esto, presiono Ctrl , mantén presionada esa tecla y luego presiona A , luego presiona D . Eso me lleva de vuelta al indicador SSH predeterminado y luego puedo ejecutar screen -ls para ver mi sesión separada:

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

[ También puede disfrutar: Trabajar con canalizaciones en la línea de comandos de Linux ]

Para reanudar mi sesión de pantalla, escribo screen -x porque solo había una sesión como opción. Eso me trajo de vuelta a la sesión de pantalla donde ping el comando aún se está ejecutando:

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

Puedo tener varias sesiones de pantalla a la vez:

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

En cada una de esas tres sesiones de pantalla, puedo tener comandos ejecutándose o simplemente dejar una sesión sentada en el aviso.

Una screen -x no funcionará para reanudar una sesión ahora debido a las múltiples pantallas que se ejecutan:

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

Para adjuntar a una de mis sesiones, necesito ejecutar screen -x y agregue suficiente nombre de pantalla para que sea único:

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

[root@rhel7dev ~]#

En lugar de tratar de limitarse a una sola sesión o recordar qué se está ejecutando en qué pantalla, puede establecer un nombre para la sesión usando -S argumento:

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

Para salir de una sesión de pantalla, puede escribir exit o pulsa Ctrl+A y luego D .

Ahora que sabe cómo iniciar, detener y etiquetar screen sesiones vamos a profundizar un poco más. Para dividir su sesión de pantalla a la mitad verticalmente presione Ctrl+A y luego el | tecla (Mayús+barra invertida ). En este punto, tendrá su sesión de pantalla con el mensaje a la izquierda:

Para cambiar a su pantalla a la derecha, presione Ctrl+A y luego la pestaña llave. Su cursor ahora está en la sesión correcta, pero no hay aviso. Para obtener un aviso, presione Ctrl+A y luego C . Puedo hacer esto varias veces para obtener múltiples divisiones verticales en la pantalla:

Ahora puede alternar entre los dos paneles de pantalla usando Ctrl+A+Tab .

¿Qué pasa cuando cat? saca un archivo que es más grande de lo que su consola puede mostrar y, por lo tanto, parte del contenido se desplaza? Para desplazarse hacia atrás en el búfer, presione Ctrl+A y luego Esc . Ahora podrá usar las teclas del cursor para moverse por la pantalla y volver al búfer.

Hay otras opciones para screen , para verlos pulsa Ctrl , luego A , luego el signo de interrogación :

[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ] 

Se pueden encontrar lecturas adicionales en la página del manual para screen . Este artículo es una introducción rápida al uso de la screen comando para que una sesión remota desconectada no termine matando un proceso accidentalmente. Otro programa que es similar a screen es tmux y puedes leer sobre tmux en este artículo.


Linux
  1. Consejos de Linux para usar GNU Screen

  2. Usando Bash para la automatización

  3. Uso de la herramienta SS para la resolución de problemas de red

  4. ¿Cómo asignar nombre a una pantalla?

  5. Uso de variables en SQLCMD para Linux

Consejos para usar el comando superior en Linux

Consejos/trucos útiles de Meld para usuarios intermedios

Consejos para usar tmux

¿El comando de suspensión usando el comando de pantalla no se muestra en Ps?

Consejos esenciales para instalar y usar Sublime Text en Ubuntu

¿Estoy usando virtio para mi invitado KVM?