我们知道IIS的网站日志是按天自动分割的,但nginx的日志文件默认不会自动分割,到是可以关闭日志功能,直接不让网站产生日志,但这种方法不是太可取,因为我们平时需要通过日志来分析用户及蜘蛛的各类访问情况,没有别的好办法只有通过脚本来定时运行对日志文件进行分割。
- 日志分割脚本
#!/bin/bash
#funciton:cut nginx log files
#set the path to nginx log files(日志保存目录)
log_files_path="/usr/local/nginx/logs/"
log_files_dir=${log_files_path}
#set nginx log files you want to cut(需要分割的日志文件名,这是一个数组)
log_files_name=(wp phpmyadmin dede)
#gset the path to nginx.(nginx执行程序路径)
nginx_sbin="/usr/local/nginx/sbin/nginx"
#Set how long you want to save(日志分割后保存30天)
save_days=30
############################################
#Please do not modify the following script #
############################################
#mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}
#cut nginx log files
for((i=0;i<$log_files_num;i++));do
mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}${log_files_name[i]}_$(date -d "yesterday" +"%Y-%m-%d").log
done
#delete 30 days ago nginx log files(只删除log文件,原来的脚本是删除所有30天前建立的文件,会把nginx.pid删除)
find $log_files_path -name '*.log' -mtime +$save_days -exec rm -rf {} \;
#restart nginx
$nginx_sbin -s reload
- 把上面的脚本程序直接保存成可执行的脚本文件,我这里保存路径
/usr/local/nginx/sbin/cut_nginx_logs.sh
- 添加可执行权限:
chmod +x /usr/local/nginx/sbin/cut_nginx_logs.sh
- 最后添加进定时执行任务中,vi /etc/crontab,在最后面添加以下命令,如果对定时任务不太了解,可以翻看我的另一遍文章:Linux7-利用crontab命令来执行各种定时任务;
0 0 * * * root /usr/local/nginx/sbin/cut_nginx_logs.sh
最新评论
感谢
能不能屏蔽掉刷流量的,统计工具显示全部都是
路过学习了
好像不太行啊 加载不出来啊
好文章
是否可以 实现 判断手机端跳转 而网址不变呢
你好
感谢分享,我也遇到这个了,根据你的提示,屏蔽掉了