15 Comando de pantalla de Linux para negociar sesiones de terminal
La pantalla o pantalla GNU es un multiplexor de terminales. Con esto, puede ejecutar cualquier cantidad de aplicaciones basadas en consola, shells de comandos interactivos, aplicaciones basadas en cursos, etc. Puede usar la pantalla para seguir ejecutando el programa después de cerrar accidentalmente el terminal, o incluso después de cerrar la sesión y más tarde reanudar donde quiera que esté.
Un ejemplo práctico es cuando está ejecutando una tarea en una máquina Linux remota en la que tiene una sesión ssh. Muchas veces ha visto que esta sesión ssh se cierra y ya no puede trabajar. Aquí viene la utilidad de pantalla para ayudar a reanudar las sesiones.
¿Cómo funciona la pantalla?
Cuando se llama a la pantalla, crea una ventana única con un shell en ella (o el comando especificado) y luego se aparta de su camino para que pueda usar el programa como lo haría normalmente. Luego, en cualquier momento, puede crear nuevas ventanas (de pantalla completa) con otros programas en ellas (incluyendo más shells), eliminar la ventana actual, ver una lista de las ventanas activas, copiar texto entre ventanas, cambiar entre ventanas, etc. .
La pantalla gestiona un sesión que consta de uno o más ventanas cada uno contiene un shell u otro programa. Además, la pantalla puede dividir la pantalla de un terminal en múltiples regiones, cada uno mostrando el contenido de una ventana. Todas las ventanas ejecutan sus programas de forma completamente independiente entre sí. Los programas continúan ejecutándose cuando su ventana no está visible actualmente e incluso cuando toda la sesión de pantalla está desconectada del terminal del usuario. Esto es práctico para evitar una sesión de tiempo de espera ssh involuntaria.
Ahora veamos cómo usar esta utilidad en Linux.
1) Invocar nuevas ventanas
Si el comando de pantalla aún no está presente en su sistema, puede instalarlo con el comando a continuación.
En Debian
# apt-get install screen
En Centos
# yum install screen
Puede iniciar la pantalla simplemente escribiendo pantalla en el símbolo del sistema. Este comando de pantalla iniciará una nueva ventana dentro de la pantalla.
# screen
Puede iniciar una nueva ventana dentro de la pantalla y también le da un nombre a la ventana, por ejemplo, en alto. Crea una sesión con identificada por ese nombre. El nombre se puede utilizar para volver a adjuntar en una etapa posterior.
# screen -S aloft
Tenga en cuenta que puede hacer todo su trabajo como en el entorno CLI normal.
2) Enumere todos los procesos de la pantalla
Como podemos iniciar nuevas ventanas dentro de la pantalla, es posible mostrar las pantallas abiertas actualmente, incluidas las que se ejecutan en segundo plano. Enumerará todas las sesiones de pantalla existentes.
# screen -ls There is a screen on: 10437.aloft (Attached) 1 Socket in /var/run/screen/S-root.
3) Comando principal de la pantalla
Es posible operar con pantalla usando algunos comandos. Enumeraremos a continuación los principales comandos más útiles.
Ctrl-a
seguido porc
: crea una nueva ventanaCtrl-a
seguido porw
: muestra la lista de todas las ventanas abiertas actualmenteCtrl-a
seguido porA
: cambia el nombre de las ventanas actuales. El nombre aparecerá cuando enumere la lista de ventanas abiertas conCtrl-a
seguido porw
.Ctrl-a
seguido porn
: ir a las siguientes ventanasCtrl-a
seguido porp
: ir a las ventanas anterioresCtrl-a
seguido de Ctrl-a: volver a las últimas ventanas utilizadas.Ctrl-a
seguido de un número de 0 a X: vaya a las ventanas n ° X.Ctrl-a
seguido por"
: elija las ventanas en las que avanzar.Ctrl-a
seguido pork
: cierra las ventanas actuales (matar)Ctrl-a
seguido porS
: divide las ventanas actuales horizontalmente. Para cambiar entre las ventanas, hagaCtrl-a
seguido porTab
.Ctrl-a
seguido por|
: divide las ventanas actuales verticalmenteCtrl-a
seguido pord
: desconecta una sesión de pantalla sin detenerlaCtrl-a
seguido porr
: vuelve a adjuntar una sesión de pantalla separadaCtrl-a
seguido por[
: start the copy modeCtrl-a
followed by]
: pega el texto copiado
4) Mostrar parámetro de pantalla
Puede enumerar todos los parámetros de la pantalla para obtener ayuda. Para hacer esto, escriba Ctrl-a
seguido por el personaje ?
. Mostrará una lista de todos los comandos.
5) Sesión de desconexión
La mejor ventaja del comando de pantalla es la posibilidad de desconectar una sesión de pantalla. Puede iniciar una sesión de pantalla en una computadora en la oficina, desconectar la sesión de la terminal local, ir a casa, iniciar sesión en la computadora de nuestra oficina de forma remota y volver a conectar la sesión de pantalla a la terminal de nuestra computadora doméstica. Durante el tiempo transcurrido, todos los trabajos en la computadora de su oficina continuaron ejecutándose. Esta función se utiliza para evitar la pérdida de datos que se produce repentinamente durante la caída de la conexión ssh.
Para entender bien de qué estamos hablando, tomemos un ejemplo. Lanzamos un proceso de instalación.
Ahora despegaremos la pantalla con Ctrl-a
seguido por d
. Podemos verificar con el comando a continuación.
# screen -ls There is a screen on: 12449.win (Detached) 1 Socket in /var/run/screen/S-root.
Es posible separar la pantalla con screen -d
comando seguido de la identificación de la pantalla o su nombre. Significa que deberá abrir otra ventana o consola para desconectar la sesión si la consola actual tiene un proceso en curso. Primero debe enumerar la pantalla adjunta actual.
# screen -ls There is a screen on: 13686.win200 (Attached) 1 Socket in /var/run/screen/S-root.
Ahora en una nueva terminal, ingrese el comando a continuación.
# screen -d 13686
o puedes usar el nombre
# screen -d win200
Tendrá una salida como la siguiente que indica que la pantalla se desprendió.
[remote detached from 13686.win200]
6) Vuelva a conectar una sesión
Después de separar la pantalla, es posible volver a unirla con el comando. Normalmente, su sesión de pantalla sigue funcionando, por lo que no se detienen todos sus procesos. Antes de volver a conectar una sesión, debe enumerar la sesión como se indicó anteriormente y luego elegir la sesión que desea volver a conectar.
# screen -r 13686
o puedes usar
# screen -r win200
Puede ver que después de volver a adjuntar la sesión, las ventanas muestran el final del proceso que se completó. Significa que puede trabajar en ssh y desconectar una sesión que volverá a adjuntar en su casa para continuar su proceso de trabajo sin perder nada.
7) Crea un nuevo shell interactivo
Si tiene algunos trabajos que hacer y no quiere perder su trabajo, es posible crear un nuevo shell interactivo. Puede tener fácilmente algunos shells interactivos (numerados de 0 a X) abiertos en una ventana de terminal. Cuando inicie una nueva sesión, estará en cáscara 0.
Para hacer esto, necesita crear nuevas ventanas dentro de las ventanas existentes con Ctrl-a
seguido por c
. Tendrás algo como a continuación.
Puedes ver pantalla 3 en la parte superior de la captura de pantalla que indica que estamos en la tercera pantalla. En la parte inferior también podemos ver 3
8) Cambiar entre ventanas de pantalla
Cuando haya abierto más de una ventana de pantalla, para cambiar entre cada ventana, presione Control-a
seguido por space
o el número de la cáscara. Por ejemplo, para cambiar al shell número 1, presione Control-a
entonces 1
. Por ejemplo, pasaremos a la primera pantalla.
La parte superior e inferior de la captura de pantalla muestran que estamos en la primera pantalla.
9) Ventanas divididas
Para tener una vista global de su trabajo, puede necesitar dividir sus ventanas en lugar de tener múltiples ventanas. Ctrl-a
seguido por S
o |
divide tu pantalla horizontal o verticalmente. Es posible repetir la operación sin límite. Para mover otras ventanas, use Ctrl-a
seguido por Tab
.
Cuando el cursor está en las ventanas inferiores, puede crear una nueva ventana (Ctrl-a
seguido por c
) o llamar a una ventana existente (Ctrl-a
seguido de un número).
Para cerrar una ventana dividida, use Ctrl-a
seguido por X
(Tenga en cuenta que es el carácter en mayúsculas).
10) Vuelva a conectarse a una sesión ssh desconectada
Cuando inicie sesión por primera vez,
- ejecutar pantalla para iniciar una sesión de pantalla. Obtienes otro shell, ejecuta comandos en eso.
# screen -S remote_session
- Cuando haya terminado, desconecte la sesión de pantalla y luego cierre la sesión en ssh
[detached from 20995.remote_session]
- Puede enumerar todas las sesiones de pantalla primero
# screen -ls There are screens on: 20995.remote_session (Detached) 14331.daby (Attached) 14134.mom (Detached) 3 Sockets in /var/run/screen/S-root.
- Vuelva a conectarse a su sesión de pantalla y continúe con su trabajo
# screen -d -r remote_ression
El comando de pantalla se usa más para la sesión ssh porque ayuda a continuar su trabajo después de una desconexión sin perder los procesos actuales en curso.
11) Desplácese hacia arriba en las ventanas de la pantalla
Dado que la pantalla se encarga de administrar sus programas remotos, no puede usar las funciones de desplazamiento de su emulador de terminal mientras ejecuta la pantalla. Debe utilizar los comandos de pantalla para acceder al búfer de retroceso.
- Usar
Ctrl-a
seguido porescape
- presione el
Up
yDown
teclas de flecha o elPgUp
yPgDn
teclas para desplazarse por la salida anterior.
Puedes ver dónde está mi cursor en la captura de pantalla. Cada terminal virtual tiene su propio búfer de retroceso.
12) Ver al propietario de cada sesión de pantalla
los screen -ls
o screen -list
Los comandos solo le muestran sus propias sesiones de pantalla incluso para root. Hasta donde yo sé, eso es lo mejor para la pantalla.
Si desea ver qué sesiones de pantalla han sido iniciadas por qué usuarios buscan en cada directorio de usuarios en /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) Compartir una sesión de pantalla con una cuenta
Puede hacer que dos personas inicien sesión en la misma cuenta desde ubicaciones remotas. Pueden compartir fácilmente una sesión de pantalla (de modo que lo que uno escribe ve el otro y viceversa). Para hacer esto:
- Cree una sesión de pantalla con nombre:
# screen -d -m -S share_session
- Adjuntar a la sesión de pantalla en la ventana de su terminal
# screen -x share_session
- Haga que la otra persona (que haya iniciado sesión en la misma cuenta) también se adjunte a la sesión de pantalla
# screen -x share_session
tendrá exactamente la misma salida mostrada en la otra ubicación. Todo lo que aparecerá en su terminal también aparecerá en el terminal del otro usuario.
14) Sesión de pantalla de bloqueo
Es posible bloquear la sesión de la pantalla sin bloquear a su usuario de sesión normal. Significa que puede dejar su computadora y estar seguro de que nadie acudirá a operaciones no autorizadas. Para hacer esto, use el comando Ctrl-a
seguido por x
(Tenga en cuenta que es el carácter en minúsculas).
Screen used by root <root> on centos-01. Password:
15) Terminar sesión de pantalla
Cuando haya terminado y desee salir de la sesión de pantalla, puede usar el comando Ctrl-a
seguido por k
. Se le pedirá una confirmación.
También puede utilizar el comando de salida. Si desea guardar su proceso en progreso, puede simplemente desconectar su sesión de pantalla antes de terminar la sesión.
Conclusión
La utilidad de pantalla puede monitorear una ventana para detectar actividad o inactividad. Esto es genial si está descargando archivos grandes, compilando o esperando la salida. En ese momento, si es necesario, incluso puede iniciar algún proceso desde una computadora usando el comando de pantalla y desconectarlo cuando haya terminado.