Executando o arquivo .jar na inicialização

1

Estou executando um servidor Nukkit Minecraft no meu Raspberry Pi (sei que ele não tem um bom hardware, mas estou experimentando) e pesquisando diferentes maneiras de criar um arquivo bash para o Linux. Eu fiz o arquivo startNukkit.whateverextension. Eu cheguei a isto:

!#/bin/bash/

gnome-terminal -e "java -jar home/pi/Desktop/Nukkit/nukkit.jar; exec bash\""

Mas há várias coisas que eu quero resolver. Primeiro, quando clico duas vezes no arquivo bash, ele me avisa: "Execute", "Execute in Terminal", "Open" e "Cancel". Em vez disso, gostaria de executá-lo imediatamente sem esse aviso.

E como esse é um servidor do Minecraft, só consigo ver os resultados do servidor no terminal, como quem se conecta ao meu servidor. Mas se eu clicar em "Executar no Terminal", o terminal irá mostrar e depois fechar. Eu pensei que isso poderia ser resolvido por "exec bash \" "como explicado aqui Para manter a janela do terminal aberta.

E, finalmente, gostaria de fazer isso na inicialização, semelhante ao modo como o Windows tem uma pasta de inicialização onde qualquer arquivo colocado nessa pasta será executado na inicialização.

    
por Mr. El 11.11.2017 / 16:17

1 resposta

1

Como systemd service

( Você não mencionou uma distribuição GNU / Linux específica, acho que as mais comuns têm systemd disponível embora )

Se você mover seu arquivo .jar para algum local acessível como /opt , poderá ter systemd executando seu servidor após a inicialização como nobody ou algum outro usuário com poucos privilégios.

Além de possivelmente executar sem acesso a diretórios base, etc., você também pode configurar o systemd para reiniciar um serviço após uma falha e muitas outras coisas.

Veja man systemd.service , man systemd.exec , man systemd.unit , etc.

nukkit.service

[Unit]
Description=Nukkit Server
After=syslog.target
After=network.target

[Service]
Type=simple
User=nobody
Group=nobody
ExecStart=java -jar /opt/Nukkit/nukkit.jar

[Install]
WantedBy=multi-user.target

Ver saída

Onde você tem /etc/systemd/system/nukkit.service e tem:

  • systemctl enable nukkit
  • systemctl start nukkit

, em seguida, journalctl -f -u nukkit deve f seguir as mensagens de log mais recentes de systemd u nit nukkit. Seu sistema pode estar usando syslog ou alguma outra facilidade embora; Nesse caso, você poderia configurar o registro em um arquivo específico, etc .

    
por 12.11.2017 / 02:20