systemctl是CentOS(尤其是7及以上版本,采用systemd服务管理)监控vsftpd服务状态的核心工具。执行以下命令可查看vsftpd的运行状态、激活状态及最近的日志片段:
sudo systemctl status vsftpd
若服务正在运行,输出会显示Active: active (running);若未运行,则显示inactive (dead)。此命令能快速判断服务是否处于可用状态。
vsftpd的日志记录了连接尝试、传输操作及错误信息,是排查问题的关键依据。默认日志路径通常为/var/log/vsftpd.log(部分系统可能指向/var/log/messages或/var/log/xferlog)。使用tail命令实时跟踪日志更新:
sudo tail -f /var/log/vsftpd.log
通过日志可识别异常登录、传输失败等问题,帮助定位服务异常原因。
vsftpd默认通过21端口提供FTP服务(若配置了被动模式,还会开放其他端口)。使用netstat或ss命令可验证端口是否处于监听状态:
sudo netstat -tuln | grep ':21\b' # 精确匹配21端口
sudo ss -tuln | grep ':21\b'
若输出包含0.0.0.0:21(IPv4)或:::21(IPv6),说明vsftpd已成功监听21端口,可接受外部连接。
lsof(List Open Files)可显示vsftpd进程打开的文件及网络连接,帮助确认服务是否正常运行及当前连接状态:
sudo lsof -i -P -n | grep vsftpd
输出会列出vsftpd进程的PID、用户、连接状态(如ESTABLISHED表示活跃连接)及监听端口,可用于排查连接泄漏或进程僵死问题。
通过脚本定期检查vsftpd状态并记录结果,可实现简单的自动化监控。例如,创建脚本/usr/local/bin/check_vsftpd.sh:
#!/bin/bash
status=$(sudo systemctl is-active vsftpd)
if [ "$status" = "active" ]; then
echo "$(date): vsftpd is running" >> /var/log/vsftpd_monitor.log
else
echo "$(date): vsftpd is not running" >> /var/log/vsftpd_monitor.log
# 可选:发送邮件或短信报警
fi
赋予脚本执行权限并添加到cron(每分钟运行一次):
sudo chmod +x /usr/local/bin/check_vsftpd.sh
echo "* * * * * /usr/local/bin/check_vsftpd.sh" | sudo tee -a /etc/crontab
此脚本会将vsftpd状态记录到/var/log/vsftpd_monitor.log,便于后续分析。
对于需要高级功能(如图形化界面、告警、历史数据存储)的场景,可使用以下工具:
sudo yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools -y
wget http://www.monitorix.org/monitorix-3.4.0-1.noarch.rpm
sudo rpm -ivh monitorix-3.4.0-1.noarch.rpm
sudo sed -i 's/^#graph_http/graph_http/' /etc/monitorix.conf # 启用HTTP监控
sudo chkconfig --add monitorix
sudo service monitorix start
访问http://服务器IP:8080/monitorix查看监控界面。以上方法覆盖了从基础到高级的vsftpd状态监控需求,可根据实际场景选择合适的方式。