先確定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