写在开始:感谢
https://blog.csdn.net/andypan1314/article/details/74576180
和https://blog.csdn.net/weixin_38111957/article/details/81154333
给与的灵感和教程,感谢。
(前置:必须要找到你nginx服务器的pid和access.log、error.log位置)
1、目的:实现nginx按日生成access.log和error.log日志文件
2、场景:这个日志随着时间的增长,访问量越来越大的情况下,文件会越来越大。对于日志分析很会痛苦,这个时候写一个定时任务,这样岂不是完美。
3、实现思路:shell脚本+定时任务+nginx信号控制,完成日志定时切割
4、在你需要保存日志或者是其他目录,新建一个shell脚本。一般shell脚本都是.sh来标识:
1、创建一个文件,然后使用vim编辑该文件,编辑内容如下:
touch /www/w***ux/nginx/logs/nginxsavelog_byday.sh chmod -R 755 /www/w***ux/nginx/logs/nginxsavelog_byday.sh
2、设置定时任务 输入命令"crontab -e"来设置linux定时任务 ,写入设置如下:
* 0 * * * /bin/sh /www/w***ux/nginx/logs/nginxsavelog_byday.sh,前面时间可以随意更改
3、shell脚本如下:(此脚本已分别切割access.log和error.log两个日志文件)
#!/bin/bash #安装目录下日志文件 base_path='/www/w***ux/nginx/logs/access.log' base_path2='/www/w***ux/nginx/logs/error.log' #需要保存的目录位置 log_path='/www/w****ux/nginx/logs/nginx_logs_byday' #获取月份 log_month=$(date -d yesterday +"%Y%m") #获取当天日期 log_day=$(date -d yesterday +"%d") #在指定位置创建文件夹 mkdir -p $log_path/$log_month #将安装目录下的日志文件,移动到指定存储位置 mv $base_path $log_path/$log_month/access_$log_day.log mv $base_path2 $log_path/$log_month/error_$log_day.log #再使用信号控制切割日志 kill -USR1 `cat /www/w***ux/nginx/logs/nginx.pid`
4、测试一遍:执行脚本
$ /bin/sh nginxsavelog_byday.sh
在/www/w****ux/nginx/logs/ 下面生成【nginx_logs_byday/201811/】目录,如下:
5、测试完毕,将脚本执行命令放入定时器:(使用vim和i命令追加)
$ cd /var/spool/cron $ vi root # i 追加sh命令 5 0 * * * /www/w****ux/nginx/logs/nginxsavelog_byday.sh
6、结束,次日查看生成日志文件。