Consejos para usar la pantalla | Activar el administrador del sistema

¿Qué sucede cuando está conectado a un sistema remoto, utilizando un programa de ejecución prolongada, y luego se pierde la conexión? Lo más probable es que, como mínimo, tenga que reiniciar el programa y, en el peor de los casos, tenga datos corruptos. Para solucionar este problema, algunos programas se ejecutan en un shell de ventana en el sistema. Un ejemplo muy básico de esto es el screen programa:

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

[[email protected] ~]# screen

Esto abre mi nuevo caparazón en el rhel7dev sistema. voy a ejecutar el ping Comando a continuación desde dentro de esta sesión:

[[email protected] ~]# 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 mostraré cómo desconectarse de la sesión para simular una interrupción de la red o simplemente dejar que algo funcione durante la noche. Para hacer esto, golpeo control, mantenga presionado y luego presione A, entonces presione D. Esto me lleva de vuelta al indicador de SSH predeterminado y luego puedo ejecutar screen -ls para ver mi sesión separada:

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

[[email protected] ~]#

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

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

Puedo tener múltiples sesiones de pantalla al mismo tiempo:

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

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

[[email protected] ~]# screen
[detached from 25706.pts-0.rhel7dev]
[[email protected] ~]# 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.

[[email protected] ~]#

En cada una de estas tres sesiones de pantalla, puedo ejecutar comandos o simplemente salir de una sesión cuando se me solicite.

Un defecto screen -x no funcionará para reanudar una sesión ahora debido a que se están ejecutando varias pantallas:

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

[[email protected] ~]#

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

[[email protected] ~]# screen -x 257
[detached from 25706.pts-0.rhel7dev]

[[email protected] ~]#

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 el -S argumento:

[[email protected] ~]# screen -S "db upgrade"
[detached from 25778.db upgrade]

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

[[email protected] ~]# screen -x "db upgrade"
[detached from 25778.db upgrade]

[[email protected] ~]#

Para salir de una sesión de pantalla, puede escribir exit o golpear Control + A después D.

Ahora que sabe cómo iniciar, detener y etiquetar screen sesiones, profundicemos un poco más. Para dividir su sesión de pantalla a la mitad verticalmente, toque Control + A y luego el | llave (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 Control + A y luego el Lengua llave. Su cursor ahora está en la sesión correcta, pero no hay aviso. Para obtener un aviso Control + A después contra. Puedo hacer esto varias veces para obtener múltiples divisiones verticales en la pantalla:

Ahora puede cambiar entre los dos paneles de pantalla usando Ctrl + A + Tabulador.

¿Qué pasa cuando tú cat un archivo más grande de lo que su consola puede mostrar y, por lo tanto, desplazamiento de contenido? Para volver al búfer, presione Control + A después Esc. Ahora podrá usar las teclas del cursor para moverse por la pantalla y volver al búfer.

Hay otras opciones para screen, luego para verlos, presione control, entonces A, entonces la punto de interrogación:

Para obtener más información, consulte la página man de screen. Este artículo es una introducción rápida al uso del screen para que una sesión remota desconectada no termine matando accidentalmente un proceso. Otro programa similar a screen es tmux y puedes seguir leyendo tmux en este articulo.

Artículos de interés

Subir