NGINX日志切割

mv /path/to/nginx/logs/access.log bak_access.log

执行此命令Nginx会重新生成新的为0bytes的access.log文件:

/path/to/nginx -s reopen
-rw-r--r--  1 www root    0 5月  18 14:39 access.log
-rw-r--r--. 1 www root 3543 5月  18 14:38 bak_access.log
-rw-r--r--. 1 www root    0 5月  12 17:08 nginx_error.log

使用定时任务配合shell脚本进行每天对日志切割并保存到history目录,以下命令保存为LogCutting.sh并增加可执行权限。

#!/bin/bash
# 历史日志目录
NGINX_HISTORY_LOGS_PATH=/path/to/nginx/logs/history
# NGINX日志目录
NGINX_CURRENT_LOGS_PATH=/path/to/nginx/logs
# NGINX进程PID文件
NGINX_PID_FILE=/path/to/nginx/logs/nginx.pid
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${NGINX_CURRENT_LOGS_PATH}/access.log ${NGINX_HISTORY_LOGS_PATH}/${YESTERDAY}_access.log
mv ${NGINX_CURRENT_LOGS_PATH}/error.log ${NGINX_HISTORY_LOGS_PATH}/${YESTERDAY}_error.log
# 向NGINX主进程发送USR1信号,USR1信号为重新打开日志文件
kill -USR1 $(cat ${NGINX_PID_FILE})

增加定时任务:

crontab -e # 编辑定时任务脚本文件
0 0 * * * /path/to/LogCutting.sh # 每天0点执行
crontab -l # 查看是否添加成功
原文地址:https://www.cnblogs.com/qiutianjia/p/11574043.html