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

У меня есть файл конфигурации выскочки, как показано ниже, который отлично работает в 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 "abc@host.com" -s "data server Started" "pqr@host.com"
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, поэтому мы не можем использовать выскочку и похоже, что нам нужно использовать здесь systemd . Какие изменения мне нужно сделать, чтобы написать сценарий в systemd ?

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

-1
задан 21 March 2018 в 20:20
1 ответ

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

Чтобы процесс всегда запускался при загрузке и перезапускался при сбое, достаточно всего одной строчки:

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

2
ответ дан 5 December 2019 в 19:21

Теги

Похожие вопросы