先确定nginx日志路径和pid路径
我的日志路径在 /var/log/nginx/(access,error).log
我的pid路径在 /run/nginx.pid
创建日志切割后的存放路径
mkdir -p /var/log/nginx/logs
编写脚本文件,存放在任何路径都可,
vi runlog.sh #!/bin/bash # 设置日志文件存放目录 logs_path="/var/log/nginx/" backup_path="/var/log/nginx/logs/" # 设置pid文件 pid_path="/run/nginx.pid" # 重命名日志文件 mv ${logs_path}/access.log ${backup_path}/access_$(date -d "yesterday" +"%Y%m%d").log mv ${logs_path}/error.log ${backup_path}/error_$(date -d "yesterday" +"%Y%m%d").log # 向nginx主进程发信号重新打开日志 kill -USR1 `cat ${pid_path}` # 压缩 gzip ${backup_path}/access_$(date -d "yesterday" +"%Y%m%d").log gzip ${backup_path}/error_$(date -d "yesterday" +"%Y%m%d").log # 删除超过指定时间的日志文件,单位:天 find $backup_path -name "*.gz" -type f -mtime +30 -exec rm -rf {} \;
编写定时任务
crontab -e 0 0 * * * sh /var/log/nginx/runlog.sh