ubuntu的日志管理journalctl

本文最后更新于:2025年11月19日 下午

在 Linux 系统中,目前主流使用的systemd管理系统,journalctl 是systemd管理和查看系统日志的主要工具,提供了许多用于处理日志的选项。以下是一些 journalctl 的常用命令。

查看日志

  1. 查看所有日志journalctl
  2. 查看特定服务日志journalctl -u [服务名],例如 journalctl -u ssh
  3. 逆序查看日志journalctl -r
  4. 查看实时日志输出journalctl -f,这将类似于传统的 tail -f 命令,实时显示最新的日志消息。
  5. 显示原始日志journalctl -o cat,这将显示原始的输入日志,不会显示journalctl添加的时间戳等信息。
  6. 显示详细的日志journalctl -o verbose,这将详细显示journalctl记录的所有字段。方便知道字段名,可以配置字段过滤。

过滤日志

  1. 按时间查看日志:
    • 查看某天的日志: journalctl --since "2022-01-01" --until "2022-01-02"
    • 查看最近一个小时的日志: journalctl --since "1 hour ago"
    • 显示10:05之后的日志: journalctl -S 10:05
    • 显示10:05之前的日志 journalctl -U 10:05
    • 查看系统本次启动的日志:journalctl -b, journalctl -b -0
    • 查看上一次启动的日志:journalctl -b -1
  2. 查看内核日志 journalctl -k
  3. grep过滤日志journalctl -g "hello"
  4. 按优先级查看日志journalctl -p [优先级],比如 journalctl -p err 将查看所有错误级别的日志。
  5. 按字段过滤日志journalctl [字段名]=[字段值],比如 journalctl _COMM=sshd 将查看所有来自 sshd 进程的日志。字段名可通过journalctl -o verbose得到
  6. 查看特定进程的日志journalctl _PID=[进程ID],例如 journalctl _PID=1 将查看 PID 为 1 的进程的所有日志。
  7. 按syslog标签过滤日志: journalctl -t ddns,查看标签为ddns的日志,该标签为SYSLOG_IDENTIFIER字段,logger生成日志时可通过logger -t ddns添加。

磁盘管理

  • 查看日志占用磁盘空间: journalctl --disk-usage

清理日志

按时间清理

1
2
3
4
5
6
7
8
# 清理3天前的日志
sudo journalctl --vacuum-time=3d

# 清理1周前的日志
sudo journalctl --vacuum-time=7d

# 清理1个月前的日志
sudo journalctl --vacuum-time=1month

按大小清理

1
2
3
4
5
# 限制日志总大小为100MB
sudo journalctl --vacuum-size=100M

# 限制日志总大小为1K
sudo journalctl --vacuum-size=1K

永久配置日志文件大小限制
编辑/etc/systemd/journald.conf

1
2
#总大小限制
SystemMaxUse=200M

配置完重启服务sudo systemctl restart systemd-journald

journalctl与rsyslogd的关系

在ubuntu上,他们二者是共存的。journalctl接收所有日志(内核和用户进程),进行自己的存储。然后也会把日志(通过syslog产生的)发送给rsyslogd,让rsyslogd根据自己的配置存储在/var/log/或是转发到其他远程服务器。

例如/var/log/auth.log里面的日志,在journalctl中也能找到。

其他

  1. 并不是所有日志都在journal中,标准调用syslog,进程的标准输出都在journal中。有一些进程会有自己的日志文件,就在journal中查不到。如/var/log/fail2ban.log等。
  2. 有些进程可能会疯狂写日志,如linux版迅雷,钉钉,微信。4G的日志,它们可能占3.5G。基本属于垃圾日志,它们可能会刷掉其他日志。journal目前并不支持配置丢弃掉某些特殊日志。需要自己找到他们的启动脚本把输出重定向到/dev/null。

ubuntu的日志管理journalctl
https://leon0625.github.io/2024/02/07/c818df9bd2ba/
作者
leon.liu
发布于
2024年2月7日
许可协议