¿Cómo puedo iniciar varias sesiones de pantalla automáticamente?

21

Estoy tratando de crear un comando que se inicie screen, cree cuatro sesiones con diferentes nombres y ejecute cuatro comandos diferentes.

Sé cómo hacer esto manualmente:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

¿Puedo hacer esto con un script bash o algo así? ¿Cómo lo haría?

abrazos
fuente

Respuestas:

15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"generará una pantalla ejecutándose $COMMANDen segundo plano.

Puede ver sesiones activas con screen -lsy volver a conectar con screen -r "$SESSION_NAME".

Las sesiones muertas se pueden matar con screen -wipe.

LawrenceC
fuente
¡Hace el trabajo!
Hughes
1
Este comando crea una nueva sesión de pantalla para cada comando. No se puede usar para crear una sesión de pantalla única que contenga una ventana para cada comando (como lo hacen los pasos manuales en la pregunta). Por lo tanto, no responde la pregunta, y la .screenrcrespuesta a continuación debería haberse aceptado en su lugar.
Tey '27 de
¿hay alguna ventaja real en multi-windows-one-session si todo lo que haces es mantener barato algo ejecutándose en segundo plano?
LawrenceC
29

Para iniciar varias sesiones automáticamente, configure un .screenrcarchivo, un archivo de configuración para la pantalla. En él, puede crear sesiones, iniciar programas, cambiar el directorio de trabajo, etc. Lo uso para inicializar mi sesión de pantalla.

Examen simple para un archivo .screenrc:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

Los screencomandos de arriba crean una sesión de pantalla. -testablece el título de la sesión; El resto de la línea es el comando a ejecutar y sus parámetros.

Por lo tanto, la primera y segunda screenlínea comienzan una sesión y se inician en el viminterior. El tercero simplemente inicia una sesión y te deja en un aviso. chdircambia el directorio de trabajo para todas las sesiones posteriores.

Si desea tener varios .screenrcarchivos, simplemente asígneles el nombre que desee y seleccione uno con screen -c myscreenrc.

sleske
fuente
5

Puede usar las opciones d, m, S juntas:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S: para crear una pantalla

d: separar de una pantalla

m: Para forzar la creación de la pantalla, independientemente de si la pantalla se llama desde otra pantalla o no.

aliasav
fuente
3
Interesante, que puedes escribir así, en lugar de screen -dmS s1etc. No sabía que, al agrupar opciones, la que tiene un argumento no tiene por qué ser la última.
Tomasz Gandor