script systemd para iniciar mi servidor de aplicaciones tan pronto como esté inactivo o se reinicie el sistema

script systemd para iniciar mi servidor de aplicaciones tan pronto como esté inactivo o se reinicie el sistema

Tengo un archivo de configuración inicial como se muestra a continuación que funciona bien en 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

Ahora nos estamos mudando a Ubuntu 16, por lo que no podemos usarlo upstarty parece que necesitamos usarlo systemdaquí. ¿Cuáles son los cambios que debo hacer para escribir el script systemd?

Tengo que asegurarme de que cada vez que se reinicia el sistema o se cierra la aplicación, el systemdscript debe iniciarse automáticamente, lo que a su vez inicia mi archivo data server.

Respuesta1

Tu guión advenedizo cambiará mucho. No debería necesitar especificar tantas directivas manualmente, por lo que también será mucho más corto.

Hacer que un proceso siempre comience al arrancar y se reinicie cuando falla es simplemente una línea:

Restart=always

No sé cuántos cambios personalizados necesitas conservar, pero como mínimo, parece que necesitarás conservar los comandos chdiry .exec

A continuación se muestra un ejemplo de un script systemd básico para su aplicación:

[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

Encontré que este es un recurso útil al escribir archivos unitarios personalizados:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

información relacionada