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 # 查看是否添加成功