Executar comandos em um servidor em execução em uma conta do sistema

1

Eu configurei um servidor de minecraft em um sistema Ubuntu. Quando eu lanço o servidor a partir da linha de comando, o servidor escuta a entrada padrão e responde a vários comandos (como alterar o modo de jogo, o nível de dificuldade ou a hora do dia):

  

(Veja esta demonstração de inserir comandos no console do servidor)

No entanto, não gosto de bloquear meu usuário root para executar o minecraft, então hoje configuro um usuário do sistema chamado simplesmente "minecraft":

sudo adduser --system --no-create-home --home /srv/minecraft-server minecraft
sudo addgroup --system minecraft
sudo adduser minecraft minecraft # this adds user "minecraft" the group "minecraft"

e estou usando um arquivo de configuração para iniciar o servidor de minecraft com esse usuário:

start on runlevel [2345]

console log
chdir /minecraft_server
setuid minecraft
setgid minecraft

respawn
respawn limit 20 5

exec /usr/bin/java -Xms1024M -Xmx1800M -jar minecraft_server.1.8.jar nogui

Eu quero enviar comandos para o servidor de minecraft através da entrada padrão, assim como eu sou capaz de lançá-lo sob o usuário atual. Eu tentei su e sudo , mas o primeiro parece ser ignorado e o segundo produz um erro "comando não encontrado". Como o minecraft é um usuário do sistema, acredito que o login interativo esteja desativado.

  

Eu trabalhei com sistemas Linux um pouco no passado, mas estou fora da minha profundidade aqui. Como posso passar os comandos para o usuário de minecraft para passar para o servidor de minecraft? Ou isso não é possível na minha situação atual?

    
por JDB 18.09.2014 / 00:07

1 resposta

2

bodhi.zazen mencionou possivelmente " rodando na tela ". Eu não tinha ouvido falar de tela antes, mas parece ter resolvido o problema.

Primeiro, tive que excluir o usuário de minecraft e recriá-lo como um usuário normal. Então eu dei ao usuário minecraft as permissões necessárias para a pasta do servidor de minecraft (usando chmod). Depois que iniciei com êxito o servidor minecraft a partir da nova conta de usuário do minecraft, parei e iniciei uma sessão de tela:

  

e, em seguida, reiniciou o servidor minecraft novamente (na tela):

  

Eu então usei o atalho de tela padrão para separar da tela ( Ctrl + a e então apenas d ). O servidor de minecraft continua a ser executado no backround:

  

Eu posso facilmente reconectar para emitir comandos usando screen -r :

  

     

Posso encerrar minha sessão SSH sem desligar o servidor e, em seguida, fazer o login novamente de uma máquina diferente. Por exemplo, aqui estou logando usando um telefone Android e JuiceSSH:

  

(noitce que você pode ver os comandos que eu emiti anteriormente, desde que a tela nunca foi terminada)

    
por JDB 19.09.2014 / 04:33