journalctl
是一个用于查看和管理 systemd 日志(也称为 journal)的强大工具。这个命令通常在基于 Linux 的系统中使用,特别是那些使用 systemd 作为初始化系统(init system)的发行版。
1.命令简介
journalctl
主要用来查询、过滤和展示由 systemd-journald 服务收集的日志数据。它提供了灵活的日志检索选项,可以查看实时日志流,也可以检索历史日志记录。
2.命令的用法
基本的命令格式如下:
journalctl [选项]...
3.命令可用选项
这里列出了一些常用的 journalctl
选项:
-
无参数
- 直接运行
journalctl
将显示最近的日志条目。
- 直接运行
-
-u, --unit=UNIT
- 显示特定服务单元的日志。例如:
journalctl -u nginx.service
。
- 显示特定服务单元的日志。例如:
-
-b, --boot=
- 显示自上次启动以来的日志。如果加上一个具体的启动ID,则会显示该启动周期的日志。
-
-f, --follow
- 实时跟踪日志输出,类似于
tail -f
。
- 实时跟踪日志输出,类似于
-
--since, --until
- 根据日期时间来过滤日志。例如:
journalctl --since "2024-01-01"
。
- 根据日期时间来过滤日志。例如:
-
-p, --priority=
- 按优先级过滤日志。例如:
journalctl -p err
只显示错误级别的日志。
- 按优先级过滤日志。例如:
-
-o, --output=
- 设置输出格式。例如:
journalctl -o short-precise
。
- 设置输出格式。例如:
-
-r, --reverse
- 以逆时间顺序显示日志条目。
-
-n, --lines=
- 显示指定数量的最新日志行。例如:
journalctl -n 10
。
- 显示指定数量的最新日志行。例如:
-
--no-pager
- 不使用分页器直接输出到终端。
4.简短的案例
-
查看所有日志:
journalctl
-
查看特定服务的日志:
journalctl -u nginx.service
-
查看自特定时间点之后的所有日志:
journalctl --since "2024-08-28"
-
实时跟踪特定服务的日志:
journalctl -fu nginx.service
-
查看包含特定字符串的日志:
journalctl _PID=1234 | grep "error"
-
查看最近100行日志:
journalctl -n 100
通过上述选项和示例,可以有效地管理和分析您的系统日志,这对于故障排查和维护来说是非常有用的。