Nginx日誌滾動可分爲3步:
- 將access.log重命名成形如access_202006161113.log
- 通過kill命令向nginx的進程發送 -USR1信號,通知nginx重新創建access.log文件
- 刪除修改時間比指定時間更早的歷史日誌
示例腳本:
#!/bin/bash
# rename access.log
NGINX_LOG_HOME="/data/web_log/nginx"
minu=`date "+%Y%m%d%H%M"`
src=$NGINX_LOG_HOME/access.log
dst=$NGINX_LOG_HOME/access_$minu.log
mv $src $dst
# notify nginx reopen a new access.log
nginx_pid=/var/run/nginx.pid
kill -USR1 `cat $nginx_pid`
# remove outdated log files
cd $NGINX_LOG_HOME
nginx_backup_minutes=1440 # 1440分鐘,即24小時
find . -type f -name "*.log" -mmin +${nginx_backup_minutes} | xargs rm -f
腳本的調用一般配在crontab裏,例如:
0 * * * * /bin/bash /usr/local/logrotate_nginx.sh