O servidor Linux Minecraft fecha quando eu saio do Putty?

2

Comecei a executar recentemente um servidor Minecraft.

Eu não consegui descobrir como não matar o processo depois de sair do console ou da massa.

O comando é:

Java -jar minecraft_server.1.10.2.jar

mas às vezes:

Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar
    
por Ben 10.09.2016 / 16:27

4 respostas

3

Quando você fecha o PuTTY, ele envia um sinal de desligamento para o computador, que é capturado por vários programas (incluindo minecraft). Você poderia usar nohup e redirecionar a saída padrão e o erro padrão de minecraft para um arquivo (ou /dev/null ), mas algumas pessoas acham mais simples instalar screen ou tmux e deixe uma sessão daqueles que estão sendo executados no computador. Dessa forma, quando você fechar a tela / tmux, você pode voltar mais tarde e ver as mensagens.

Geralmente, uso screen , que usa menos pressionamentos de teclas do que tmux . Por exemplo,

  • executar screen
  • pressione retornar para obter um shell
  • executar minecraft
  • tipo controle A d (control / A seguido por d) para separar
  • fechar o PuTTY

que me lembra que algumas configurações padrão da tela ainda fecham a sessão ao fechar o terminal. Se isso for um problema, detalhes podem ser adicionados ...

    
por 10.09.2016 / 16:36
1

Eu costumava executar um Terraria Server em um Raspberry Pi e tive o mesmo problema.

A solução para mim foi screen

Instale-o usando sudo apt install screen e, em seguida, execute o servidor de minecraft, mas coloque screen antes dele.

O comando seria: screen Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

    
por 27.05.2018 / 00:02
0

Eu não tenho 100% de certeza do que você está perguntando, mas vou tentar responder mesmo assim :) Quando você se conecta a um sistema remoto usando ssh um emulador de terminal (por exemplo, putty) e executa um "processo em primeiro plano" (ou seja, algo que permanece aberto, não um daemon que é executado em segundo plano) naquele terminal, esse processo será encerrado da sua sessão ssh. Se você executar um processo em segundo plano, ou seja, um daemon, ele continuará a ser executado mesmo depois que a sessão remota terminar. (Você pode "daemonizar" a maioria dos processos em primeiro plano adicionando & no final do comando com o qual inicia esse processo). Para eliminá-lo de outra sessão, você precisa saber seu número PID (obtido por exemplo por ps aux | grep 'name_of_process' ou usando superior ou htop utilitários, ou emitindo killall name comando ... e dúzia de outras maneiras provavelmente). Por outro lado, para manter um processo em primeiro plano entre as sessões, você precisa usar algo como screen , tmux ou byobu multiplexadores de terminal. Eles podem ser desanexados em segundo plano ao serem desconectados e reconectados na próxima vez que você efetuar login, com todos os processos em execução dentro deles intactos. (Claro, se eles morrem ou são mortos, tudo nos morre também).

The command is Java -jar minecraft_server.1.10.2.jar but sometimes Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

Se ele permanecer em segundo plano, você poderá eliminá-lo na próxima vez que efetuar login por um dos comandos kill , killall java (o que matará todos os processos Java em execução!) ou ps aux |grep minecraft , que será cuspido todos os processos com a palavra "minecraft" neles (incl o ps aux | grep minecraft provavelmente), o número ao lado do nome de usuário é o PID. Então, apenas kill PID (onde PID é o número do comando anterior ....) deve fazer o truque. Verifique executando ps aux |grep minecraft novamente. (Se ainda estiver em execução, tente kill -9 PID a seguir.)

    
por 10.09.2016 / 16:59
0

A razão pela qual isso ocorre é porque quando você fecha sua sessão SSH, seu servidor SSH mata todos os processos que você estava executando.

As soluções oferecidas aqui até agora falam sobre o uso de screen - que basicamente permite que você se desconecte de uma sessão de terminal, efetue logout e reconecte-a posteriormente - deixando todos os processos ainda em execução.

Esta solução, no entanto, não leva em conta o processo do servidor falhando, o servidor sendo reiniciado ou algo mais estranho acontecendo.

Para esse fim, recomendo que você investigue como criar um serviço do sistema para o seu servidor. Como alguém define tal coisa varia de sistema para sistema, mas o princípio de gênero é que um serviço é iniciado pelo seu servidor automaticamente assim que as dependências forem iniciadas, e opcionalmente ele será reiniciado se ele morrer. Você pode até pedir que muitos programas salvem sua saída em um arquivo de log em vez de gravar na saída padrão.

Se você tiver o comando systemctl no seu terminal, provavelmente terá o systemd. Aqui está um tutorial Eu encontrei na criação de um arquivo de serviço de minecraft para sistemas baseados em systemd.

Se você não tem systemctl , provavelmente você tem um sistema baseado em OpenRC ou um sistema baseado em upstart. Nesses casos, você deve investigar os serviços existentes em /etc/init.d e criar seus próprios com base nisso. (Se alguém souber de um bom tutorial sobre o assunto, por favor edite t!)

    
por 27.05.2018 / 00:28