创建一个脚本,比如:/opt/port_stats.sh,脚本内容:
#!/bin/bash
# 设置要监控的端口列表
ports=({80,8080,456})
# 执行一次循环
for port in "${ports[@]}"; do
num=$(netstat -nat | grep ":"$port | wc -l)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $port $num" >> /opt/output.log
done
打开终端或命令行界面。
输入以下命令来编辑 crontab 文件:
crontab -e
在 crontab 文件中添加以下一行,以使脚本每隔一分钟自动执行一次:
* * * * * /bin/bash /opt/port_stats.sh
保存文件并退出文本编辑器。
确保脚本 port_stats.sh 具有可执行权限:
chmod +x /opt/port_stats.sh
重启 cron 服务以使更改生效(在某些系统中可以使用 cronie 替代 cron):
sudo systemctl restart cron
这些步骤会将你的脚本配置为每隔一分钟自动执行一次,并将结果写入 /opt/output.log 文件中。
【设置开机执行该任务】
创建一个新的服务单元文件,比如 port_stats.service,并将以下内容粘贴进去:
[Unit]
Description=Run port_stats.sh every minute at startup
[Service]
Type=simple
ExecStart=/bin/bash /opt/port_stats.sh
[Install]
WantedBy=default.target
这会在系统开机时执行你的脚本 /opt/port_stats.sh。
将这个文件保存到 /etc/systemd/system/ 目录中。
运行以下命令启用并启动这个服务:
sudo systemctl enable port_stats.service
sudo systemctl start port_stats.service
这将启用服务并在系统开机时自动执行定时任务。
【日志拆分】
可以使用 logrotate 工具来自动拆分日志文件,以防止日志文件过大。logrotate 是一个用于管理日志文件的系统工具,它可以按照一定的条件和规则自动进行日志文件的轮转和拆分。
以下是如何设置 logrotate 来处理你的 output.log 文件:
创建一个新的配置文件,比如 port_stats_logrotate.conf,并将以下内容粘贴进去:
/opt/output.log {
size 10M #当日志文件达到 10 兆大小时触发拆分
rotate 10 #最多保留 10 个旧的日志文件
compress #压缩旧的日志文件
missingok #如果日志文件不存在,则忽略错误
notifempty #如果日志文件为空,则忽略错误
create 644 root root #创建新的日志文件时使用指定的权限和所有者
}
/opt/output.log {
size 10M #当日志文件达到 10 兆大小时触发拆分
rotate 10 #最多保留 10 个旧的日志文件
compress
missingok #如果日志文件不存在,则忽略错误
notifempty #如果日志文件为空,则忽略错误
create 644 root root #创建新的日志文件时使用指定的权限和所有者
olddir /opt/archive
postrotate
mv /opt/output.log.1 /opt/output.log.1.log
endscript
}
这个配置文件指定了以下内容:
size 10M:当日志文件达到 10 兆大小时触发拆分。
rotate 10:最多保留 10 个旧的日志文件。
compress:压缩旧的日志文件。
missingok:如果日志文件不存在,则忽略错误。
notifempty:如果日志文件为空,则忽略错误。
create 644 root root:创建新的日志文件时使用指定的权限和所有者。
将这个配置文件保存到 /etc/logrotate.d/ 目录中。
运行以下命令来手动执行一次 logrotate:
sudo logrotate -f /etc/logrotate.d/port_stats_logrotate.conf
这将立即执行一次日志轮转,并拆分 output.log 文件。
之后,每当 output.log 文件达到 10 兆大小时,logrotate 将自动执行日志轮转,拆分日志文件并保留指定数量的旧日志文件。
标签:opt,文件,stats,10,步骤,cron,定时,port,日志 From: https://www.cnblogs.com/brad93/p/17600977.html