我在 Ubuntu 20 LTS 上全新安装 ProFTPD 时遇到了一个奇怪的问题。
我注意到,在更改配置文件上的某些选项后,运行时services proftpd restart
修改不适用,只有重新启动系统后更改才会生效。
所以我尝试停止服务,services proftpd stop
但我可以继续与 ftp 客户端连接。所以这里有些奇怪。你能帮我验证一下吗?
一些输出
root@b205d:~# which proftpd
/usr/sbin/proftpd
root@b205d:~# whereis proftpd
proftpd: /usr/sbin/proftpd /usr/lib/proftpd /etc/proftpd /usr/share/proftpd /usr/share/man/man8/proftpd.8.gz
答案1
检查 的输出
systemctl status proftpd.service
。您应该看到带有 PID 规范的正在运行的进程树。然后检查 的输出
ss -tlnp sport == :21
。您将看到 ftp 控制连接的监听套接字和拥有这些套接字的 pid 的进程。比较上面两个命令的 PID。
检查 的输出
systemctl cat proftpd.service
。可能读取了一些环境变量。(部分Environment
的语句[Service]
)。还要检查Type
里面的语句[Service]
。错误的值可能会导致奇怪的效果。尝试重新加载/重新启动 proftpd (
systemctl reload proftpd.service
和systemctl restart proftpd.service
)。检查的输出journalctl -u proftpd.service
。尝试停止 proftpd 服务并使用状态输出中显示的相同命令行手动运行它。尝试更改配置并向服务发送重新加载信号。
如果以上方法均无效,请在 strace 下运行 proftpd 并深入了解内部情况。
答案2
从 Ubuntu 16 开始,大多数服务都通过 systemd 控制。您可以通过 systemctl 命令操作 systemd 服务。
要在 Ubuntu 20 上重新启动 proftpd,您需要使用以下命令:
systemctl restart proftpd.service
然后查看它是否正在运行:
systemctl status proftpd.service