CentOS 7下实现每5分钟自动记录连接数,可通过编写Shell脚本结合cron定时任务完成,首先使用ss -t | wc -l命令统计当前TCP连接数,并将结果追加到日志文件;然后通过crontab -e添加定时任务,设置每5分钟执行脚本(如*/5 * * * * /root/conn_log.sh),同时需确保脚本具有执行权限,实践中需注意日志路径的权限配置及脚本异常处理,最终实现连接数的自动化记录,为网络状态监控与故障排查提供数据支持。
在服务器运维中,监控网络连接数是保障系统稳定性的重要环节,异常的连接数波动可能预示着DDoS攻击、服务故障或应用程序异常等问题,CentOS 7作为常用的服务器操作系统,通过简单的脚本和定时任务,即可实现每5分钟自动记录连接数的功能,为后续的趋势分析和问题排查提供数据支持,本文将详细介绍具体实现步骤,包括工具选择、脚本编写、定时任务配置及常见问题处理。
实现每5分钟记录连接数的核心思路是:使用命令行工具获取当前连接数,通过脚本保存到日志文件,再利用cron定时任务实现自动化执行,具体流程如下:
- 工具选择:使用
ss或netstat命令获取连接数(ss是netstat的替代品,性能更优,推荐优先使用)。 - 脚本编写:封装获取连接数、记录日志的逻辑,确保脚本可独立执行。
- 定时任务配置:通过
cron设置每5分钟执行一次脚本,实现自动化。 - 日志管理:定期查看或轮转日志文件,避免磁盘空间占用过多。
详细实现步骤
确认工具可用性
使用ss命令(推荐)
ss是Linux系统自带的新一代网络工具,相比netstat更高效,默认情况下,CentOS 7已安装ss,可通过以下命令验证:

ss --version
若未安装,可通过yum安装:
sudo yum install iproute -y
使用netstat命令(备选)
若因兼容性需使用netstat,需安装net-tools包:
sudo yum install net-tools -y
验证安装:
netstat --version
编写记录连接数的脚本
在/usr/local/bin/目录下创建脚本connection_monitor.sh(目录权限较高,适合存放系统脚本):
sudo vim /usr/local/bin/connection_monitor.sh
``` 如下(以`ss`命令为例,记录所有TCP连接数):
```bash
#!/bin/bash
# 定义日志文件路径(建议使用专用目录,便于管理)
LOG_DIR="/var/log/connection_count"
LOG_FILE="${LOG_DIR}/connection_count_$(date +%Y%m%d).log"
# 创建日志目录(若不存在)
mkdir -p "${LOG_DIR}"
# 获取当前时间(格式:YYYY-MM-DD HH:MM:SS)
CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 获取TCP连接数(ss -tan:显示所有TCP连接,-n避免域名解析)
# 若需按状态统计(如已建立连接、监听连接等),可修改命令
# 已建立连接数:ss -tan state established | wc -l
# 监听连接数:ss -tan state listening | wc -l
CONNECTION_COUNT=$(ss -tan | wc -l)
# 将时间、连接数写入日志文件(格式:时间,连接数)
echo "${CURRENT_TIME}, ${CONNECTION_COUNT}" >> "${LOG_FILE}"
# 输出执行状态(可选,便于调试)
echo "记录完成:${CURRENT_TIME}, 连接数=${CONNECTION_COUNT}"
脚本说明:
LOG_DIR:日志存储目录,按日期分割日志文件(如connection_count_20231001.log)。ss -tan:-t仅显示TCP连接,-a显示所有连接(包括监听、已建立等),-n以数字形式显示地址和端口,避免DNS解析延迟。wc -l:统计ss命令输出的行数,即连接数。
保存脚本后,赋予执行权限:
sudo chmod +x /usr/local/bin/connection_monitor.sh
测试脚本执行
手动运行脚本,验证是否正常生成日志文件:
sudo /usr/local/bin/connection_monitor.sh
检查日志文件是否存在并包含内容:
cat /var/log/connection_count/connection_count_$(date +%Y%m%d).log
预期输出示例:
2023-10-01 14:30:00, 150
配置cron定时任务
cron是Linux系统内置的定时任务工具,可通过以下步骤配置每5分钟执行一次脚本:
编辑cron任务列表
sudo crontab -e
若首次使用crontab,系统会提示选择编辑器(如vim或nano),选择后进入编辑界面。
添加定时任务
在文件末尾添加以下内容:
*/5 * * * * /usr/local/bin/connection_monitor.sh >> /var/log/connection_count/cron_run.log 2>&1
任务说明:
*/5 * * * *:cron时间格式,表示“每5分钟执行一次”(具体为:分钟(0-59)小时(0-23)日期(1-31)月份(1-12)
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

