Criando o serviço bash no Ubuntu 17.04 com systemd

2


Estou executando o Ubuntu 17.04 64-bit e gostaria de configurar o syncthing e mais dois aplicativos a serem iniciados após a inicialização da máquina, sem exigir que alguém faça login e os inicie manualmente.

Eu instalei todos os aplicativos nos seguintes diretórios:

/home/msa/syncthing/
/home/msa/minecraft-server/
/home/msa/test/

Para cada um desses aplicativos, criei um script de início com comandos de inicialização:

/home/msa/syncthing/start.sh
/home/msa/minecraft-server/start.sh
/home/msa/test/start.sh

O arquivo inicial syncthing contém:

./syncthing

O arquivo inicial do minecraft-server contém:

java -Xms1024M -Xmx2048M -jar minecraft_server.jar nogui

O arquivo inicial test contém:

java -Xms1024M -Xmx2048M -jar test.jar

Eu descobri que esta versão do Ubuntu usa systemd , e criei um arquivo chamado syncthing.service em / etc / systemd / system / contendo isto:

[Unit]
Description = Syncthing service description (todo)
After = network.target

[Service]
ExecStart = /home/msa/syncthing/start.sh

[Install]
WantedBy = multi-user.target

Então eu corri este comando:

systemctl enable syncthing.service

Ele retornou, que um link simbólico foi criado com sucesso, então eu iniciei o serviço:

systemctl start syncthing.service

Não funcionou. Eu corri este comando:

systemctl status syncthing

e tenho isso:

root@MinecraftServerAdvanced:/etc/systemd/system# systemctl status syncthing.service
● syncthing.service - Syncthing service description (todo)
Loaded: loaded (/etc/systemd/system/syncthing.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2017-05-06 19:47:54 CEST; 4s ago
Process: 789 ExecStart=/home/msa/syncthing/start.sh (code=exited, status=203/EXEC)
Main PID: 789 (code=exited, status=203/EXEC)

kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: Started Syncthing service description (todo).
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Main process exited, code=exited, status=203/E
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Unit entered failed state.
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Failed with result 'exit-code'.
root@MinecraftServerAdvanced:/etc/systemd/system#

O que estou fazendo de errado?

    
por user3593475 06.05.2017 / 19:57

1 resposta

0

Você precisa especificar o tipo de unidade systemd apropriada; veja esta manpage [ 1 ] e uma breve descrição no Archlinux Wiki [ 2 ]. Eu acho que esse tipo de bifurcação estará funcionando para sua configuração. Você precisa especificar o shell anteriormente; como está descrito aqui: [ 3 ].

Independentemente da sua pergunta; Eu não vejo nenhuma reson para executar o shell script nesta configuração. Basta especificar o caminho de execução completo em ExecStart .

    
por 06.05.2017 / 21:07