Estoy tratando de descubrir cómo escribir un script que inicie los programas en las sesiones de GNU Screen en el arranque del sistema. Estoy intentando esto:
#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \
pero el comando no se puede ejecutar porque la sesión ya está desconectada? Lo único que necesito es ejecutar el comando en la sesión de pantalla y desconectar esta sesión de inmediato.
Gracias por las respuestas, pero ahora me enfrenté a otro problema. El script deja de funcionar después de poner algunas variables para mi "programa y programa2". Algo como esto:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
por alguna razón, "-f config.cfg" fue ignorado. También trato de citar el comando y tampoco ayuda.
scripts
gnu-screen
TbMa
fuente
fuente
-X
opción?Respuestas:
¿Realmente quisiste poner
\
el final de la línea? Si no es así, intente eliminarlos: se escapan del siguiente personaje.Además, soltar
-X
ayuda a que la configuración funcione para mí, por ejemplo:falla con
No screen session found
, sin embargo:funciona bien. Como tal, sospecho que lo siguiente funcionará para usted:
Recuerde que si ejecuta esto durante el arranque, $ HOME no es lo mismo que después de iniciar sesión como usuario específico. Si necesita ejecutarlo como un determinado usuario, necesitará usar los gustos de
su
para ejecutarlo como ese usuario, y especificar la ruta completa eliminará cualquier ambigüedad:O bien, llamaría a todo el script anterior como
su - username /path/to/your/script
.fuente
screen -S test -d -m $HOME/folder/folder/.program
casi hace exactamente lo que estoy buscando, excepto si la carpeta / .program está terminada, la sesión de pantalla se cierra automáticamente. ¿Hay alguna manera de mantener la sesión de pantalla (shell) ejecutándose incluso después de que el programa haya terminado? ¿Quizás en lugar de ejecutar el programa exclusivamente, inicie un shell que inicie el programa y luego regrese al indicador de shell, o algo así?Como mencionó Cry Havok, puede colocar el programa directamente en la línea de comandos.
Si realmente debe usar la opción -X, entonces a) necesita especificar el comando 'pantalla' yb) la sesión debe existir de antemano.
fuente
sleep
comandos explícitos para dar tiempo a la pantalla para iniciar la sesión antes de enviar el comando.