Nginx访问日志默认是在一个文件内一直追加,如此方式不利于时间段内的访问记录查询,大文件的读写资源开销可大,所以一般会采用按天把日志切割开来,用Linux的计划任务来操作任务。
- 设置Linux计划任务,首页执行
[root@iZ25gef96i2Z ~]# crontab -e
在任务列表中添加:
55 23 * * * /root/cmd/split_log.sh
- 编写切割日志的shell脚本split_log.sh,内容为:
## Nginx 日志文件所在的目录 LOGS_PATH=/home/wwwlogs ## 获取昨天的 yyyy-MM-dd YESTERDAY=$(date +"%Y%m%d" -d "-24hour") ## 移动文件 mv ${LOGS_PATH}/yulinapp.com.log ${LOGS_PATH}/history/access_${YESTERDAY}.log ## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
注意split_log.sh的路径,样例脚本是放到了/home/wwwlogs/history/下。