screen
Deja un programa corriendo aunque cierres la terminal.
Es un multiplexer de terminal: abre una terminal virtual dentro de tu terminal, y todo lo que corre dentro sigue vivo aunque cierres la ventana o se te caiga la conexión. Lo usas para dejar compilaciones, descargas o servidores corriendo sin depender de tu terminal, y para volver a engancharte después con screen -r. No viene instalado por defecto en Debian ni en Ubuntu, así que se agrega con sudo apt install screen.
screen [opciones] [orden]Despiece
6 ejemplosAbrir una sesión de screen
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | screen | Comando | Abre una terminal virtual con su propio shell. |
Aparece una terminal limpia con una barra de estado abajo: a la izquierda dice [screen 0] y a la derecha la fecha. A partir de ahí todo lo que escribas corre dentro de la sesión. Para salir sin detener lo que corre, usa el atajo Ctrl-a d (pulsas Ctrl-a, sueltas, y luego d).
Ponerle nombre a la sesión
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | screen | Comando | Abre una terminal virtual con su propio shell. |
| 2 | -S | Opción | Le asigna un nombre a la sesión nueva. |
| 3 | descarga | Valor | El nombre que le vas a dar. No puede llevar espacios: usa guiones, como mi-proyecto. |
La sesión se llama descarga en vez de mostrar el nombre automático que usa screen. Ese nombre es el que usas después para listarla y para volver a ella: screen -ls y screen -r descarga.
Ver qué sesiones hay
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | screen | Comando | El multiplexer de terminal. |
| 2 | -ls | Opción | Lista las sesiones en vez de abrir una nueva. |
Cada línea muestra el nombre de la sesión, cuánto lleva viva y su estado: (Detached) si está corriendo sola, (Attached) si tiene una terminal pegada, o (dead) si la sesión ya no sirve y conviene limpiarla con screen -wipe. Desde ahí te puedes volver a pegar con screen -r NOMBRE.
Volver a una sesión que dejaste corriendo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | screen | Comando | El multiplexer de terminal. |
| 2 | -r | Opción | Se reancla (reattach) a una sesión que quedó suelta. |
| 3 | descarga | Valor | El nombre de la sesión a la que quieres volver. |
Recuperas la sesión tal como la dejaste, con todos los programas que tenía abiertos. Por eso hay que salir con Ctrl-a d y no cerrando la terminal. Si tienes varias sesiones sueltas y no pones nombre, screen te pregunta cuál; también hay -R, que solo se pega si no hay duda de cuál es.
Cerrar una sesión sin entrar a ella
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | screen | Comando | El multiplexer de terminal. |
| 2 | -S | Opción | Le dice a cuál de tus sesiones va dirigido el comando. |
| 3 | descarga | Valor | El nombre de la sesión que quieres cerrar. |
| 4 | -X | Opción | Ejecuta la orden dentro de esa sesión y sale. |
| 5 | quit | Valor | El comando de screen que mata todas las ventanas y termina la sesión. |
La sesión descarga se cierra de golpe y la terminal te devuelve el control, sin que tengas que entrar. Todo lo que no esté guardado se pierde. Si lo que quieres es salir dejando la sesión viva, usa Ctrl-a d en vez de esto, o la forma equivalente screen -d descarga.
Arrancar un programa en segundo plano con nombre
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | screen | Comando | El multiplexer de terminal. |
| 2 | -dmS | Opción | Combinación de tres cosas: la d suelta la sesión al instante, la m obliga a crear una sesión nueva aunque ya estés dentro de otra, y la S le pone nombre. |
| 3 | servidor | Valor | El nombre de la sesión. |
| 4 | ./servidor.sh | Argumento | El programa que se va a ejecutar dentro de la sesión. |
screen corre ./servidor.sh dentro de una sesión llamada servidor y te devuelve la terminal: el programa sigue vivo aunque cierres la ventana. Para verlo: screen -r servidor. Si el programa lleva argumentos, escríbelos después, sin comillas: screen -dmS servidor python3 app.py --puerto 8000.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -S | Le pone nombre a la sesión, para poder encontrarla después: screen -S descarga. |
| -r | Vuelve a engancharse a una sesión que quedó corriendo suelta. Sin argumentos se pega a la más reciente. |
| -d | Suelta la sesión y la deja corriendo en segundo plano. Es lo mismo que el atajo Ctrl-a d. |
| -D | Como -d, pero si la sesión está abierta en otra terminal, la despega de allá a la fuerza. Con -D -r te la traes a la terminal donde estás. |
| -ls | Lista las sesiones que existen, con su nombre, cuánto llevan vivas y si están pegadas a una terminal o sueltas. |
| -X | Manda un comando a una sesión que ya está corriendo y termina, sin que tengas que entrar a ella. |
| -L | Activa el registro automático de salida: screen guarda todo lo que aparece en un archivo screenlog.0. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Correr un proceso largo sin screen y perderlo al cerrar la terminal. | Abre screen primero (screen -S nombre) y corre ahí el proceso. Si se cierra la ventana o se cae el SSH, la sesión sigue viva y vuelves con screen -r nombre. |
| Quedar atrapado en la sesión sin saber cómo salir. | Todos los atajos de screen empiezan con Ctrl-a: presionas Ctrl-a, sueltas y luego la otra tecla. Ctrl-a d te saca dejando la sesión viva; para cerrarla de verdad escribe exit dentro. |
| Escribir screen -S mi proyecto y esperar recuperarlo con el mismo nombre. | El nombre no puede llevar espacios: screen parte la línea y toma mi como nombre, dejando proyecto como la orden a ejecutar. Usa guiones: screen -S mi-proyecto. |
| Esperar que la sesión siga después de reiniciar el equipo. | screen aguanta que cierres la terminal o se caiga la conexión, pero no un reinicio: al apagarse el equipo, la sesión y sus procesos se terminan. Para servicios que deben arrancar solos, usa systemctl. |
Preguntas frecuentes
- ¿Qué es screen y para qué sirve?
- Es un multiplexer de terminal: abre una terminal virtual dentro de la tuya y todo lo que corre dentro sigue vivo aunque cierres la ventana o se caiga la conexión. Después te vuelves a pegar con screen -r. Es la forma clásica de dejar procesos largos sin depender de la terminal. Se instala con sudo apt install screen.
- ¿Cómo salgo de screen sin detener lo que está corriendo?
- Con Ctrl-a d: presionas Ctrl-a, sueltas y luego d. Eso deja la sesión corriendo en segundo plano y vuelves con screen -r. Si cierras la ventana o se cae tu conexión, la sesión también sigue viva.
- ¿Cómo veo qué sesiones de screen tengo abiertas?
- Con screen -ls. Cada línea muestra el nombre, cuánto lleva viva la sesión y su estado: (Detached) corriendo sola, (Attached) con terminal pegada, o (dead) si ya no sirve. Para entrar a una: screen -r NOMBRE. Las dead se limpian con screen -wipe.
- ¿Cuál es la diferencia entre screen y tmux?
- Los dos dejan sesiones vivas aunque cierres la terminal o se caiga el SSH. tmux es más moderno: divide la pantalla en paneles con facilidad, se configura mejor y tiene más desarrollo activo. screen es el clásico y viene en sistemas más viejos. Si empiezas hoy, aprende tmux.
- ¿Cómo cierro una sesión de screen?
- Desde afuera: screen -S NOMBRE -X quit, que la mata sin entrar. Adentro sirve el atajo Ctrl-a seguido de k (kill), que además te pregunta y te avisa de que se pierde lo que no esté guardado. Si solo quieres salir y dejarla corriendo, usa Ctrl-a d.