Iniciar un comando en una nueva sesión de pantalla no funciona

Iniciar un comando en una nueva sesión de pantalla no funciona

Quiero ejecutar un comando en una nueva sesión de pantalla (y desconectarme de ella) pero no consigo que funcione. Intenté iniciar un proceso en una nueva sesión de pantalla y desconectarme de él con esto:

screen -d -m mycommmand

Pero cuando intento conectarme a esa sesión de pantalla con

screen -r

Recibo el mensaje "No hay ninguna pantalla para reanudar". También intenté iniciar un comando en una nueva sesión de pantalla con

screen mycommand

Cuando hago eso, se inicia una nueva sesión de pantalla pero el comando no se ejecuta.

El comando es un script .sh que inicia un servidor de juegos pero el servidor de juegos no se inicia.

[Editar] Debido a que algunas personas pidieron el comando exacto, aquí está: Es un script bash que debería iniciar un servidor de Minecraft en una sesión de pantalla separada.

./startServer.sh

Aquí está el script .sh:

cd "/home/tim/minecraft/survivalServer"
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui

Ahora, el problema es que cuando ejecuto el script no se puede crear la nueva sesión de pantalla. ¿Porqué es eso?

Se agradece mucho la ayuda. Gracias

Respuesta1

El problema es que está intentando iniciar una instancia de pantalla anidada y separada dentro de una instancia de pantalla separada. Su script contiene la línea:

screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui

Esto inicia la pantalla, nombra la sesión de la pantalla, minecraft-server-1-14-4luego inicia Minecraft y se desconecta. Pero también estás intentando correr screen -d -m ./startserver.sh. Por lo tanto, antes de que se cree la sesión de pantalla en el script, ya está ejecutando el script dentro de una sesión de pantalla separada. Esto... no suele funcionar tan bien.

Es funcionalmente lo mismo que este:

wolferz@khaos ~ $ screen -m -d screen -S 'mysession' -m -d top
wolferz@khaos ~ $ screen -r
There is a screen on:
        24850.mysession (07/24/2019 10:47:46 PM)        (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed.

Lo que quieres hacer es ejecutar el script directamente. Solo haz ./startserver.sh. Eso debería devolverte al mensaje. Luego puedes conectarlo a tu consola de Minecraft haciendo screen -rlo normal.

información relacionada