Ver planes
ESEN

screen y tmux: que un proceso largo no muera con la conexión

· 5 min de lectura · por el equipo técnico de VPS Argentina

Si ejecutás algo largo por SSH y se corta la conexión, el proceso muere con la sesión. screen y tmux resuelven eso: abren una sesión que vive en el servidor, independiente de tu conexión. Con tmux new -A -s trabajo la creás o volvés a ella, Ctrl+b d la suelta sin cortar nada y tmux attach -t trabajo la recupera desde cualquier máquina. En screen es lo mismo con screen -S, Ctrl+a d y screen -r.

Por qué pasa

Cuando entrás por SSH, todo lo que ejecutás cuelga de esa sesión. Si la conexión se corta —la notebook se suspende, cambia el wifi, se cae el enlace—, el sistema manda una señal de cierre y el proceso se detiene. En una importación de base de datos de media hora, eso significa empezar de nuevo, y a veces dejar la base a medio importar.

tmux, en cuatro comandos

ComandoQué hace
tmux new -A -s trabajoCrea la sesión "trabajo", o se conecta si ya existe.
Ctrl+b y después dSuelta la sesión. Lo que corre adentro sigue corriendo.
tmux lsLista las sesiones abiertas en el servidor.
tmux attach -t trabajoVuelve a entrar, desde esta o cualquier otra computadora.

Con `tmux` instalado, el flujo completo es: entrar por SSH, abrir la sesión, lanzar el proceso, soltarla y cerrar la notebook.

screen, para lo mismo

screen -S trabajo        # crear
# Ctrl+a  y después  d   → soltar
screen -ls               # listar
screen -r trabajo        # volver

Si screen -r dice que la sesión está ocupada porque quedó conectada en otro lado, screen -d -r trabajo la desconecta de allá y te la trae.

Instalarlos

apt install -y tmux screen    # Debian y Ubuntu
dnf install -y tmux screen    # AlmaLinux

Cuándo usar cuál

  • tmux es el estándar actual: divide la pantalla, se configura mejor y es lo que vas a encontrar en la documentación nueva.
  • screen viene instalado en más lugares y alcanza de sobra si solo querés que el proceso no se muera.
  • Para tareas desatendidas de verdad —un script que corre todas las noches— no uses ninguno de los dos: eso es una tarea programada o un servicio de systemd.

Preguntas frecuentes

¿Qué pasa si el servidor se reinicia?

Las sesiones se pierden: viven en la memoria del servidor, no en el disco. Para algo que tiene que sobrevivir a un reinicio, el lugar es systemd.

¿Puedo dejar una sesión abierta para siempre?

Sí, y es común tener una de trabajo permanente. Tené en cuenta que los procesos que queden adentro siguen consumiendo memoria.

Entré desde otra computadora y no veo mi sesión

Fijate que estés con el mismo usuario: las sesiones son por usuario. tmux ls como root no muestra las de otro usuario.

¿Sirve para mantener un servidor de aplicación corriendo?

Funciona, pero no corresponde: si se reinicia el servidor no vuelve solo. Para eso están PM2 en Node.js o una unidad de systemd.

¿Cómo cierro una sesión que ya no uso?

Entrá con tmux attach y escribí exit, o desde afuera tmux kill-session -t trabajo. En screen, screen -X -S trabajo quit.

Seguí leyendo