Me gustaría iniciar alguna aplicación dentro de la sesión de pantalla pero desde un script.
Sin script, simplemente iniciaría la pantalla, luego abriría N windows con crtl-ac y ejecutaría programas en cada ventana.
Probé lo siguiente
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
Pero cuando adjunto la cola de la sesión no se está ejecutando. Si adjunto la sesión justo después screen -d -m -S startup
y la ejecuto screen -S startup -X exec tail -f /var/log/messages
desde otra terminal, funciona.
Me he perdido algo ?
Editar después de la respuesta de AlexD:
Una solución de medio trabajo es
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
El comando de encadenamiento de pantalla (el que está después de -X) con el comando funciona mientras que exec probablemente no sea porque el ejecutivo espera que se defina una ventana actual mientras que no hay una actual cuando la pantalla está separada. Gracias a AlexD por estos consejos.
Pero hay un efecto secundario extraño: cuando el programa se detiene (si adjunta la sesión de pantalla y crtl-c la cola, o cierra la cola), la ventana de la pantalla se cerrará.
Entonces, el comportamiento no es el mismo que Crtl-A c y ejecuta el comando
Otro efecto secundario es que no puede encadenar 2 comandos
screen
Siempre termina cuando el comando con el que se fue lanzada extremos - es una característica normal de la herramienta :) .so si se ejecutascreen top
, al salirtop
,screen
se cerrará también