Я запускаю 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, так как сценарий инициализации старого стиля также делал это.