скрипт systemd для запуска моего сервера приложений сразу после его выхода из строя или перезагрузки системы

скрипт systemd для запуска моего сервера приложений сразу после его выхода из строя или перезагрузки системы

У меня есть файл конфигурации upstart, показанный ниже, который отлично работает в 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

Теперь мы переходим на Ubuntu 16, поэтому мы не можем использовать upstartи, похоже, нам нужно использовать systemdздесь. Какие изменения мне нужно сделать, чтобы написать скрипт в systemd?

Мне нужно убедиться, что при каждой перезагрузке системы или завершении работы приложения автоматически запускается мой systemdскрипт, который, в свою очередь, запускает мой data server.

решение1

Ваш скрипт upstart сильно изменится. Вам не придется вручную указывать так много директив, поэтому он также будет намного короче.

Заставить процесс всегда запускаться при загрузке и перезапускаться при сбое можно всего одной строкой:

Restart=always

Я не знаю, сколько пользовательских изменений вам нужно сохранить, но, как минимум, похоже, вам нужно будет сохранить команды chdirи exec.

Вот пример базового скрипта systemd для вашего приложения:

[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

Я обнаружил, что это полезный ресурс при написании пользовательских файлов юнитов:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

Связанный контент