Comandos LinuxExplicados en español
/
Ficha53 / 104
Categoría
Procesos
Ejemplos
6
Ver también
nohup · top · ps · kill

screen

screen (pantalla)

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.

Sintaxisscreen [opciones] [orden]
§ 1

Despiece

6 ejemplos
Abrir una sesión de screen

Abrir una sesión de screen

1 pieza
Lámina01 / 06
Comandoscreen
Piezas1
Escala1:1
N.ºPiezaTipoQué hace
1screenComandoAbre una terminal virtual con su propio shell.
Resultado

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

3 piezas
Lámina02 / 06
Comandoscreen -S descarga
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1screenComandoAbre una terminal virtual con su propio shell.
2-SOpciónLe asigna un nombre a la sesión nueva.
3descargaValorEl nombre que le vas a dar. No puede llevar espacios: usa guiones, como mi-proyecto.
Resultado

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

2 piezas
Lámina03 / 06
Comandoscreen -ls
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1screenComandoEl multiplexer de terminal.
2-lsOpciónLista las sesiones en vez de abrir una nueva.
Resultado

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

3 piezas
Lámina04 / 06
Comandoscreen -r descarga
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1screenComandoEl multiplexer de terminal.
2-rOpciónSe reancla (reattach) a una sesión que quedó suelta.
3descargaValorEl nombre de la sesión a la que quieres volver.
Resultado

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

5 piezas
Lámina05 / 06
Comandoscreen -S descarga -X quit
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1screenComandoEl multiplexer de terminal.
2-SOpciónLe dice a cuál de tus sesiones va dirigido el comando.
3descargaValorEl nombre de la sesión que quieres cerrar.
4-XOpciónEjecuta la orden dentro de esa sesión y sale.
5quitValorEl comando de screen que mata todas las ventanas y termina la sesión.
Resultado

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

4 piezas
Lámina06 / 06
Comandoscreen -dmS servidor ./servidor.sh
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1screenComandoEl multiplexer de terminal.
2-dmSOpciónCombinació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.
3servidorValorEl nombre de la sesión.
4./servidor.shArgumentoEl programa que se va a ejecutar dentro de la sesión.
Resultado

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.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-SLe pone nombre a la sesión, para poder encontrarla después: screen -S descarga.
-rVuelve a engancharse a una sesión que quedó corriendo suelta. Sin argumentos se pega a la más reciente.
-dSuelta la sesión y la deja corriendo en segundo plano. Es lo mismo que el atajo Ctrl-a d.
-DComo -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.
-lsLista las sesiones que existen, con su nombre, cuánto llevan vivas y si están pegadas a una terminal o sueltas.
-XManda un comando a una sesión que ya está corriendo y termina, sin que tengas que entrar a ella.
-LActiva el registro automático de salida: screen guarda todo lo que aparece en un archivo screenlog.0.
§ 3

Fallas comunes

FallaRemedio
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.
§ 4

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.
§ 5

Ver también