文章目录
- 写在前面
- 概述
- 描述
- 不传递参数
- 传递一个或多个匹配参数
- 示例
- 源选项用法
- --system, --user
- -M, --machine=
- -m, --merge
- -D DIR, --directory=DIR
- --file=GLOB
- --root=ROOT
- --image=IMAGE
- --image-policy=policy
- --namespace=NAMESPACE
- 过滤选项用法
- -S, --since=, -U, --until=
- 举例:
- -c, --cursor=
- --after-cursor=
- --cursor-file=FILE
- -b [[ID][±offset]|all], --boot[=[ID][±offset]|all]
- 举例:
- -u, --unit=UNIT|PATTERN
- 举例:
- --user-unit=
- -t, --identifier=SYSLOG_IDENTIFIER
- -p, --priority=
- --facility=
- 常用设备解读:
- -g, --grep=
- 举例
- --case-sensitive[=BOOLEAN]
- -k, --dmesg
- 输出选项
- -o, --output=
- 时间戳
- short
- short-full
- short-iso
- short-iso-precise
- short-precise
- short-monotonic
- short-delta
- short-unix
- verbose
- export
- json-pretty
- json-sse
- json-seq
- cat
- with-unit
- --truncate-newline
- --output-fields=
- -n, --lines=
- -r, --reverse
- --show-cursor
- 举例:
- --utc
- -x, --catalog
- --no-hostname
- --no-full
- -a, --all
- -f, --follow
- --no-tail
- -q, --quiet
- 分页器控制选项(Pager Control Options)
- --no-pager
- -e, --pager-end
- 前向安全密封 (FSS) 选项(Forward Secure Sealing (FSS) Options)
- --interval=
- --verify-key=
- --force
- -N, --fields
- -F, --field=
- --disk-usage
- --vacuum-size=, --vacuum-time=, --vacuum-files=
- --verify
- --sync
- --relinquish-var
- --smart-relinquish-var
- --flush
- --rotate
- --header
- --list-catalog [128-bit-ID…]
- --dump-catalog [128-bit-ID…]
- --update-catalog
- --setup-keys
- -h, --help
- --version
- 退出状态
- 与journalctl相关的环境变量
- $SYSTEMD_LOG_LEVEL
- $SYSTEMD_LOG_COLOR
- $SYSTEMD_LOG_TIME
- $SYSTEMD_LOG_LOCATION
- $SYSTEMD_LOG_TID
- $SYSTEMD_LOG_TARGET
- $SYSTEMD_LOG_RATELIMIT_KMSG
- $SYSTEMD_PAGER
- $SYSTEMD_LESS
- $SYSTEMD_LESSCHARSET
- $SYSTEMD_PAGERSECURE
- $SYSTEMD_COLORS
- $SYSTEMD_URLIFY
- journal --help
- 参考:
写在前面
本文主要是详细介绍了systemd中的journalctl命令及各选项详细含义,主要用于linux系统的日志相关等。主要翻译自英文原文文档(develop版本,截止到文章记录时间,最新版本是systemd 255)。以及增加了一些使用示例。主要用于学习记录。后续有例子将持续补充该页面。
主要是以下页面的翻译:https://www.freedesktop.org/software/systemd/man/latest/journalctl.html#
其他相关文档请参考:
systemd-journal(二)之配置文件详解journal-remote.conf,journald.conf,journald.conf
概述
journalctl
打印systemd
日志中的日志记录
描述
journalctl
用于打印 systemd-journald.service
和 systemd-journal-remote.service
存储在日志中的日志记录
journalctl
用于查看和管理系统日志,可以深入了解系统的运行状况、故障信息和关键事件。
不传递参数
journalctl
如果在没有参数的情况下调用,它将调用并显示用户可访问的日志内容,从收集的最早记录开始,即按照时间顺序打印。
传递一个或多个匹配参数
如果传递了一个或多个匹配参数,则会相应地筛选输出。
journalctl _SYSTEMD_UNIT=avahi-daemon.service
journalctl _SYSTEMD_CGROUP=/user.slice/user-42.slice/session-c1.scope
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097
匹配项的格式为“ FIELD=VALUE ”
,例如“ _SYSTEMD_UNIT=httpd.service ”
,指的是结构化日志的组成部分。参见 systemd.journal-fields
获取已知字段的列表。
如果匹配两个不同的字段,则仅显示同时匹配两个表达式的日志记录:
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097
如果多个选项是一个字段,就显示为或的关系。
如果使用分隔符 “ + ”
,则两个表达式可以组合在一个逻辑 OR 中。下面将显示来自 PID 为 28097 的 Avahi 服务进程的所有消息,以及来自 D-Bus 服务(来自其任何进程)的所有消息:
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service
示例
显示 D-Bus 可执行文件生成的所有日志:
journalctl /usr/bin/dbus-daemon
显示上次启动的所有内核日志:
journalctl -k -b -1
显示来自系统服务的 apache.service
实时日志显示:
journalctl -f -u apache
要显示unit发出的所有字段以及有关单位的字段,应使用选项 -u
/ --unit=
。
journalctl -u name
扩展为类似于
_SYSTEMD_UNIT=name.service
+ UNIT=name.service _PID=1
+ OBJECT_SYSTEMD_UNIT=name.service _UID=0
+ COREDUMP_UNIT=name.service _UID=0 MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1
源选项用法
以下选项控制从何处读取日志记录:
–system, --user
--system, --user
显示来自系统服务和内核的消息(带有 --system )。
显示来自当前用户服务的消息(使用 --user )。
如果两者都未指定,则显示用户可以看到的所有消息。
--user
选项会影响--unit=
参数的处理方式。
请注意,--user
只有当启用了持久日志记录时,它才有效,通过 journald.conf(5) 中的Storage=
来设置。
-M, --machine=
-M, --machine=
显示来自正在运行的本地容器的消息。指定要连接的容器名称。
-m, --merge
-m, --merge
显示所有可用日志(包括远程日志)中交错的记录。
-D DIR, --directory=DIR
-D DIR, --directory=DIR
将目录路径作为参数,如果指定的话,journalctl
会在指定的日志目录DIR上运行,而不是在默认运行时或者系统日志路径上运行
–file=GLOB
--file=GLOB
将文件 glob 作为参数。如果指定,journalctl 将对指定的日志文件进行匹配 GLOB 操作,而不是对默认运行时和系统日志路径进行操作。可以多次指定,在这种情况下,文件将适当地交错。
–root=ROOT
--root=ROOT
将目录路径作为参数。如果指定,journalctl 将对指定目录下的日志目录和目录文件层次结构进行操作,而不是对根目录进行操作(例如, --update-catalog
将创建 ROOT/var/lib/systemd/catalog/database
,并将显示 或 ROOT/var/log/journal/
下的 ROOT/run/journal/
日志文件)。
–image=IMAGE
--image=IMAGE
获取磁盘镜像文件或块设备节点的路径。
如果指定,journalctl
将在指定的磁盘镜像中的文件系统上运行。
此选项类似于 --root=
,但对存储在磁盘镜像或块设备中的文件系统进行操作,从而提供了一种从磁盘镜像中提取日志数据的简单方法。磁盘镜像应仅包含一个文件系统或 GPT 分区表中的一组文件系统,遵循可发现分区规范。有关支持的磁盘镜像的更多信息,请参见 systemd-nspawn
的同名开关。
–image-policy=policy
--image-policy=policy
根据 systemd.image-policy
中将镜像策略字符串作为参数。
在通过--image=
指定的磁盘映像操作时,将强制执行该策略。如果未指定,则默认为“ * ”
策略,即使用映像中所有已识别的文件系统。
–namespace=NAMESPACE
--namespace=NAMESPACE
将日志命名空间标识符字符串作为参数。
如果未指定,则显示默认命名空间收集的数据。
如果指定,则改为显示指定命名空间的日志数据。
如果命名空间指定为 “ * ”
,则显示来自所有命名空间的数据,交错显示。
如果命名空间标识符以指定命名空间中的“ + ”
为前缀,并且显示默认命名空间,则交错,但不显示其他命名空间。有关日志命名空间的详细信息,请参见 systemd-journald.service
过滤选项用法
以下选项控制如何筛选日志记录:
-S, --since=, -U, --until=
-S, --since=, -U, --until=
-S
为从某个时间开始,-U
为截止到某个时间。
时间格式为标准的年月日时分秒(YYYY-MM-DD HH:MM:SS)
:“2023-05-27 18:00:00”
。
开始分别显示指定日期或晚于指定日期或指定日期的记录。
如果不指定,则假定为从"00:00:00"
开始,同时,还支持使用字符串的模式,比如"yesterday"
、"today"
、"tomorrow"
分别表示昨天、今天、明天(当前时间的后一天),详细用法可通过man systemd.time
查阅。
日期规格应为“ 2012-10-30 18:17:16 ”格式。
如果省略时间部分,则假定为“ 00:00:00 ”。
如果仅省略秒部分,则假定“ :00 ”。
如果省略日期部分,则假定为当前日期。
或者,字符串 “ yesterday ”、“”、“ today tomorrow ” 被理解,它们分别指当天前一天、当天或当天后一天的 00:00:00。
now “是指当前时间。
最后,可以指定相对时间,以“ - ”
或“ + ”
为前缀,分别指当前时间之前或之后的时间。 有关完整的时间和日期规范,请参见 systemd.time(7)。请注意, --output=short-full
打印的时间戳完全遵循此格式。
举例:
显示从昨天到现在的日志:
journalctl -S "yesterday"
显示指定时间点到现在的日志:
journalctl -S "2024-03-25 18:00:00"
指定时间范围内的日志,比如查找从3月25到昨天的sshd服务日志:
journalctl -S "2023-05-21 18:00:00" -U yesterday -u sshd # -u 后面接服务名
查找2023年1月份的prometheus服务的日志:
journalctl -u prometheus -S "2023-01-01 00:00:00" -U "2023-01-31 23:59:59"
-c, --cursor=
-c, --cursor=
开始显示传递的光标指定的日志中位置的记录。
–after-cursor=
--after-cursor=
开始显示日志中传递的光标指定位置之后的记录。使用该 --show-cursor
选项时显示光标。
–cursor-file=FILE
--cursor-file=FILE
如果 FILE 存在并包含游标,则开始显示此位置之后的记录。否则,根据其他给定选项显示记录。最后,将最后一个记录的光标写入 FILE 。使用此选项可通过按顺序调用 journalctl 来持续读取日志。
-b [[ID][±offset]|all], --boot[=[ID][±offset]|all]
-b [[ID][±offset]|all], --boot[=[ID][±offset]|all]
显示来自特定启动项的消息。这将添加 “ _BOOT_ID= ”
的匹配项指定引导 ID。
该参数可能为空,在这种情况下,将显示当前启动的日志。
如果省略引导 ID,则正 offset 数将从日志的开头开始查找引导,等于或小于零 offset 的将从日志的末尾开始查找引导。
因此, 1 表示按时间顺序在日志中找到的第一个启动,
2 第二个启动,依此类推;
while -0 是上次启动,
-1 上次启动之前的启动,依此类推。
空 offset 等同于指定 -0 ,除非当前引导不是最后一次引导(例如,因为 --directory 指定了查看来自另一台计算机的日志)。
如果指定了 32 个字符 ID ,则可以选择后跟 offset
标识相对于 boot 给出的引导 ID 。负值表示较早启动,正值表示较晚启动。如果 offset
未指定,则假定值为零,并显示 当前指定的 ID 的引导日志。
特殊参数 all
可用于否定先前使用的-b
效果。(表示显示所有boot ID的日志记录)
举例:
-0
或者为空表示本次系统的日志:
journalctl -b -0 # 显示本次系统启动时的日志
-1
表示上一次的系统启动的日志:
journalctl -b -1
-2
就是上两次,顺序依次类推,那么同理,指定-b
后,可以查找特定服务在上次启动后产生的日志,比如显示prometheus服务在上次系统启动后产生的日志可以是:
journalctl -b -1 -u prometheus
--list-boots
可显示所有boot id列表:
journalctl --list-boots
-u, --unit=UNIT|PATTERN
-u, --unit=UNIT|PATTERN
显示指定 systemd
单元 UNIT
(如服务单元)或与 PATTERN
匹配的任何单元的消息。如果指定了模式,则会在日志中找到的单位名称列表与指定的模式进行比较,并使用所有匹配的模式。对于每个单元名称,都会为来自单元的消息 (“ _SYSTEMD_UNIT=UNIT ”)
添加匹配项,并为来自 systemd
的消息和有关指定单元的核心转储的消息添加其他匹配项。还为 “ _SYSTEMD_SLICE=UNIT ”
添加了一个匹配项,这样如果提供的 UNIT
是一个 systemd.slice(5)
单元,则将显示该切片子级的所有日志。
使用 --user
,所有--unit=
参数都将转换为匹配用户消息,就像使用--user-unit=
一样。
--user --unit=
等效于--user-unit=
。
可以多次指定此参数。即可以同时指定多个unit服务单元。
举例:
查找sshd服务的日志:
journalctl -u sshd
查询grafana服务的日志,并指定时间范围为今天到现在:
journalctl -u grafana --since "yesterday"
–user-unit=
--user-unit=
显示指定用户会话单元的消息。
这将为来自设备的消息(“ _SYSTEMD_USER_UNIT= ”和 “ _UID= ”)
添加匹配项,并为来自会话 systemd
的消息添加匹配项,以及有关指定单元的核心转储的消息的其他匹配项。还为 “ _SYSTEMD_USER_SLICE=UNIT ”
添加了一个匹配项,这样如果提供的 UNIT 是一个 systemd.slice(5)
单元, 则将显示该单元子级的所有日志。
可以多次指定此参数。即可以同时指定多个用户会话的unit服务单元。
-t, --identifier=SYSLOG_IDENTIFIER
-t, --identifier=SYSLOG_IDENTIFIER
显示指定 syslog 标识符 SYSLOG_IDENTIFIER 的消息。
可以多次指定此参数。
-p, --priority=
-p, --priority=
按消息优先级或优先级范围筛选输出。采用单个数字或文本日志级别(即介于 0/“ emerg ” 和 7/“ debug ” 之间),或采用 FROM. 形式的数字/文本日志级别范围。
日志级别是 syslog(3) 中记录的常用 syslog 日志级别,
“ emerg ” (0)、“ alert ” (1)、“ crit ” (2)、“ err ” (3)、“ warning ” (4)、“ notice ” (5)、“ info ” (6)、“ debug ” (7)。
如果指定了单个日志级别,则会显示具有此日志级别和更低(因此更重要)日志级别的所有消息。
如果指定了范围,则会显示该范围内的所有消息,包括范围的开始值和结束值。这将为指定的优先级添加 “ PRIORITY= ” 匹配项。
数值 | 优先级 | 参数值 | 描述 | 示例 |
---|---|---|---|---|
0 | Emergency | emerg | System is unusable(系统不可用) | Severe Kernel BUG, systemd dumped core.This level should not be used by applications. |
1 | Alert | alert | Should be corrected immediately(应立即纠正) | Vital subsystem goes out of work. Data loss. kernel: BUG: unable to handle kernel paging request at ffffc90403238ffc |
2 | Critical | crit | Critical conditions(危机状态) | Crashes, coredumps. Like familiar flash: systemd-coredump[25319]: Process 25310 (plugin-containe) of user 1000 dumped core Failure in the system primary application, like X11. |
3 | Error | err | Error conditions(错误状态) | Not fatal error reported: kernel: usb 1-3: 3:1: cannot get freq at ep 0x84, systemd[1]: Failed unmounting /var., libvirtd[1720]: internal error: Failed to initialize a valid firewall backend |
4 | Warning | warning | Warning conditions(警告状态) | A non-root file system has only 1GB free. org.freedesktop. Notifications[1860]: (process:5999): Gtk-WARNING **: Locale not supported by C library. Using the fallback ‘C’ locale |
5 | Notice | notice | Normal but significant condition(正常但值得注意的情况) | systemd[1]: var.mount: Directory /var to mount over is not empty, mounting anyway. gcr-prompter[4997]: Gtk: GtkDialog mapped without a transient parent. This is discouraged |
6 | Informational | info | Normal operational messages that require no action(无需任何操作的正常信息) | lvm[585]: 7 logical volume(s) in volume group “archvg” now active |
7 | Debug | debug | debug-level messages(debug调试级别) | kdeinit51900: powerdevil: Scheduling inhibition from “:1.14” “firefox” with cookie 13 and reason “screen” |
–facility=
--facility=
按 syslog
工具过滤输出。采用以逗号分隔的数字或设备名称列表。这些名称是 syslog(3) 中记录的常用syslog
工具。 --facility=help
可用于显示已知设备名称和出口的列表。
这里的设备是指生成日志消息的系统组件或服务。
通过journalctl --facility=help
可以看到当前有哪些设备。
常用设备解读:
● kernel:内核产生的日志消息。
● user:与用户操作和登录相关的日志消息。
● mail:与邮件系统相关的日志消息。
● auth:与身份验证和授权相关的日志消息。
● syslog:由 syslog 守护程序生成的日志消息。
● lpr:与打印系统相关的日志消息。
● news:与新闻服务器相关的日志消息。
● uucp:与 UUCP(Unix to Unix Copy)系统相关的日志消息。
● cron:与定时任务(cron)相关的日志消息。
● authpriv:与身份验证和授权的私有信息相关的日志消息。
● ftp:与文件传输协议(FTP)服务器相关的日志消息。
● ntp:与网络时间协议(NTP)服务器相关的日志消息。
-g, --grep=
-g, --grep=
筛选字段与指定正则表达式匹配的MESSAGE=
记录的输出。使用与 PERL
兼容的正则表达式,参见 pcre2pattern(3) 了解语法的详细说明。
如果模式全部为小写,则匹配不区分大小写。如果为大写或者大小写混合则匹配区分大小写。这可以用选项 --case-sensitive 覆盖,见下文。
当与 --lines=
(不以“ + ”
为前缀)一起使用时, --reverse
是隐含的。
举例:
--grep "abc"
,是不区分大小写的;--grep "Abc"
,区分大小写,只过滤匹配Abc的日志;--grep "Abc" --case-sensitive=false
,仍然不区分大小写。
举例
过滤sshd服务错误用户名密码的日志:
journalctl -u sshd --grep 'Failed password'
过滤优先级为0-3
并且包含关键词"invalid"
、"timed out"
、"not"
的日志:
journalctl -b -p 0..3 -g "invalid|timed out|not"
滤prometheus服务的master节点的错误日志:
journalctl -u prometheus.service --grep '(?i)Web master node.*error'
–case-sensitive[=BOOLEAN]
--case-sensitive[=BOOLEAN]
使模式匹配区分大小写或不区分大小写。
true为区分,false为不区分
-k, --dmesg
-k, --dmesg
仅显示内核消息。这意味着 -b 并添加了匹配“ _TRANSPORT=kernel ”
输出选项
以下选项控制日志记录的打印方式:
-o, --output=
-o, --output=
控制显示的日志的格式。采用以下选项之一:
格式 | 含义 |
---|---|
short | 默认,产生的输出与传统的syslog文件的格式基本相同,每条日志显示一行。 |
short-full | 和short非常相似,但显示的是–since=和–until=选项接受的格式的时间戳,与短输出模式下显示的时间戳信息不同,该模式在输出中包括工作日、年份和时区信息。 |
short-iso | 和short非常相似,但显示的是ISO 8601标准的时间戳(YYYY-MM-DDThh:mm:ss)。 |
short-iso-precise | 如同short-iso,但包括完整的微秒级精度。 |
short-monotonic | 单调递增时间,时间格式为相对时间。 |
short-delta | 与short-monotonic一样,但包括与前一条的时间差,不可靠的时间差会用 "*"来标记。 |
short-unix | 显示的是自1970年1月1日UTC以来的秒数,即UNIX时间戳,精度为微秒。 |
verbose | 显示所有字段的完整结构的记录项目。 |
export | 将日志序列化为适合备份和网络传输的二进制(但主要是基于文本的)流。要将二进制流导入到 journald格式使用man systemd-journal-remote查看用法。 |
json | json格式输出,可通过man Journal JSON Format查看用法。 |
json-pretty | 将记录格式化为JSON数据结构,但将其格式化为多行,以便使其更易读。 |
json-sse | 将记录格式化为JSON数据结构,但将其包装成适合服务器发送事件的格式。 |
json-seq | 将记录格式化为JSON数据结构,但前缀为ASCII记录分隔符(0x1E),后缀为ASCII换行符(0x0A),符合"application/json-seq"。 |
cat | 生成一个非常简洁的输出,只显示每个日志记录的实际信息,没有元数据,甚至没有时间戳。如果与–output-fields选项结合使用,将为每条日志记录输出指定的字段。 |
with-unit | 与short-full类似,但在单元和用户单元名称前加上前缀,而不是传统的syslog标识符。在使用模板化实例时很有用,因为它将在单元名称中包括参数名称。 |
时间戳
short
是默认值,并生成与经典 syslog 文件的格式基本相同的输出,每个日志记录显示一行。
short-full
和short非常相似,但和以 --until= 选项和 --since=一样,按照格式显示时间戳。与输出模式中 short 显示的时间戳信息不同,此模式在输出中包括工作日、年份和时区信息,并且与区域设置无关。
short-iso
按照 ISO 8601 的 RFC 3339 配置显示时间戳
short-iso-precise
和short-iso一样,但包括全微秒精度
short-precise
和short-iso-precise一样,以全微秒精度显示经典的 syslog 时间戳
short-monotonic
显示的是单调时间戳,而不是挂钟时间戳。
short-delta
对比于short-monotonic 差不多,但包括与上一个记录的时差。也许不可靠的时差以“ * ”为标志。
short-unix
但显示自 1970 年 1 月 1 日 UTC 以来经过的秒数,而不是挂钟时间戳(“UNIX 时间”)。时间以微秒级精度显示。
verbose
显示包含所有字段的完整结构化记录项
export
将日志序列化为适合备份和网络传输的二进制(但主要是基于文本的)流(有关详细信息,请参阅日志导出格式)。要将二进制流导入回原生 journald
格式,请使用 systemd-journal-remote(8) json
将记录格式化为 JSON 对象,用换行符分隔(有关详细信息,请参阅日志 JSON 格式)。
字段值通常编码为 JSON 字符串,但有三个例外:
- 大于 4096 字节的字段编码为 null 值。(这可以通过传递
--all
来关闭,但请注意,这可能会分配过长的 JSON 对象。- 日志记录允许在同一日志记录中使用非唯一字段。JSON 不允许对象中的非唯一字段。因此,如果遇到非唯一字段,则使用 JSON 数组作为字段值,将所有字段值列为元素。
- 包含不可打印或非 UTF8 字节的字段被编码为包含原始字节的数组,这些原始字节单独格式化为无符号数字。 请注意,此编码是可逆的(大小限制除外)。
json-pretty
将记录格式化为 JSON 数据结构,但将它们格式化为多行,以使其更易于人类阅读。
json-sse
将记录格式化为 JSON 数据结构,但将它们包装在适合服务器发送事件的格式中。
json-seq
根据 JavaScript 对象表示法 (JSON) 文本序列 (“ application/json-seq ”),将记录格式化为 JSON 数据结构,但以 ASCII 记录分隔符 (0x1E) 为前缀,并以 ASCII 换行符 (0x0A) 为后缀。
cat
生成一个非常简洁的输出,只显示每个日志记录的实际消息,没有元数据,甚至没有时间戳。如果与该 --output-fields=
选项结合使用,则将输出每个日志记录的列出字段,而不是消息。
with-unit
与 short-full
类似,但以设备和用户设备名称为前缀,而不是传统的 syslog 标识符。在使用模板化实例时很有用,因为它将在单元名称中包含参数。
–truncate-newline
--truncate-newline
在输出的第一个换行符处截断每条日志消息,以便仅显示每条消息的第一行。
–output-fields=
--output-fields=
输出中应包含的字段的逗号分隔列表。这仅对输出模式有效,这些模式通常显示所有字段( verbose 、 export 、json 、 json-pretty 和 json-sse 、json-seq ),以及 cat 。对于前者,始终打印“ __CURSOR ”、“”、“ __REALTIME_TIMESTAMP ” __MONOTONIC_TIMESTAMP “和” _BOOT_ID “字段。
-n, --lines=
-n, --lines=
显示最近的日志事件并限制显示的事件数。参数是正整数或 “ all ” 以禁用限制。此外,如果数字以“ + ”为前缀,则改用最早的日志事件。如果未给出任何参数,则默认值为 10。
-r, --reverse
-r, --reverse
反向输出,以便首先显示最新的记录。(因为journalctl默认显示是从最早到最晚显示)。
–show-cursor
--show-cursor
光标显示在两个破折号后的最后一个记录之后
-- cursor: s=0639…
光标的格式是私有的,可能会更改。
举例:
显示sshd服务最近10行日志,并输出最后一行的游标位置:
journalctl -u sshd -n --show-cursor
–utc
--utc
以协调世界时 (UTC) 表示时间。
-x, --catalog
-x, --catalog
使用消息目录中的解释文本扩充日志记录。
这将在可用的输出中添加解释性帮助文本以记录消息。
这些简短的帮助文本将解释错误或日志事件的上下文、可能的解决方案,以及指向支持论坛、开发人员文档和任何其他相关手册的指针。请注意,帮助文本并非适用于所有消息,而仅适用于选定的消息。有关消息目录的详细信息,请参阅消息目录开发人员文档。
注意:将 journalctl 输出附加到 bug 报告时,请不要使用 -x .
–no-hostname
--no-hostname
不要显示源自本地主机的日志消息的主机名字段。此开关仅对输出模式 short 系列有影响(见上文)。
–no-full
--no-full
添加该选项的话,除了在可见列内的内容,其他超出的字段内容允许被pager分页器
截断。默认显示是显示完整的字段。
-a, --all
-a, --all
完整显示所有字段,即使它们包含不可打印的字符或很长。默认情况下,具有不可打印字符的字段缩写为“blob data”。(请注意,pager(分页器)可能会再次转义不可打印的字符。
-f, --follow
-f, --follow
仅显示最新的日志,并在将新日志追加到日志时连续打印新日志。用于实时追踪日志。
–no-tail
--no-tail
显示所有存储的输出行,即使在follow模式下也是如此。撤消 --lines=
的效果。
-q, --quiet
-q, --quiet
禁止显示所有信息性消息(比如"-- Journal begins at …", "-- Reboot --"
)、任何关于以普通用户身份运行时无法访问的系统日志的警告消息。
分页器控制选项(Pager Control Options)
支持以下选项控制页面:
–no-pager
--no-pager
不要通过管道将输出输入到分页器。
-e, --pager-end
-e, --pager-end
立即跳转到隐含pager tool
内日志的末尾。这意味着 -n1000
保证pager
不会缓冲无限制大小的日志。这可能会被带有其他数值的显式-n
覆盖,同时 -n all
将禁用此上限。请注意,此选项仅支持 less(1) pager
。
前向安全密封 (FSS) 选项(Forward Secure Sealing (FSS) Options)
以下选项可以与下面描述 --setup-keys
的命令一起使用:
–interval=
--interval=
指定使用 生成 --setup-keys FSS
密钥对时密封密钥的更改间隔。较短的间隔会增加 CPU 消耗,但会缩短无法检测到的日志更改的时间范围。默认值为 15 分钟。
–verify-key=
--verify-key=
指定用于 --verify
操作的 FSS 验证密钥。
–force
--force
--setup-keys
如果已通过并且已配置正向安全密封 (FSS),请重新创建 FSS 密钥。
命令
可以理解以下命令。如果未指定,则默认显示日志记录。
-N, --fields
-N, --fields
打印日志所有记录中当前使用的所有字段名称。
-F, --field=
-F, --field=
打印指定字段在日志的所有记录中可以采用的所有可能的数据值。
即打印指定字段在所有日志中所用到的所有值。
–disk-usage
--disk-usage
显示所有日志文件的当前磁盘使用情况。这将显示所有存档和活动日志文件的磁盘使用量总和。
–vacuum-size=, --vacuum-time=, --vacuum-files=
--vacuum-size=, --vacuum-time=, --vacuum-files=
--vacuum-size=
删除最早的存档日志文件,直到它们使用的磁盘空间低于指定大小。接受通常的 “ K ”、“M ”、“ G ” 和 “ T ” 后缀(以 1024 为基数)。
--vacuum-time=
删除早于指定时间跨度的存档日志文件。接受通常的 “ s ” (默认值)、“ m ”、“ h ”、“ days ”、“ weeks months ”和 “ years ” 后缀,详见 systemd.time(7)。
--vacuum-files=
仅保留指定数量的单独日志文件。
请注意,运行
--vacuum-size=
仅对--disk-usage
所示的输出产生间接影响,因为后者包括活动日志文件,而清空操作仅对存档的日志文件进行操作。同样,
--vacuum-files=
实际上可能不会将日志文件的数量减少到指定数量以下,因为它不会删除活动日志文件。
--vacuum-size=
, --vacuum-time=
, --vacuum-files=
可以在单个调用中组合,以对存档的日志文件强制执行大小、时间和文件数量限制的任意组合。将这三个参数中的任何一个指定为零等同于不强制执行特定限制,因此是多余的。
这三个开关也可以组合 --rotate
成一个命令。如果是这样,则首先轮换所有活动文件,然后立即执行请求的清空操作。轮换的效果是,所有当前活动的文件都被存档(并且可能会打开新的空日志文件作为替换文件),因此清空操作具有最大的效果,因为它可以考虑到目前为止写入的所有日志数据。
–verify
--verify
检查日志文件的内部一致性。如果文件是在启用 FSS 的情况下生成的,并且已指定--verify-key= FSS
验证密钥,则验证日志文件的真实性。
此参数会对系统日志文件进行检查,并报告任何可能的损坏或错误。它会检查日志文件的完整性、有效性以及与相关索引文件的一致性:
–sync
--sync
要求日志守护程序将所有尚未写入的日志数据写入后备文件系统并同步所有日志。在同步操作完成之前,此调用不会返回。此命令保证在其调用之前写入的任何日志消息在返回时安全地存储在磁盘上。
–relinquish-var
--relinquish-var
要求日志守护程序进行反向操作 --flush
:如果请求,守护程序将进一步写入 /run/log/journal/
日志数据并停止写入 /var/log/journal/
。随后的--flush
调用会导致日志输出切换回/var/log/journal/
,见上文。
–smart-relinquish-var
--smart-relinquish-var
与 --relinquish-var
类似,但如果根文件系统和 /var/log/journal/
驻留在同一个挂载点上,则不执行任何操作。此操作在系统关闭期间使用,以使日志守护程序/var/log/journal/
停止将数据写入,以防该目录位于需要卸载的挂载点上。
–flush
--flush
如果启用了持久性存储,则要求日志守护程序将存储在 /run/log/journal/
中的任何日志数据刷新到 /var/log/journal/
中。在操作完成之前,此调用不会返回。
请注意,此调用是幂等的:数据仅在系统运行时从
/run/log/journal/
到/var/log/journal/
刷新一次(请查看下文的--relinquish-var
),如果已经发生,此命令将干净地退出,而不执行任何操作。此命令有效地保证所有数据在返回时都刷新到/var/log/journal/
–rotate
--rotate
要求日志守护程序轮换日志文件。在轮换操作完成之前,此调用不会返回。日志文件轮换的效果是,所有当前活动的日志文件都标记为已存档并重命名,以便将来永远不会写入它们。然后,将在其位置创建新的(空)日志文件。此操作可以与 --vacuum-size=
, --vacuum-time=
, --vacuum-file=
组合成一个命令,见上文。
–header
--header
不要显示日志内容,而是显示所访问日志字段的内部标题信息。
此选项在尝试识别无序日志记录时特别有用,例如,当计算机以错误的系统时间启动时,就会发生这种情况。
–list-catalog [128-bit-ID…]
--list-catalog [128-bit-ID…]
将消息目录的内容列为包含消息 ID 及其简短描述字符串的表。
如果指定了任何 128-bit-ID s,则仅显示这些记录。
将日志目录的消息ID以表格形式列出来,并加上其简短的描述字符串:
每个目录都具有一个唯一的标识符和一个描述,用于识别和描述该目录的用途。
journalctl --list-catalog
–dump-catalog [128-bit-ID…]
--dump-catalog [128-bit-ID…]
显示消息目录的内容,记录由两个破折号和 ID 组成的线分隔(格式与 .catalog 文件
相同)。
如果指定了任何 128-bit-ID s,则仅显示这些记录。
显示消息目录的内容,每个记录由两个破折号和ID组成的行隔开(格式与.catalog文件
相同)。
–update-catalog
--update-catalog
更新消息目录索引。每次安装、删除或更新目录文件时都需要执行此命令以重建二进制目录索引。
–setup-keys
--setup-keys
为正向安全密封 (FSS) 生成新的密钥对,而不是显示日志内容。这将生成一个密封密钥和一个验证密钥。密封密钥存储在日志数据目录中,并应保留在主机上。验证密钥应存储在外部。请参考 journald.conf(5) 中的 Seal= 选项,获取有关前向安全密封的信息,以及指向一篇详细介绍其所基于的加密理论的学术论文的链接。
-h, --help
-h, --help
打印简短的帮助文本并退出。
–version
--version
打印一个简短的版本字符串并退出。
退出状态
成功后,返回 0;否则,将返回非零故障代码。
与journalctl相关的环境变量
$SYSTEMD_LOG_LEVEL
发出的消息的最大日志级别(日志级别较高的消息,即不太重要的消息,将被抑制)。(按重要性递减顺序) emerg 、 alert 、 crit 、 err warning notice info debug 或 0 范围内的整数之一…
$SYSTEMD_LOG_COLOR
布尔值。如果为 true,则写入 tty 的消息将根据优先级进行着色。
此设置仅在消息直接写入终端时才有用,因为 journalctl(1) 和其他显示日志的工具会根据日志级别自行为消息着色。
$SYSTEMD_LOG_TIME
布尔值。如果为 true,则控制台日志消息将以时间戳为前缀。
这个设置只在消息直接写入终端或文件时才有用, 因为 journalctl(1) 和其他显示日志的工具会根据记录元数据自行附加时间戳。
$SYSTEMD_LOG_LOCATION
布尔值。如果为 true,则消息将在消息源自的源代码中以文件名和行号为前缀。
请注意,日志位置通常作为元数据附加到日志记录。然而,在调试程序时,将其直接包含在消息文本中会很方便。
$SYSTEMD_LOG_TID
布尔值。如果为 true,则消息将以当前线程 数字ID (TID) 为前缀。
请注意,无论如何,此信息都会作为元数据附加到日志记录中。然而,在调试程序时,将其直接包含在消息文本中会很方便。
$SYSTEMD_LOG_TARGET
日志消息的目标。是下列选项的其中之一
- console (log to the attached tty)
- console-prefixed (log to the attached tty but with prefix coding the log level and “facility”, see syslog(3)
- kmsg (log to the kernel circular log buffer)
- journal (log to the journal), (log to the journal, journal-or-kmsg if available, and to kmsg other )
- auto (determine the appropriate log target, the default), null(disable log output)
$SYSTEMD_LOG_RATELIMIT_KMSG
是否对 kmsg 进行速率限制。采用布尔值。默认为“ true ”。如果禁用,systemd 将不会对写入 kmsg 的消息进行速率限制。
$SYSTEMD_PAGER
如果没有设置 --no-pager
;覆盖 $PAGER。
如果 $SYSTEMD_PAGER
和$PAGER
均未设置,则会依次尝试一组众所周知的分页器实现,包括 less(1) 和 more(1),直到找到一个。如果没有发现pager实现,则不会调用pager。将此环境变量设置为空字符串或值设置为“cat”相当于传递 --no-pager
。
注意:如果 $SYSTEMD_PAGERSECURE
未设置, $SYSTEMD_PAGER
(以及 $PAGER
)将被静默忽略。
$SYSTEMD_LESS
覆盖传递给 less 的选项(默认为 “ FRSXMK ”)
$SYSTEMD_LESSCHARSET
覆盖传递给 less 的字符集(默认情况下为 “ utf-8 ”,如果调用终端被确定为 UTF-8 兼容)。
$SYSTEMD_PAGERSECURE
采用布尔参数。如果为 true,则启用pager 的“安全”模式;如果为 false,则禁用。如果 $SYSTEMD_PAGERSECURE
根本没有设置,那么当有效的 UID 与登录会话的所有者不同时,则启用安全模式,参见 geteuid(2) 和 sd_pid_get_owner_uid(3)。在安全模式下, LESSSECURE=1 将在调用pager 时设置,pager 应禁用打开或创建新文件或启动新子进程的命令。如果 $SYSTEMD_PAGERSECURE 完全未设置,则不会使用未实现安全模式的pager 。(目前只有 less(1) 实现了安全模式。
注意: 当使用提升的权限调用命令时, 例如在 sudo(8) 或 pkexec(1) 下,
必须注意确保不启用意外的交互功能。如上所述,pager的“安全”模式可能会自动启用。设置 SYSTEMD_PAGERSECURE=0; 或不将其从继承的环境中删除允许用户调用任意命令。
请注意,如果要遵循 $SYSTEMD_PAGER or $PAGER 变量, $SYSTEMD_PAGERSECURE 也必须设置。--no-pager
完全禁用pager可能是合理的。
$SYSTEMD_COLORS
采用布尔参数。如果为 true,systemd 和相关实用程序将在其输出中使用颜色,否则输出将是单色的。此外,该变量可以采用以下特殊值之一:“ 16 ”, “ 256 ” 将颜色的使用分别限制为以 16 或 256 种 ANSI 为基数的颜色。可以指定此选项以覆盖基于控制台所连接内容 $TERM 的自动决策。
$SYSTEMD_URLIFY
该值必须是布尔值。控制是否应在支持此功能的终端仿真器的输出中生成可单击链接。可以指定此项以覆盖 systemd 基于 $TERM 和其他条件做出的决策。
journal --help
journal --help
参考:
可以详细阅读以下文章:
journalctl的用法(英文手册原版链接):
https://www.freedesktop.org/software/systemd/man/latest/journalctl.html
可以从英文手册获取systemd最新使用方法。
journalctl命令相关选项示例详解:
https://cloud.tencent.com/developer/article/2292299
https://cloud.tencent.com/developer/article/2295875