nginx的日志文件没有rotate功能。若是你不处理,日志文件将变得愈来愈大,还好咱们能够写一个nginx日志切割脚原本自动切割日志文件。linux
第一步就是重命名日志文件,不用担忧重命名后nginx找不到日志文件而丢失日志。在你未从新打开原名字的日志文件前,nginx仍是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。nginx
第二步向nginx主进程发送USR1信号。bash
nginx主进程接到信号后会从配置文件中读取日志文件名称,从新打开日志文件(以配置文件中的日志名称命名),并以工做进程的用户做为日志文件的全部者。ide
从新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工做进程使用新打开的日志文件。spa
工做进程马上打开新的日志文件并关闭重名名的日志文件。日志
而后你就能够处理旧的日志文件了。进程
nginx日志按日期自动切割脚本以下:crontab
#nginx日志切割脚本it
#author: wzio
#!/bin/bash
logs_path="/opt/logs/"
pid_path="/opt/run/nginx.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday"+"%Y%m%d").log
#向nginx主进程发信号从新打开日志
kill -USR1 `cat ${pid_path}`
crontab 设置做业
0 0 * * * (/bin/bash /opt/nginx/sbin/cut_nginx_log.sh)>/dev/null 2>&1这样就天天的0点0分把nginx日志重命名为日期格式,并从新生成今天的新日志文件