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 upstart
y parece que necesitamos usarlo systemd
aquí. ¿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 systemd
script 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 chdir
y .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