Como posso criar uma nova sessão de tela e executar um comando, mas deixar a tela lá?

Como posso criar uma nova sessão de tela e executar um comando, mas deixar a tela lá?

Olá pessoal, estou tentando fazer com que meu servidor Minecraft inicialize com meu servidor. Usarei o cron assim que descobrir quais são os comandos adequados. Quero que o Minecraft inicie em uma nova tela intitulada "Minecraft" e quero que um comando seja enviado para esta sessão que inicia o servidor. Todas as manhãs, às 3h, quero enviar o comando "stop" para parar o servidor do Minecraft e, em seguida, enviar o comando para iniciar o servidor (o Minecraft fica com bugs se não for reiniciado de vez em quando). Eu estava brincando com as opções de tela e fiz o Minecraft iniciar por alguns segundos e a tela o eliminou. Pelo que estou lendo online, este comando deve funcionar.

screen -dmS Minecraft java -Xmx12G -Xms12G -jar /home/alan/minecraft/forge-1.16.5-36.2.30.jar --nogui

Quero me reconectar a esta sessão para digitar comandos ou reiniciar o servidor do Minecraft porque fiz uma alteração. Todos os comandos que executei não funcionaram, digitei "screen -ls" e minha sessão "Minecraft" não está lá. Eu sei como usar o cron, mas claramente não entendo a tela. Temos quedas de energia frequentes na minha área, então um no-break desliga meu servidor e um Raspberry PI o liga novamente quando a energia é restaurada. Seria bom incluir o Minecraft na minha startup. Depois disso, todos os meus serviços serão iniciados e interrompidos automaticamente sem minha intervenção.

Responder1

Desde que você nomeou sua tela Minecraft,

# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
screen -p 0 -S Minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
screen -p 0 -S Minecraft -X eval 'stuff "save-all"\\015'
screen -p 0 -S Minecraft -X eval 'stuff "stop"\\015'
sleep 10

É fácil agrupar seus comandos em um serviço systemd, que também oferece inicialização automática na inicialização, monitoramento de status e controle fácil de iniciar/parar/reiniciar usando systemctl.

Geralmente, você não precisa se preocupar em deixar a tela aberta, pois todas as saídas são registradas e todos os comandos do servidor podem ser inseridos através do console administrativo.

Escrevi uma postagem inteira no blog sobre todo o processo há alguns anos: é a primeira seção dohttp://cheesehead-techblog.blogspot.com/2019/08/toggling-minecraft-server-using-systemd.html

informação relacionada