#!/usr/bin/env bash
set -eu
# Nginx Log PATH
LOG_PATH=/data/nginx/logs/
# Split by day
mv ${LOG_PATH}/access.log ${LOG_PATH}/access_nginx_"$(date +%F)".log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error_nginx_"$(date +%F)".log
# Reopen the log file,向nginx主进程发送USR1信号.否则可能会继续往之前的文件写数据.linux中是根据文件描述符来找文件
nginx -s reopen
#kill -USR1 $(cat /data/nginx/PID/nginx.pid)
#kill -USR1 $(ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}')
# Delete logs 14 days ago
find "$LOG_PATH"/ -type f -mtime +14 -print0 | xargs -0 /bin/rm -f
#find "$LOG_PATH"/ -type f -mtime +14 -print0/-0 /bin/rm -f
#find "$LOG_PATH"/ -type f -mtime +14 -exec bin/rm -f {} \;
每天凌晨执行
echo '00 00 * * * root /usr/bin/bash /PATH/nginx_logs_cut.sh' >> /etc/crontab