ProFTPD“killed (signal 15)”自动退出问题解决

08/15/2014

自从在Zabbix中开启了FTP(Template App FTP Service)监控之后,Kaijia发现了有一台Virtualmin服务器的ProFTPD服务经常掉。虽然每次重启之后都能解决问题但Kaijia还是留意了一下日志,因为流量小所以日志非常简单很快就找到了与问题关联的内容:

2014-08-15 00:41:13,737 kaijia proftpd[1020] kaijia.me: ProFTPD killed (signal 15)
2014-08-15 00:41:13,815 kaijia proftpd[1020] kaijia.me: ProFTPD 1.3.5rc3 standalone mode SHUTDOWN

看起来这又像是一个仅有两行日志的无头案了。不过由于日志明确给出了退出信号“killed (signal 15)”,因此Google的话还是比较简单找到答案的,最后Kaijia在一篇Stack Overflow中找到了解决方案。

Stack Overflow中讨论的情况虽然没有发生在Virtualmin上但和Kaijia遇到的相似,也是ProFTPD突然退出,剩下一句“killed (signal 15)”提示。根据文中的回答,此问题是由于ProFTPD未能在重启时停止造成的(…ProFTPD not stopping in time to be restarted)。解决方法既是在通过start-stop-daemon关闭ProFTPD进程时进行多次尝试,以确保ProFTPD得以正常关闭,这样就可以在关闭之后重新启动程序了。目前Ubuntu还没有发布相关的修复,Debian也仅在unstable分支(sid)中修复了此问题。一个临时的解决方法是编辑/etc/init.d/proftpd文件,将文件第109行(Kaijia的ProFTPD版本为1.3.5~rc3-2.1ubuntu2)的:

更改为:

即可修复此问题。

:Stack Overflow原文中–retry参数写的是1,但Debian发布的修复中使用了“$SIGNAL/30/KILL/60”因此Kaijia建议使用后者。