
Я хочу выполнить команду в новом сеансе экрана (и отсоединиться от него), но у меня это не получается. Я попытался запустить процесс в новом сеансе экрана и отсоединиться от него с помощью этого:
screen -d -m mycommmand
Но когда я пытаюсь подключиться к этому сеансу экрана с помощью
screen -r
Я получаю сообщение "Нет экрана для возобновления". Я также пытался запустить команду в новом сеансе экрана с помощью
screen mycommand
Когда я это делаю, запускается новый сеанс экрана, но команда не выполняется.
Команда представляет собой скрипт .sh, который запускает игровой сервер, но игровой сервер не запускается.
[Изменить] Поскольку некоторые люди просили дать точную команду, вот она: это скрипт bash, который должен запустить сервер Minecraft в отдельном сеансе экрана.
./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
Это запускает screen, называет screen-сессию, minecraft-server-1-14-4
затем запускает minecraft и отсоединяется. Но вы также пытаетесь запустить 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
. Это должно вернуть вас к приглашению. Затем вы можете подключиться к консоли Minecraft, выполнив screen -r
обычные действия.