推荐答案
Nginx 的日志切割可以通过以下步骤实现:
手动切割:
- 首先,重命名当前的日志文件。
- 然后,使用
kill -USR1
命令向 Nginx 主进程发送信号,使其重新打开日志文件。
mv /var/log/nginx/access.log /var/log/nginx/access.log.1 kill -USR1 `cat /var/run/nginx.pid`
使用
logrotate
工具:- 配置
logrotate
来定期切割 Nginx 日志文件。 - 创建一个
/etc/logrotate.d/nginx
文件,内容如下:
-- -------------------- ---- ------- -------------------- - ----- --------- ------ -- -------- ------------- ---------- ------ ---- -------- --- ------------- ---------- -- - -- ------------------ -- ---- ---- ----- ---- ------------------- -- --------- -
- 配置
本题详细解读
1. 手动切割日志
手动切割日志的步骤包括重命名当前日志文件和向 Nginx 主进程发送信号。重命名日志文件后,Nginx 会继续写入新的日志文件,而旧的日志文件可以备份或删除。通过 kill -USR1
命令,Nginx 会重新打开日志文件,确保日志写入不会中断。
2. 使用 logrotate
工具
logrotate
是一个 Linux 系统上的日志管理工具,可以自动切割、压缩和删除旧的日志文件。通过配置 /etc/logrotate.d/nginx
文件,可以指定日志文件的切割频率、保留天数、压缩选项等。postrotate
脚本部分会在日志切割后执行,向 Nginx 主进程发送 USR1
信号,使其重新打开日志文件。
3. 配置详解
- daily:每天切割一次日志。
- missingok:如果日志文件不存在,不报错。
- rotate 14:保留最近 14 天的日志文件。
- compress:压缩旧的日志文件。
- delaycompress:延迟压缩,直到下一次切割时才压缩上一次的日志文件。
- notifempty:如果日志文件为空,不进行切割。
- create 0640 www-data adm:创建新的日志文件,并设置权限和所有者。
- sharedscripts:在所有日志文件切割后执行一次
postrotate
脚本。 - postrotate:在日志切割后执行的脚本,通常用于通知 Nginx 重新打开日志文件。
通过以上方法,可以有效地管理和切割 Nginx 的日志文件,避免日志文件过大影响系统性能。