Ubuntu日志管理实用技巧
journalctl是systemd提供的日志管理工具,可便捷查看、过滤和清理Systemd日志。常用命令包括:
sudo journalctl(支持分页查看,按q退出);sudo journalctl -u apache2(替换apache2为目标服务名,如nginx、mysql);sudo journalctl --since "2025-10-01" --until "2025-10-07"(按日期筛选);sudo journalctl -f(类似tail -f,持续显示新日志);sudo journalctl --vacuum-time=2weeks(删除2周前日志)、sudo journalctl --vacuum-size=1G(删除超过1GB的日志)。logrotate是Ubuntu默认的日志轮转工具,可防止日志文件过大占用磁盘空间。配置步骤如下:
/etc/logrotate.conf(如设置daily每日轮转、rotate 7保留7份、compress压缩旧日志);/etc/logrotate.d/目录下创建服务专属配置(如/etc/logrotate.d/apache2),内容示例:/var/log/apache2/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
}
sudo logrotate -f /etc/logrotate.conf(强制轮转,验证配置是否正确)。通过降低日志级别,可减少系统和服务产生的冗余日志,提升性能。
/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf,将日志级别从info改为warning(如*.warning;auth,authpriv.none -/var/log/syslog);avahi-daemon)允许单独设置日志级别,编辑/etc/avahi/avahi-daemon.conf,将log-level=info改为log-level=warning,重启服务生效。除journalctl外,还可通过以下方式清理旧日志:
sudo truncate -s 0 /var/log/syslog(清空syslog文件,不删除文件本身);sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(清空/var/log下所有.log文件);/etc/logrotate.conf中的maxage(保留天数)、size(文件大小)等参数设置自动清理规则。grep(搜索关键字,如grep "error" /var/log/syslog)、awk(提取字段,如awk '{print $1, $3}' /var/log/syslog')、less(分页查看,如less /var/log/syslog);日志文件包含敏感系统信息,需严格控制权限:
chmod 640 /var/log/syslog(属主root、属组adm,其他用户无写权限);chown root:adm /var/log/syslog(确保只有授权用户可访问);gpg工具加密包含敏感信息的日志文件(如gpg -c /var/log/mysql/error.log)。