Файл службы Systemd для assp

Файл службы Systemd для assp

Я запускаю ASSP на CentOS 7, который использует systemd. Единственный готовый файл службы, который я смог найти (howtoforge.com) использует тип oneshot, в правильности которого я не уверен. Что еще важнее, команда stop, похоже, убивает все запущенные мной программы perl (поэтому я ее закомментировал). Но теперь я не уверен, что она правильно останавливается при выключении. Может кто-нибудь посоветовать, как улучшить файл службы:

[Unit]
Description=AntiSpam SMTP Proxy
After=network.target

[Service]
Type=Simple
Environment=PERL5LIB=/root/perl5/lib/perl5/
ExecStartPre=-rm -f /usr/local/assp/pid
ExecStart=/usr/bin/perl /usr/local/assp/assp.pl /usr/local/assp/
ExecStopPost=-rm -f /usr/local/assp/pid

[Install]
WantedBy=multi-user.target

решение1

Type=oneshotне имеет смысла для любой программы, которая должна работать непрерывно, будь то демон или что-то еще. Так что вы правы. Вы действительно нашли еще один плохой интернет-руководство (на сайте, печально известном ими; и у этого руководства также много других проблем).

Изучив пример сценария инициализации на вики assp, можно сделать вывод, что программа работает на переднем плане и не демонизирует себя. Type=simple(по умолчанию) подходит для такого рода служб.

Строка ExecStop=обычно не требуется для Type=simpleслужбы, так как systemd уже знает, какой процесс остановить. Она может потребоваться только для чего-то с необычной процедурой остановки, но assp просто принимает сигнал и завершается, как любой другой процесс. Эту строку можно пропустить.

Помимо этих проблем, вы продублировали ExecStartPre=строку. Вероятно, она вам понадобится только один раз. Вы также можете захотеть установить WorkingDirectory=в каталог, в который вы установили assp, так как старый сценарий init также делал это.

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