欢迎光临
我们一直在努力

Nginx-利用shell脚本定时分割nginx日志

我们知道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
0 0 * * * root /usr/local/nginx/sbin/cut_nginx_logs.sh

赞(0) 打赏
原创文章转载请注明出处:爱编程 » Nginx-利用shell脚本定时分割nginx日志
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

爱编程、一个运维兼程序员的博客!

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏