새 화면 세션에서 명령을 시작하면 작동하지 않습니다

새 화면 세션에서 명령을 시작하면 작동하지 않습니다

새 화면 세션에서 명령을 실행하고 싶지만 해당 세션에서 분리하고 싶지만 작동하지 않습니다. 새 스크린 세션에서 프로세스를 시작하고 다음과 같이 프로세스를 분리하려고 했습니다.

screen -d -m mycommmand

하지만 해당 스크린 세션에 연결하려고 하면

screen -r

"다시 시작할 화면이 없습니다"라는 메시지가 나타납니다. 나는 또한 새로운 스크린 세션에서 명령을 시작하려고 시도했습니다.

screen mycommand

그렇게 하면 새 화면 세션이 시작되지만 명령이 실행되지 않습니다.

명령은 게임 서버를 시작하지만 게임 서버가 시작되지 않는 .sh 스크립트입니다.

[편집] 일부 사람들이 정확한 명령을 요청했기 때문에 다음과 같습니다. 별도의 화면 세션에서 마인크래프트 서버를 시작해야 하는 bash 스크립트입니다.

./startServer.sh

.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

이제 문제는 스크립트를 실행할 때 새 스크린 세션을 생성하지 못한다는 것입니다. 왜 그런 겁니까?

도움을 주시면 감사하겠습니다. 감사해요

답변1

문제는 분리된 화면 인스턴스 내에서 중첩되고 분리된 화면 인스턴스를 시작하려고 한다는 것입니다. 스크립트에 다음 줄이 포함되어 있습니다.

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

그러면 화면이 시작되고 화면 세션의 이름이 지정된 minecraft-server-1-14-4다음 마인크래프트가 시작되고 분리됩니다. 그러나 당신은 또한 실행을 시도하고 있습니다 screen -d -m ./startserver.sh. 따라서 스크립트에서 screen 세션이 생성되기 전에 이미 분리된 screen 세션 내에서 스크립트를 실행하고 있습니다. 이건... 별로 잘 안 되는 편이에요.

기능적으로는 다음과 같습니다.

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.

당신이 원하는 것은 스크립트를 직접 실행하는 것입니다. 그냥 해 ./startserver.sh. 그러면 프롬프트가 표시될 것입니다. 그런 다음 평소대로 마인크래프트 콘솔에 연결할 수 있습니다 screen -r.

관련 정보