Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Contáctenos
  • LPI.org
103.5 Lección 2
Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
  1. Tema 103: Comandos GNU y Unix
  2. 103.5 Crear, supervisar y matar procesos
  3. 103.5 Lección 2

103.5 Lección 2

Certificación:

LPIC-1

Versión:

5.0

Tema:

103 Comandos GNU y Unix

Objetivo:

103.5 Crear, monitorear y matar procesos

Lección:

2 de 2

Introducción

Las herramientas y utilidades vistas en la lección anterior son muy útiles para el monitoreo de procesos en general. Sin embargo, un administrador del sistema puede necesitar ir un paso más allá. En esta lección discutiremos el concepto de multiplexores de terminales y aprenderemos sobre GNU Screen y tmux ya que, a pesar de los modernos y excelentes emuladores de terminales actuales, los multiplexores aún conservan algunas características interesantes y potentes para un administrador de sistemas productivo.

Características de los multiplexores terminales

En electrónica, un multiplexor (o mux) es un dispositivo que permite conectar múltiples entradas a una sola salida. Por lo tanto, un multiplexor terminal nos da la capacidad de cambiar entre diferentes entradas según sea necesario. Aunque no son exactamente lo mismo, screen y tmux comparten una serie de características comunes:

  • Cualquier invocación exitosa dará como resultado al menos una sesión que, a su vez, incluirá al menos una ventana. Las ventanas contienen programas.

  • Las ventanas se puede dividir en regiones o paneles, lo que puede ayudar a la productividad cuando se trabaja con varios programas simultáneamente.

  • Facilidad de control: para ejecutar la mayoría de los comandos, utilizan una combinación de teclas, el llamado comando prefijo o comando clave, seguido de otro caracter.

  • Las sesiones se pueden separar de su terminal actual (es decir, los programas se envían en segundo plano y continúan ejecutándose). Esto garantiza la ejecución completa de los programas sin importar si cerramos accidentalmente un terminal, experimentamos un congelamiento ocasional del terminal o incluso una pérdida de conexión remota.

  • Conexiones de Socket.

  • Modo de copia.

  • Son altamente personalizables.

GNU Screen

En los primeros días de Unix (1970-1980), las computadoras consistían básicamente en terminales conectados a una computadora central. Eso fue todo, sin múltiples ventanas o pestañas. Y esa fue la razón detrás de la creación de GNU Screen en 1987: emular múltiples pantallas VT100 independientes en un solo terminal físico.

Ventanas

La pantalla GNU se invoca simplemente escribiendo screen en la terminal. Primero verá un mensaje de bienvenida:

GNU Screen version 4.05.00 (GNU) 10-Dec-16

Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury
Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib Chowdhury
Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann
(...)

Presione la barra espaciadora o Enter para cerrar el mensaje y se le mostrará un símbolo del sistema:

$

Puede parecer que no ha pasado nada, pero el hecho es que screen ya ha creado y gestionado su primera sesión y ventana. El prefijo de comando de la pantalla es Ctrl+a. Para ver todas las ventanas en la parte inferior de la pantalla del terminal, escriba Ctrl+a-w:

0*$ bash

¡Ahí está, nuestra única ventana hasta ahora! Sin embargo, tenga en cuenta que el conteo inicia en 0. Para crear otra ventana, escriba Ctrl+a-c. Verá un nuevo mensaje. Comencemos con ps en esa nueva ventana:

$ ps
  PID TTY          TIME CMD
  974 pts/2    00:00:00 bash
  981 pts/2    00:00:00 ps

y escriba Ctrl+a-w nuevamente:

0-$ bash  1*$ bash

Ahí tenemos nuestras dos ventanas (observe el asterisco que indica la que se está mostrando en este momento). Sin embargo, como comenzaron con Bash, ambas reciben el mismo nombre. Ya que invocamos ps en nuestra ventana actual, cambiemos el nombre con el mismo nombre. Para eso, debe escribir Ctrl+a-A y escribir el nombre de la nueva ventana (ps) cuando se le solicite:

Set window's title to: ps

Ahora, creemos otra ventana pero proporcione un nombre desde el principio: yetanotherwindow. Esto se hace invocando screen con el modificador -t:

$ screen -t yetanotherwindow

Puede moverse entre ventanas de diferentes formas:

  • Usando Ctrl+a-n (ir a la ventana siguiente) y Ctrl+a-p (ir a la ventana anterior).

  • Usando Ctrl+a-número (vaya a la ventana número número).

  • Usando Ctrl+a-" para ver una lista de todas las ventanas. Puede moverse hacia arriba y hacia abajo con las teclas de flecha y seleccionar la que desee con Enter:

    Num Name                                                Flags
    
       0 bash                                                   $
       1 ps                                                     $
       2 yetanotherwindow

Al trabajar con ventanas, es importante recordar lo siguiente:

  • Las ventanas ejecutan sus programas de forma completamente independiente entre sí.

  • Los programas seguirán ejecutándose incluso si su ventana no está visible (también cuando se desconecta la sesión de pantalla, como veremos en breve).

Para eliminar una ventana, simplemente finalice el programa que se está ejecutando en ella (una vez que se elimine la última ventana, screen terminará). Alternativamente, use Ctrl+a-k mientras está en la ventana que desea eliminar; se le pedirá confirmación:

Really kill this window [y/n]

Window 0 (bash) killed.

Regiones

screen puede dividir la pantalla de un terminal en varias regiones para acomodar las ventanas. Estas divisiones pueden ser horizontales (Ctrl+a-S) o verticales (Ctrl+a-|).

Lo único que mostrará la nueva región es simplemente -- en la parte inferior, lo que significa que está vacío:

   1 ps                                                               --

Para moverse a la nueva región, escriba Ctrl+a-Tab. Ahora puede agregar una ventana mediante cualquiera de los métodos que ya hemos visto, por ejemplo: Ctrl+a-2. Ahora el -- debería haberse convertido en 2 yetanotherwindow:

$ ps                                                  $
  PID TTY          TIME CMD
 1020 pts/2    00:00:00 bash
 1033 pts/2    00:00:00 ps
$ screen -t yetanotherwindow




   1 ps                                                                2 yetanotherwindow

Los aspectos importantes a tener en cuenta al trabajar con regiones son:

  • Puede moverse entre regiones escribiendo Ctrl+a-Tab.

  • Puede terminar todas las regiones excepto la actual con Ctrl+a-Q.

  • Puede terminar la región actual con Ctrl+a-X.

  • Terminar una región no termina su ventana asociada.

Sesiones

Hasta ahora hemos jugado con algunas ventanas y regiones, pero todas pertenecen a la misma y única sesión. Es hora de empezar a jugar con sesiones. Para ver una lista de todas las sesiones, teclee screen -list o screen -ls:

$ screen -list
There is a screen on:
        1037.pts-0.debian       (08/24/19 13:53:35)     (Attached)
1 Socket in /run/screen/S-carol.

Esa es nuestra única sesión hasta ahora:

PID

1037

Name

pts-0.debian (indicando el terminal — en nuestro caso un pseudo terminal esclavo — y el nombre de host).

Status

Attached

Creemos una nueva sesión dándole un nombre más descriptivo:

$ screen -S "second session"

La pantalla del terminal se borrará y se le dará un nuevo mensaje. Puede comprobar las sesiones una vez más:

$ screen -ls
There are screens on:
        1090.second session     (08/24/19 14:38:35)     (Attached)
        1037.pts-0.debian       (08/24/19 13:53:36)     (Attached)
2 Sockets in /run/screen/S-carol.

Para cerrar una sesión, salga de todas sus ventanas o simplemente escriba el comando screen -S SESSION-PID -X quit (también puede proporcionar el nombre de la sesión). Deshagámonos de nuestra primera sesión:

$ screen -S 1037 -X quit

Se le enviará de vuelta al indicador de su terminal fuera de la screen. Pero recuerde, nuestra segunda sesión todavía está viva:

$ screen -ls
There is a screen on:
	1090.second session	(08/24/19 14:38:35)	(Detached)
1 Socket in /run/screen/S-carol.

Sin embargo, dado que matamos su sesión principal, se le asigna una nueva etiqueta: Detached.

Desvincular sesiones

Por varias razones, es posible que desee desconectar una sesión de pantalla de su terminal:

  • Para permitir que su computadora en el trabajo haga su trabajo y se conecte de forma remota más tarde desde casa.

  • Para compartir una sesión con otros usuarios.

Desconecte una sesión con la combinación de teclas Ctrl+a-d. Volverá a su terminal:

[detached from 1090.second session]
$

Para vincular nuevamente a la sesión, use el comando screen -r SESSION-PID. Alternativamente, puede usar el SESSION-NAME como vimos arriba. Si solo hay una sesión desvinculada, ninguna es obligatoria:

$ screen -r

Este comando es suficiente para volver a vincularla a nuestra segunda sesión:

$ screen -ls
There is a screen on:
        1090.second session      (08/24/19 14:38:35)     (Attached)
1 Socket in /run/screen/S-carol.

Opciones importantes para volver a adjuntar la sesión:

-d -r

Vuelva a conectar una sesión y, si es necesario, desconéctela primero.

-d -R

Igual que -d -r pero screen incluso creará la sesión primero si no existe.

-d -RR

Igual que -d -R. Sin embargo, utilice la primera sesión si hay más de una disponible.

-D -r

Vuelva a conectar una sesión. Si es necesario, desconecte y cierre la sesión de forma remota primero.

-D -R

Si se está ejecutando una sesión, vuelva a conectarla (desconecte y cierre la sesión de forma remota primero si es necesario). Si no se estaba ejecutando créelo y notifique al usuario.

-D -RR

Lo mismo que -D -R - solo que más fuerte.

-d -m

Inicie screen en modo independiente. Esto crea una nueva sesión pero no se vincula a ella. Esto es útil para los scripts de inicio del sistema.

-D -m

Igual que -d -m, pero no bifurca un nuevo proceso. El comando sale si la sesión termina.

Lea las páginas del manual de screen para conocer otras opciones.

Copiar y pegar: modo Scrollback

GNU Screen presenta un modo de copia o scrollback. Una vez ingresado, puede mover el cursor en la ventana actual y por el contenido de su historial usando las teclas de flecha. Puede marcar texto y copiarlo en ventanas. Los pasos a seguir son:

  1. Ingrese al modo de copia/scrollback: Ctrl+a-[.

  2. Vaya al principio del texto que desea copiar usando las teclas de flecha.

  3. Marque el comienzo del fragmento de texto que desea copiar: Espacio.

  4. Vaya al final del fragmento de texto que desea copiar usando las teclas de flecha.

  5. Marque el final del fragmento de texto que desea copiar: Espacio.

  6. Vaya a la ventana de su elección y pegue el fragmento de texto: Ctrl+a-].

Personalización de Screen

El archivo de configuración de todo el sistema para screen es /etc/screenrc. Alternativamente, se puede usar un ~/.screenrc a nivel de usuario. El archivo incluye cuatro secciones principales de configuración:

SCREEN SETTINGS

Puede definir la configuración general especificando la directiva seguida de un espacio y el valor como en: defscrollback 1024.

SCREEN KEYBINDINGS

Esta sección es bastante interesante ya que le permite redefinir combinaciones de teclas que quizás interfieran con su uso diario del terminal. Utilice la palabra clave bind seguida de un espacio, el carácter que se utilizará después del prefijo del comando, otro espacio y el comando como en: bind l kill (esta configuración cambiará la forma predeterminada de matar una ventana a Ctrl+a-l).

Para mostrar todos los enlaces de la pantalla, escriba Ctrl+a-? O consulte la página del manual.

Tip

Por supuesto, también puede cambiar el prefijo del comando. Por ejemplo, para ir de Ctrl+a a Ctrl+b, simplemente agregue esta línea: escape ^Bb.

TERMINAL SETTINGS

Esta sección incluye configuraciones relacionadas con el tamaño de la ventana de la terminal y los búferes, entre otros. Para habilitar el modo sin bloqueo para manejar mejor las conexiones ssh inestables, por ejemplo, se utiliza la siguiente configuración: defnonblock 5.

STARTUP SCREENS

Puede incluir comandos para que varios programas se ejecuten en el inicio de la pantalla; por ejemplo: screen -t top top (screen abrirá una ventana llamada top con top adentro).

tmux

tmux fue lanzado en 2007. Aunque es muy similar a screen, incluye algunas diferencias notables:

  • Modelo cliente-servidor: el servidor suministra una serie de sesiones, cada una de las cuales puede tener varias ventanas vinculadas que, a su vez, pueden ser compartidas por varios clientes.

  • Selección interactiva de sesiones, ventanas y clientes a través de menús.

  • La misma ventana se puede vincular a varias sesiones.

  • Disponibilidad de diseños de teclas vim y Emacs.

  • Soporte para terminales UTF-8 y 256 colores.

Ventanas

tmux se puede invocar simplemente escribiendo tmux en el símbolo del sistema. Se le mostrará un indicador de shell y una barra de estado en la parte inferior de la ventana:

[0] 0:bash*                                                        "debian" 18:53 27-Aug-19

Aparte del hostname, la hora y la fecha, la barra de estado proporciona la siguiente información:

Session name

[0]

Window number

0:

Window name

bash*. Por defecto, este es el nombre del programa que se ejecuta dentro de la ventana y, a diferencia de screen, tmux lo actualizará automáticamente para reflejar el programa en ejecución actual. Note el asterisco que indica que esta es la ventana visible actual.

Puede asignar nombres de sesión y ventana al invocar tmux:

$ tmux new -s "LPI" -n "Window zero"

La barra de estado cambiará en consecuencia:

[LPI] 0:Window zero*                                                 "debian" 19:01 27-Aug-19

El prefijo de comando de tmux es Ctrl+b. Para crear una nueva ventana, simplemente escriba Ctrl+b-c; se le llevará a un nuevo prompt y la barra de estado reflejará la nueva ventana:

[LPI] 0:Window zero- 1:bash*                                         "debian" 19:02 27-Aug-19

Como Bash es el shell subyacente, la nueva ventana recibe ese nombre de forma predeterminada. Inicie top y vea cómo cambia el nombre a top:

[LPI] 0:Window zero- 1:top*                                         "debian" 19:03 27-Aug-19

En cualquier caso, puede cambiar el nombre de una ventana con Ctrl+b-,. Cuando se le solicite, proporcione el nuevo nombre y presione Enter:

(rename-window) Window one

Puede mostrar todas las ventanas para su selección con Ctrl+b-w (use las teclas de flecha para moverse hacia arriba y hacia abajo y enter para seleccionar):

(0)  0: Window zero- "debian"
(1)  1: Window one* "debian"

De manera similar a screen, podemos saltar de una ventana a otra con:

Ctrl+b-n

ir a la siguiente ventana.

Ctrl+b-p

ir a la ventana anterior.

Ctrl+b-número

ir a la ventana número.

Para deshacerse de una ventana, use Ctrl+b-&. Se le pedirá confirmación:

kill-window Window one? (y/n)

Otros comandos de ventana interesantes incluyen:

Ctrl+b-f

buscar ventana por nombre.

Ctrl+b-.

cambiar el número de índice de la ventana.

Para leer la lista completa de comandos, consulte la página del manual.

Paneles

La función de división de ventanas de screen también está presente en tmux. Sin embargo, las divisiones resultantes no se llaman regiones sino paneles. La diferencia más importante entre regiones y paneles es que estos últimos son pseudo-terminales completas vinculadas a una ventana. Esto significa que matar un panel también matará su pseudo-terminal y cualquier programa asociado que se ejecute dentro.

Para dividir una ventana horizontalmente, usamos Ctrl+b-":

Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4050960 total,  3730920 free,   114880 used,   205160 buff/cache
KiB Swap:  4192252 total,  4192252 free,        0 used.  3716004 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1340 carol     20   0   44876   3400   2800 R  0.3  0.1   0:00.24 top
    1 root      20   0  139088   6988   5264 S  0.0  0.2   0:00.50 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.04 ksoftirqd/0
    4 root      20   0       0      0      0 S  0.0  0.0   0:01.62 kworker/0:0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0       0      0      0 S  0.0  0.0   0:00.06 rcu_sched
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
   10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S  0.0  0.0   0:00.01 watchdog/0
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 cpuhp/0
$
───────────────────────────────────────────────────────────────────────────────────────────────
$












[LPI] 0:Window zero- 1:Window one*                                      "debian" 19:05 27-Aug-19

Para dividirlo verticalmente, use Ctrl+b-%:

                                                                               │$
    1 root      20   0  139088   6988   5264 S  0.0  0.2   0:00.50 systemd     │
                                                                               │
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd    │
                                                                               │
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.04 ksoftirqd/0 │
    4 root      20   0       0      0      0 S  0.0  0.0   0:01.62 kworker/0:0 │
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H│
    7 root      20   0       0      0      0 S  0.0  0.0   0:00.06 rcu_sched   │
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh      │
    9 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0 │
                                                                               │
   10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drai│
n                                                                              │
   11 root      rt   0       0      0      0 S  0.0  0.0   0:00.01 watchdog/0  │
                                                                               │
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 cpuhp/0     │
                                                                               │
$                                                                              │
───────────────────────────────────────────────────────────────────────────────┴───────────────
$















[LPI] 0:Window zero- 1:Window one*                                      "debian" 19:05 27-Aug-19

Para destruir el panel actual (junto con su pseudo-terminal que se ejecuta dentro de él, junto con cualquier programa asociado), use Ctrl+b-x. Se le pedirá confirmación en la barra de estado:

kill-pane 1? (y/n)

Comandos de panel importantes:

Ctrl+b-↑,↓,←,→

moverse entre paneles.

Ctrl+b-;

pasar al último panel activo.

Ctrl+b-Ctrl+arrow key

cambiar el tamaño del panel en una línea.

Ctrl+b-Alt+arrow key

cambiar el tamaño del panel en cinco líneas.

Ctrl+b-{

intercambiar paneles (actual a anterior).

Ctrl+b-}

intercambiar paneles (actual a siguiente).

Ctrl+b-z

panel de acercar/alejar.

Ctrl+b-t

tmux muestra un reloj elegante dentro del panel (deténgalo presionando q).

Ctrl+b-!

convertir el panel en ventana.

Para leer la lista completa de comandos, consulte la página del manual.

Sesiones

Para listar sesiones en tmux puede usar Ctrl+b-s:

(0) + LPI: 2 windows (attached)

Alternativamente, puede usar el comando tmux ls:

$ tmux ls
LPI: 2 windows (created Tue Aug 27 19:01:49 2019) [158x39] (attached)

Solo hay una sesión (LPI) que incluye dos ventanas. Creemos una nueva sesión desde nuestra sesión actual. Esto se puede lograr usando Ctrl+b, teclee :new en el indicador, luego presione Enter. Se le enviará a la nueva sesión como se puede observar en la barra de estado:

[2] 0:bash*                                                       "debian" 19:15 27-Aug-19

Por defecto, tmux nombró la sesión 2. Para cambiarle el nombre, use Ctrl+b-$. Cuando se le solicite, proporcione el nuevo nombre y presione Enter:

(rename-session) Second Session

Puede cambiar de sesión con Ctrl+b-s (use las teclas de flecha y enter):

(0) + LPI: 2 windows
(1) + Second Session: 1 windows (attached)

Para cerrar una sesión, puede usar el comando tmux kill-session -t SESSION-NAME. Si escribe el comando desde la sesión adjunta actual, se le sacará de tmux y volverá a su sesión de terminal inicial:

$ tmux kill-session -t "Second Session"
[exited]
$

Desvincular sesiones

Al matar a Second Session estamos fuera de tmux. Sin embargo, todavía tenemos una sesión activa. Pídale a tmux una lista de sesiones y seguramente la encontrará allí:

$ tmux ls
LPI: 2 windows (created Tue Aug 27 19:01:49 2019) [158x39]

Sin embargo, esta sesión está separada de su terminal. Podemos vincularla con tmux attach -t SESSION-NAME (attach puede ser reemplazado por at o — simplemente — a). Cuando solo hay una sesión, la especificación del nombre es opcional:

$ tmux a

Ahora está de vuelta en su sesión; para desplegarla, presione Ctrl+b-d:

[detached (from session LPI)]
$
Tip

La misma sesión se puede vincular a más de un terminal. Si desea vincular una sesión asegurándose de que primero esté desconectada de cualquier otro terminal, use el modificador -d: tmux attach -d -t SESSION-NAME.

Comandos importantes para vincular/desvincular sesiones:

Ctrl+b-D

seleccione qué cliente desvincular.

Ctrl+b-r

Actualizar la terminal del cliente.

Para leer la lista completa de comandos, consulte la página del manual.

Copiar y pegar: modo Scrollback

tmux también presenta el modo scrollback básicamente de la misma manera que screen (recuerde usar el prefijo de comando de tmux y no el de screen). La única diferencia en cuanto a los comandos es que usa Ctrl+Espacio para marcar el comienzo de la selección y Alt+w para copiar el texto seleccionado.

Personalización de tmux

Los archivos de configuración para tmux se encuentran normalmente en /etc/tmux.conf y ~/.tmux.conf. Cuando se inicia, tmux utiliza estos archivos si existen. También existe la posibilidad de iniciar tmux con el parámetro -f para proporcionar un archivo de configuración alternativo. Puede encontrar un ejemplo de archivo de configuración tmux ubicado en /usr/share/doc/tmux/example_tmux.conf. El nivel de personalización que se puede lograr es realmente alto. Algunas de las cosas que puede hacer incluyen:

  • Cambiar la tecla de prefijo

    # Change the prefix key to C-a
    set -g prefix C-a
    unbind C-b
    bind C-a send-prefix
  • Establecer combinaciones de teclas adicionales para ventanas superiores a 9

    # Some extra key bindings to select higher numbered windows
    bind F1 selectw -t:10
    bind F2 selectw -t:11
    bind F3 selectw -t:12

Para obtener una lista completa de todos los enlaces, escriba Ctrl+b-? (Presione q para salir) o consulte la página del manual.

Ejercicios Guiados

  1. Indique si las siguientes declaraciones/características corresponden a la GNU Screen, tmux o ambos:

    Característica/Declaración GNU Screen tmux

    El prefijo de comando predeterminado es Ctrl+a

    Modelo cliente-servidor

    Los paneles son pseudo-terminales

    Matar una región no mata sus ventanas asociadas

    Las sesiones incluyen ventanas

    Las sesiones se pueden separar

  2. Instale GNU Screen en su computadora (nombre del paquete: screen) y complete las siguientes tareas:

    • Inicie el programa. ¿Qué comando utiliza?

    • Inicie top:

    • Usando el prefijo de la tecla de pantalla, abra una nueva ventana; luego, abra /etc/screenrc usando vi:

    • Liste las ventanas en la parte inferior de la pantalla:

    • Cambie el nombre de la ventana actual a vi:

    • Cambie el nombre de la ventana restante a top. Para hacer eso, primero muestre una lista de todas las ventanas para que pueda moverse hacia arriba y hacia abajo y seleccionar la correcta:

    • Verifique que los nombres hayan cambiado volviendo a mostrar los nombres de las ventanas en la parte inferior de la pantalla:

    • Ahora, separe la sesión y haga que screen cree una nueva llamada ssh:

    • Desconecte también de ssh y haga que screen muestre la lista de sesiones:

    • Ahora, adjunte a la primera sesión usando su PID:

    • Debería estar de vuelta en la ventana que muestra top. Divida la ventana horizontalmente y muévase a la nueva región vacía:

    • Haga que screen enumere todas las ventanas y seleccione vi para que se muestre en la nueva región vacía:

    • Ahora, divida la región actual verticalmente, muévase a la región vacía recién creada y asóciela con una nueva ventana:

    • Termine todas las regiones excepto la actual (recuerde, aunque mate las regiones, las ventanas siguen vivas). Luego, salga de todas las ventanas de la sesión actual hasta que termine la sesión:

    • Finalmente, haga que screen liste sus sesiones una vez más, elimine la sesión ssh restante por PID y verifique que en realidad no quedan sesiones:

  3. Instale tmux en su computadora (nombre del paquete: tmux) y complete las siguientes tareas:

    • Inicie el programa. ¿Qué comando utiliza?

    • Inicie top (observe cómo, en un par de segundos, el nombre de la ventana cambia a top en la barra de estado):

    • Usando el prefijo de clave de tmux, abra una nueva ventana; luego, cree ~/.tmux.conf usando nano:

    • Divida la ventana verticalmente y reduzca el tamaño del panel recién creado varias veces:

    • Ahora cambie el nombre de la ventana actual a text editing; luego, haga que tmux muestre una lista con todas sus sesiones:

    • Vaya a la ventana que ejecuta top y vuelva a la actual usando la misma combinación de teclas:

    • Desconecte la sesión actual y cree una nueva cuyo nombre sea ssh y su nombre de ventana sea ssh window:

    • Desconecte también de la sesión ssh y haga que tmux muestre la lista de sesiones nuevamente:

      Note

      A partir de este punto, el ejercicio requiere que utilice una máquina remota para las conexiones ssh a su host local (una máquina virtual es perfectamente válida y puede resultar realmente práctica). Asegúrese de tener openssh-server instalado y ejecutándose en su máquina local y que al menos openssh-client esté instalado en la máquina remota.

    • Ahora, inicie una máquina remota y conéctese a través de ssh con su host local. Una vez que se haya establecido la conexión, verifique las sesiones tmux:

    • En el host remoto, adjunte a la sesión ssh por nombre:

    • De vuelta en su máquina local, conéctese a la sesión ssh por nombre, asegurándose de que la conexión al host remoto finalice primero:

    • Haga que todas las sesiones se muestren para su selección y vaya a su primera sesión ([0]). Una vez allí, mate la sesión ssh por su nombre:

    • Finalmente, desconéctese de la sesión actual y elimínela por su nombre:

Ejercicios Exploratorios

  1. Tanto screen como tmux pueden ingresar al modo de línea de comandos a través de prefijo de comando + : (ya vimos un breve ejemplo con tmux). Investigue un poco y realice las siguientes tareas en el modo de línea de comandos:

    • Haga que screen entre en el modo de copia:

    • Haga que tmux cambie el nombre de la ventana actual:

    • Haga que screen cierre todas las ventanas y finalice la sesión:

    • Haga que tmux divida un panel en dos:

    • Haga que tmux elimine la ventana actual:

  2. Cuando ingresa al modo de copia en screen, no solo puede usar las teclas de flecha y PgUP o PgDown para navegar por la ventana actual y el búfer de retroceso. También existe la posibilidad de utilizar un editor de pantalla completa similar a vi. Con este editor, realice las siguientes tareas:

    • Echo supercalifragilisticexpialidocious en su terminal screen:

    • Ahora, copie los cinco caracteres consecutivos (de izquierda a derecha) en la línea justo encima de su cursor:

    • Finalmente, pegue la selección (stice) en su símbolo del sistema:

  3. Suponga que desea compartir una sesión tmux (our_session) con otro usuario. Ha creado el socket (/tmp/our_socket) con los permisos adecuados para que tanto usted como el otro usuario puedan leer y escribir. ¿Qué otras dos condiciones deben cumplirse para que el segundo usuario pueda adjuntar correctamente la sesión a través de tmux -S /tmp/our_socket a -t our_session?

Resumen

En esta lección ha aprendido sobre multiplexores de terminales en general y GNU Screen y tmux en particular. Los conceptos importantes para recordar incluyen:

  • Prefijo de comando: screen use Ctrl+a + caracter; tmux, Ctrl+b + caracter.

  • Estructura de sesiones, ventanas y divisiones de ventanas (regiones o paneles).

  • Modo de copia.

  • Separación de sesión: una de las características más potentes de los multiplexores.

Comandos utilizados en esta lección:

screen

Inicia una sesión de pantalla.

tmux

Inicia una sesión tmux.

Respuestas a los ejercicios guiados

  1. Indique si las siguientes declaraciones/características corresponden a la GNU Screen, tmux o ambos:

    Característica/Declaración GNU Screen tmux

    El prefijo de comando predeterminado es Ctrl+a

    x

    Modelo cliente-servidor

    x

    Los paneles son pseudo-terminales

    x

    Matar una región no mata sus ventanas asociadas

    x

    Las sesiones incluyen ventanas

    x

    x

    Las sesiones se pueden separar

    x

    x

  2. Instale GNU Screen en su computadora (nombre del paquete: screen) y complete las siguientes tareas:

    • Inicie el programa. ¿Qué comando usaría?

      screen

    • Inicie top:

      top

    • Usando el prefijo de la tecla de pantalla, abra una nueva ventana; luego, abra /etc/screenrc usando vi:

      Ctrl+a-c

      sudo vi /etc/screenrc

    • Enumere las ventanas en la parte inferior de la pantalla :

      Ctrl+a-w

    • Cambie el nombre de la ventana actual a vi:

      Ctrl+a-A. Escriba vi y presione enter.

    • Cambie el nombre de la ventana restante a top. Para hacer eso, primero muestre una lista de todas las ventanas para que pueda moverse hacia arriba y hacia abajo y seleccionar la correcta:

      Primero teclee Ctrl+a-". Luego usamos las flechas para marcar el que dice 0 bash y presione enter. Finalmente teclee Ctrl+a-A, escriba top y presione enter.

    • Verifique que los nombres hayan cambiado volviendo a mostrar los nombres de las ventanas en la parte inferior de la pantalla:

      Ctrl+a-w

    • Ahora, desvincule la sesión y haga que screen cree una nueva llamada ssh:

      Ctrl+a-d screen -S "ssh" y presione enter.

    • Desconecte también de ssh y haga que screen muestre la lista de sesiones:

      Ctrl+a-d screen -list or screen -ls.

    • Ahora, vincúlelo a la primera sesión usando su PID:

      screen -r PID-OF-SESSION

    • Debería estar de vuelta en la ventana que muestra top. Divida la ventana horizontalmente y muévase a la nueva región vacía:

      Ctrl+a-S

      Ctrl+a-Tab

    • Haga que screen liste todas las ventanas y seleccione vi para que se muestre en la nueva región vacía:

      Usaremos Ctrl+a-" para que se muestren todas las ventanas para su selección, marque vi y presione enter.

    • Ahora, divida la región actual verticalmente, muévase a la región vacía recién creada y asóciela con una nueva ventana:

      Ctrl+a-|

      Ctrl+a-Tab

      Ctrl+a-c

    • Termine todas las regiones excepto la actual (recuerde, aunque mates las regiones, las ventanas siguen vivas). Luego, salga de todas las ventanas de la sesión actual hasta que termine la sesión:

      Ctrl+a-Q. exit (para salir de Bash). Shift+:, posteriormente teclee quit y presione enter (para salir de vi). Después, teclee exit (para salir del shell de Bash subyacente) q (para terminar top); después teclee exit (para salir del shell de Bash subyacente).

    • Finalmente, haga que screen liste sus sesiones una vez más, elimine la sesión ssh restante por PID y verifique que en realidad no quedan sesiones:

      screen -list o screen -ls

      screen -S PID-OF-SESSION -X quit

      screen -list o screen -ls

  3. Instale tmux en su computadora (nombre del paquete: tmux) y complete las siguientes tareas:

    • Inicie el programa. ¿Qué comando usas?

      tmux

    • Inicie top (observe cómo, en un par de segundos, el nombre de la ventana cambia a top en la barra de estado):

      top

    • Usando el prefijo de clave de tmux, abra una nueva ventana; luego, crea ~/.tmux.conf usando nano:

      Ctrl+b-c nano ~/.tmux.conf

    • Divida la ventana verticalmente y reduzca el tamaño del panel recién creado varias veces:

      Ctrl+b-"

      Ctrl+b-Ctrl+↓

    • Ahora cambie el nombre de la ventana actual a text editing; luego, haga que tmux muestre una lista con todas sus sesiones:

      Ctrl+b-,. Luego proporciona el nuevo nombre y presiona enter. Ctrl+b-s o tmux ls.

    • Vaya a la ventana que ejecuta top y vuelva a la actual usando la misma combinación de teclas:

      Ctrl+b-n or Ctrl+b-p

    • Desconecte de la sesión actual y cree una nueva cuyo nombre sea ssh y su nombre de ventana sea ssh window:

      Ctrl+b-d tmux new -s "ssh" -n "ssh window"

    • Desconecte también de la sesión ssh y haga que tmux muestre la lista de sesiones nuevamente:

      Ctrl+b-d tmux ls

      Note

      A partir de este punto, el ejercicio requiere que utilice una máquina remota para las conexiones ssh a su host local (una máquina virtual es perfectamente válida y puede resultar realmente práctica). Asegúrese de tener openssh-server instalado y ejecutándose en su máquina local y que al menos openssh-client esté instalado en la máquina remota.

    • Ahora, inicie una máquina remota y conéctese a través de ssh desde su host local. Una vez que se haya establecido la conexión, verifique las sesiones tmux:

      En un host remoto: ssh local-username@local-ipaddress. Una vez que este conectado al equipo local: tmux ls.

    • En el host remoto, adjunte a la sesión ssh por nombre:

      tmux a -t ssh (a puede reemplazarse con at o attach).

    • De vuelta en su máquina local, conéctese a la sesión ssh por nombre, asegurándose de que la conexión al host remoto finalice primero:

      tmux a -d -t ssh (a puede ser reemplazarse por at o attach).

    • Haga que todas las sesiones se muestren para su selección y vaya a su primera sesión ([0]). Una vez allí, mata la sesión ssh por su nombre:

      Teclee Ctrl+b-s, use las teclas de flecha para marcar la sesión 0 y presione enter tmux kill-session -t ssh.

    • Finalmente, desconéctese de la sesión actual y elimínela por su nombre:

      Ctrl+b-d tmux kill-session -t 0.

Respuestas a ejercicios exploratorios

  1. Tanto screen como tmux pueden ingresar al modo de línea de comandos a través de prefijo de comando + : (ya vimos un breve ejemplo con tmux). Investigue un poco y realice las siguientes tareas en el modo de línea de comandos:

    • Haga que screen entre en el modo de copia:

      Ctrl+a-: — después, teclee copy.

    • Haga que tmux cambie el nombre de la ventana actual:

      Ctrl+b-: — después, teclee rename-window.

    • Haga que screen cierre todas las ventanas y finalice la sesión:

      Ctrl+a-: — después, teclee quit.

    • Haga que tmux divida un panel en dos:

      Ctrl+b-: — después, teclee split-window.

    • Haga que tmux elimine la ventana actual:

      Ctrl+b-: — después, teclee kill-window.

  2. Cuando ingresa al modo de copia en screen, no solo puede usar las teclas de flecha y PgUP o PgDown para navegar por la ventana actual y el búfer de retroceso. También existe la posibilidad de utilizar un editor de pantalla completa similar a vi. Con este editor, realice las siguientes tareas:

    • Echo supercalifragilisticexpialidocious en su terminal screen:

      echo supercalifragilisticexpialidocious

    • Ahora, copie los cinco caracteres consecutivos (de izquierda a derecha) en la línea justo encima de su cursor:

      Ingresamos al modo de copia: Ctrl+a-[ o Ctrl+a-: y luego escribimos copy. Luego, nos movemos a la línea de arriba usando k y presionamos espacio para marcar el comienzo de la selección. Finalmente, avanzamos cuatro caracteres usando l y presionamos espacio nuevamente para marcar el final de la selección.

    • Finalmente, pegue la selección (stice) en su símbolo del sistema:

      Ctrl+a-]

  3. Suponga que desea compartir una sesión tmux (our_session) con otro usuario. Ha creado el socket (/tmp/our_socket) con los permisos adecuados para que tanto usted como el otro usuario puedan leer y escribir. ¿Qué otras dos condiciones deben cumplirse para que el segundo usuario pueda adjuntar correctamente la sesión a través de tmux -S /tmp/our_socket a -t our_session?

    Ambos usuarios deben tener un grupo en común, p. Ej. multiplexor. Luego, también debemos cambiar el conector a ese grupo: chgrp multiplexer /tmp/our_socket.

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

103.6 Modificar la prioridad de ejecución de los procesos (103.6 Lección 1)

Leer la próxima lección

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© Copyright 1999-2020 The Linux Professional Institute Inc. Todos los derechos reservados.