Ubuntu系统中限制syslog日志大小的核心方法是通过logrotate工具实现自动轮替与管理,以下是具体配置步骤与说明:
Ubuntu系统默认已安装logrotate,可通过以下命令验证版本:
logrotate --version
若未安装,可通过sudo apt install logrotate安装。
Ubuntu使用rsyslog作为syslog实现,其日志轮替配置位于/etc/logrotate.d/rsyslog(而非/etc/logorate.d/rsyslogs,部分文档可能存在笔误)。使用文本编辑器(如nano)打开该文件:
sudo nano /etc/logrotate.d/rsyslog
在配置文件中找到/var/log/syslog的配置块(或新增),添加以下关键参数:
/var/log/syslog {
size 100M # 当syslog文件增长至100MB时触发轮替(支持K/M/G单位)
rotate 4 # 保留最近4个轮替日志文件(如syslog.1、syslog.2.gz等)
compress # 压缩旧日志文件(节省空间,默认使用gzip)
delaycompress # 推迟一轮压缩(如syslog.1不压缩,syslog.2.gz压缩)
missingok # 若日志文件不存在,不报错并继续处理后续文件
notifempty # 若日志文件为空,不进行轮替
create 640 syslog adm # 轮替后创建新日志文件,权限为640,所有者为root,所属组为adm
postrotate # 轮替后执行的命令(rsyslog需重新打开文件句柄)
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
参数说明:
size:触发轮替的日志文件大小阈值(如100M表示100MB);rotate:保留的旧日志文件数量(超过则删除最旧的);compress/delaycompress:压缩旧日志以节省空间;missingok/notifempty:避免因日志文件缺失或为空导致的错误。-d参数模拟执行,检查是否有错误:sudo logrotate -d /etc/logrotate.d/rsyslog-d参数强制应用配置:sudo logrotate -f /etc/logrotate.d/rsysloglogrotate会自动调用postrotate脚本):sudo systemctl restart rsyslogjournalctl日志占用过多空间,可通过以下命令清理:
sudo journalctl --vacuum-time=7dsudo journalctl --vacuum-size=500M/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf,降低日志详细程度(如将*.info改为*.warning),减少日志生成量。通过以上步骤,可有效限制Ubuntu系统中syslog日志的大小,避免日志文件过度占用磁盘空间。配置完成后,logrotate会根据设定的规则自动管理日志轮替与清理。