Estou executando o ASSP no CentOS 7 que usa systemd. O único arquivo de serviço pré-fabricado que consegui encontrar (howtoforge.com) usa o tipo oneshot que não tenho certeza se está correto. Mais importante ainda, o comando stop parece matar todos os programas Perl que estou executando (então comentei isso). Mas agora não tenho certeza se ele está parando corretamente ao desligar. Alguém pode aconselhar sobre como melhorar o arquivo de serviço:
[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
Responder1
Type=oneshot
não faz sentido para nenhum programa destinado a ser executado continuamente, seja como um daemon ou não. Então você está certo sobre isso. Você realmente encontrou outro tutorial ruim na Internet (em um site famoso por eles; e esse tutorial também tem muitos outros problemas).
Ao revisar o exemplo de script de inicialização no wiki do assp, parece que o programa é executado em primeiro plano e não se daemoniza. Type=simple
(o padrão) é apropriado para esse tipo de serviço.
ExecStop=
Normalmente não é necessária uma linha para um Type=simple
serviço, pois o systemd já sabe qual processo interromper. Seria necessário apenas para algo com um procedimento de parada incomum, mas o assp apenas aceita um sinal e finaliza, como qualquer outro processo. Você pode omitir esta linha.
Além desses problemas, você duplicou uma ExecStartPre=
linha. Você provavelmente só precisará disso uma vez. Você também pode querer definir WorkingDirectory=
o diretório onde instalou o assp, já que o script de inicialização de estilo antigo também fazia isso.