nginx log 清理
目录
之前设置了 UptimeRobot 来监控服务器的运行情况,但是这样会在 nginx 下面留下大量的轮询 log 记录,想到之前设置的 crontab 会在每天 00:00 的时候把 log 文件从 /var/log/nginx
移动到 /var/log/nginx/20060102
,于是就在原本的脚本基础上添加了一行 sed '/UptimeRobot/d' $log_file_name -i
。之前尝试过修改 nginx 让它不记录 UptimeRobot 的流量,但是这样要么需要插件,要么需要重新编译,但是我不是很想动它,最后觉得这个方式还算能接受。
最后,放上脚本。
首先要清理一下之前的文件:
log_file_list=`ls -l /var/log/nginx`;
for log_file_folder in $log_file_list;
do
log_folder="/var/log/nginx/$log_file_folder";
if [ -d $log_folder ];
then
for log_file in `ls -l $log_folder`;
do
log_file_name="$log_folder/$log_file"
if [ -f $log_file_name ];
then
sed '/UptimeRobot/d' $log_file_name -i
fi
done
fi
done
然后是修改之后的 crontab:
#!/bin/bash
#1.设置日志文件存放目录,假设你的nginx的日志存在这个目录里
logs_path="/var/log/nginx/"
#2.设置pid文件,这个根据你自己的环境,找到nginx.pid所在目录
pid_path="/usr/local/openresty/nginx/logs/nginx.pid"
#3.创建分割存储的日期文件目录
datetime=`date -d "yesterday" +"%Y%m%d"`;
new_log_path=$logs_path$datetime
mkdir -p $new_log_path
#4.按照日期移动所有该目录下的日志文件
log_file_list=`ls -l $logs_path`;
for log_file in $log_file_list;
do
log_file_name=$logs_path$log_file;
if [ -f $log_file_name ];
then
sed '/UptimeRobot/d' $log_file_name -i
mv $log_file_name $new_log_path;
fi
done
#5.向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}