温馨提示×

如何轮转debian日志文件

小樊
37
2026-09-22 07:49:26
栏目: 智能运维

在 Debian 系统中,日志文件的轮转(log rotation)通常由 logrotate 工具完成。以下是常见的做法和配置方式。


一、使用 logrotate(推荐方式)

1. 查看是否已安装

which logrotate

Debian 默认已安装。

2. 主配置文件

  • 主配置:/etc/logrotate.conf
  • 子配置目录:/etc/logrotate.d/

系统会自动读取 /etc/logrotate.d/ 下的所有文件。

3. 手动轮转测试

logrotate -d /etc/logrotate.conf   # 测试(不实际执行)
logrotate -f /etc/logrotate.conf  # 强制轮转

二、为自定义日志添加轮转规则

例如你有一个日志:/var/log/myapp.log

1. 创建配置文件

sudo nano /etc/logrotate.d/myapp

2. 示例配置

/var/log/myapp.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload myapp > /dev/null 2>&1 || true
    endscript
}

参数说明

  • daily:每天轮转(也可 weekly / monthly
  • rotate 7:保留 7 个旧日志
  • compress:压缩旧日志
  • delaycompress:延迟一次压缩
  • notifempty:空文件不轮转
  • create:新建日志文件权限
  • postrotate:轮转后重启/重载服务

三、系统日志(rsyslog)

Debian 默认使用 rsyslog,其日志如:

  • /var/log/syslog
  • /var/log/auth.log

这些已由:

/etc/logrotate.d/rsyslog

自动管理,一般不需要手动改。


四、使用 systemd 日志(journalctl)

如果你使用的是 systemd-journald

查看日志占用

journalctl --disk-usage

限制日志大小

编辑:

sudo nano /etc/systemd/journald.conf

示例:

SystemMaxUse=500M
MaxRetentionSec=2week

重启服务:

sudo systemctl restart systemd-journald

五、常见问题

日志没轮转?

  • 检查 cron 是否运行:
systemctl status cron
  • 手动测试:
logrotate -d /etc/logrotate.d/myapp

如果你有 具体日志路径特定服务(如 nginx、docker、自定义程序),可以告诉我,我可以给你更精确的配置示例。

0