我在使用systemd的CentOS 7上运行ASSP。我能找到的唯一预先制作的服务文件(howtoforge.com)使用oneshot类型,但我不确定它是正确的。更重要的是,停止命令似乎会杀死我正在运行的所有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发布于 2018-09-02 20:44:23
对于任何打算持续运行的程序,无论是作为守护进程还是其他程序,Type=oneshot都是没有意义的。所以你是对的。你确实发现了另一个糟糕的网络教程(在一个臭名昭著的网站上;该教程还有很多其他问题)。
通过查看assp的wiki上的样例init脚本,可以看出该程序运行在前台,并且不去守护自己。Type=simple (默认值)适用于这类服务。
ExecStop=行通常并不是Type=simple服务所必需的,因为systemd已经知道要停止哪个进程。它只需要有一个不寻常的停止过程,但assp只是接受一个信号和终止,就像任何其他进程。你可以省略这一行。
除了这些问题,您还复制了一个ExecStartPre=行。你可能只需要一次。您还可能希望将WorkingDirectory=设置为安装assp的目录,因为旧样式init脚本也会这样做。
https://serverfault.com/questions/929082
复制相似问题