Назад | Перейти на главную страницу

Сервисный файл systemd для assp

Я запускаю ASSP на CentOS 7, который использует systemd. Единственный готовый служебный файл, который я смог найти (howtoforge.com) использует тип onehot, который, я не уверен, правильный. Что еще более важно, команда 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

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

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

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

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