
Quero executar um comando em uma nova sessão de tela (e desconectar dela), mas não consigo fazê-lo funcionar. Tentei iniciar um processo em uma nova sessão de tela e me desconectar dele com isto:
screen -d -m mycommmand
Mas quando tento me conectar a essa sessão de tela com
screen -r
Recebo a mensagem "Não há tela para ser retomada". Também tentei iniciar um comando em uma nova sessão de tela com
screen mycommand
Quando faço isso, uma nova sessão de tela é iniciada, mas o comando não é executado.
O comando é um script .sh que inicia um servidor de jogo, mas o servidor de jogo não inicia.
[Editar] Como algumas pessoas pediram o comando exato, aqui está: É um script bash que deve iniciar um servidor minecraft em uma sessão de tela separada.
./startServer.sh
Aqui está o 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
Agora, o problema é que quando executo o script ele não consegue criar a nova sessão de tela. Por que é que?
A ajuda é muito apreciada. Obrigado
Responder1
O problema é que você está tentando iniciar uma instância de tela desanexada e aninhada dentro de uma instância de tela desanexada. Seu script contém a linha:
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
Isso inicia a tela, nomeia a sessão da tela minecraft-server-1-14-4
, inicia o Minecraft e desconecta. Mas você também está tentando executar o screen -d -m ./startserver.sh
. Portanto, antes da sessão de tela ser criada no script, você já está executando o script dentro de uma sessão de tela desanexada. Isso... não costuma funcionar tão bem.
É funcionalmente igual a isto:
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.
O que você deseja fazer é executar o script diretamente. Apenas faça ./startserver.sh
. Isso deve levá-lo de volta ao prompt. Você pode então conectar-se ao seu console do Minecraft fazendo screen -r
normalmente.