script systemd para iniciar meu servidor de aplicativos assim que ele estiver inativo ou o sistema for reinicializado

script systemd para iniciar meu servidor de aplicativos assim que ele estiver inativo ou o sistema for reinicializado

Eu tenho um arquivo de configuração inicial conforme mostrado abaixo que funciona bem no Ubuntu 14:

#/etc/init/data_server.conf
#sudo start data_server
#sudo stop data_server
#sudo status data_server

start on runlevel [2345]
stop on runlevel [016]

chdir /opt/hold/data_server
respawn

post-start script
    echo "data server started at `date +"%F %T"` on `hostname -f`" | mailx -r "[email protected]" -s "data server Started" "[email protected]"
end script

post-stop script
  sleep 30
end script

limit core unlimited unlimited
limit nofile 100000 100000
setuid goldy
exec ./data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5

Agora estamos mudando para o Ubuntu 16, então não podemos usar upstarte parece que precisamos usar systemdaqui. Quais são as mudanças que preciso fazer para escrever o script systemd?

Eu tenho que ter certeza de que sempre que o sistema for reiniciado ou o aplicativo for encerrado, ele deverá iniciar meu systemdscript automaticamente, que por sua vez iniciará meu arquivo data server.

Responder1

Seu script inicial mudará muito. Você não precisará especificar manualmente tantas diretivas, portanto também será muito mais curto.

Fazer com que um processo sempre inicie na inicialização e reinicie quando travar é apenas uma linha:

Restart=always

Não sei quantas alterações personalizadas você precisa manter, mas, no mínimo, parece que você precisa manter os comandos chdire .exec

Aqui está um exemplo de script systemd básico para seu aplicativo:

[Unit]
Description=My-service

[Service]
Type=simple
WorkingDirectory=/opt/hold/data_server
ExecStart=/path/to/data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
Restart=always

[Install]
WantedBy=multi-user.target

Achei este um recurso útil ao escrever arquivos de unidades personalizadas:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

informação relacionada