Cómo ejecutar un segundo comando en la misma sesión de pantalla

12

Estoy comenzando el primer comando en la pantalla de esta manera:

screen -d -m -S testen -t lalala watch df -h

lo que me da una sesión de pantalla ejecutándose en segundo plano y puedo reconectarme más adelante.

¿Cómo puedo ejecutar un segundo comando en una nueva ventana en la misma sesión de pantalla?

TTM
fuente

Respuestas:

11

Inicie una sesión de pantalla con nombre ( -S) con una ventana con nombre ( -t) que se adapte al tamaño del terminal ( -A) en modo separado ( -d -m):

screen -S mySessionName -t myWinName0 -A -d -m

Inicie otra ventana con nombre ( -t) en la misma sesión de pantalla ( -S):

screen -S mySessionName -X screen -t myWinName2

Rellene algunos comandos ( -X stuff $'cmds') en la primera ventana con nombre ( -p) en la sesión ( -S):

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

Rellene algunos comandos ( -X stuff $'cmds') en la segunda ventana con nombre ( -p) en la sesión ( -S):

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

Haga una lista de las sesiones de pantalla y vuelva a conectar para ver qué sucedió:

screen -ls
screen -r mySessionName

Nota: El salto de línea ( \n) simula presionar Enter. También puede usar punto y coma para separar los comandos.

postal
fuente
No tienes que hacer los bits de "cosas". screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Lotus
4

Pantalla interior:

  • Ctrl-A, cpara abrir una nueva ventana de shell
  • Ctrl-A, :screen newcmdPara funcionarnewcmd

Fuera de:

screen -X testen "screen newcmd"
usuario1686
fuente
hola grawity , lo sé, pero me gustaría hacerlo desde un script de inicio. Básicamente quiero iniciar 2 comandos en ventanas separadas en la misma sesión de pantalla. nos vemos
1
@bob: Ver ejemplo # 3, "Pantalla exterior", en esta respuesta.
user1686
hola grawity, screen -S testen -X 'screen echo "hi"'no funciona.
Tampoco pude lograr que el método -X funcionara. Fwiw, mi pantalla -v dice "Versión de pantalla 4.00.03 (FAU) 23-Oct-06"
Lauri Lehtinen
4

Intenté el enfoque anterior, pero el segundo comando no se ejecutó en la segunda ventana. Ajusté ligeramente el ejemplo usando el número de ventana, en lugar del nombre de la ventana:

  1. crear sesión

    screen -S mySessionName -t 0 -A -d -m
    
  2. crear segunda ventana

    screen -S mySessionName -X screen -t 1
    
  3. enviar comando a la primera ventana

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. enviar comando a la segunda ventana

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. ahora verifique si el comando se ha ejecutado en la primera ventana

    screen -R mySessionName -p 0
    
  6. ahora compruebe si el comando se ha ejecutado en la segunda ventana

    screen -R mySessionName -p 1
    

Probado con la pantalla 4.00.03 (CENTOS 6.3 x64).

Bas van Beek BVBMedia
fuente
1

Puede configurar un .screenrc alternativo a través del -cargumento. En este nuevo screenrc, puede configurar varios comandos para que se inicien cuando se inicializa la sesión de pantalla.

Al final de este .screenrc alternativo ponga los siguientes comandos:

screen 1 cmd1 args
screen 2 cmd2 args

No necesita configurar un archivo de configuración alternativo si solo planea ejecutar un tipo de sesión de pantalla y los comandos predeterminados siempre están bien.

Darren Hall
fuente