在 Debian 系统中,轮转(rotate)syslog 文件通常是通过 logrotate 工具来完成的。下面分几种常见情况说明。
Debian 默认使用 rsyslog,并由 logrotate 自动管理日志轮转。
cat /etc/logrotate.d/rsyslog
典型内容示例:
/var/log/syslog
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
说明:
rotate 4:保留 4 个旧日志weekly:每周轮转compress:压缩旧日志postrotate:通知 rsyslog 重新打开日志文件logrotate -d /etc/logrotate.d/rsyslog
logrotate -f /etc/logrotate.d/rsyslog
Debian 也支持 journald,日志不写在 /var/log/syslog。
查看日志:
journalctl
轮转 journal 日志:
journalctl --rotate
限制日志大小(编辑 /etc/systemd/journald.conf):
SystemMaxUse=500M
MaxRetentionSec=2week
然后重启:
systemctl restart systemd-journald
如果你有自定义日志,比如 /var/log/myapp.log:
创建:
sudo nano /etc/logrotate.d/myapp
内容:
/var/log/myapp.log
{
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
copytruncate:不重启服务,直接截断原文件(适合不支持信号重启的进程)检查:
ls -l /var/log/syslog*
systemctl status logrotate
rotate / sizesize 100M
✅ Debian 中 syslog 轮转标准方案:
logrotate/etc/logrotate.d/rsyslogpostrotate 通知 rsyslog如果你能说明:
我可以给你更精确的配置示例。