systemd-journal(一)之journalctl命令详解

news2024/11/23 0:10:32

文章目录

  • 写在前面
  • 概述
  • 描述
    • 不传递参数
    • 传递一个或多个匹配参数
    • 示例
  • 源选项用法
    • --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.servicesystemd-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= ” 匹配项。

数值优先级参数值描述示例
0EmergencyemergSystem is unusable(系统不可用)Severe Kernel BUG, systemd dumped core.This level should not be used by applications.
1AlertalertShould be corrected immediately(应立即纠正)Vital subsystem goes out of work. Data loss. kernel: BUG: unable to handle kernel paging request at ffffc90403238ffc
2CriticalcritCritical 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.
3ErrorerrError 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
4WarningwarningWarning 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
5NoticenoticeNormal 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
6InformationalinfoNormal operational messages that require no action(无需任何操作的正常信息)lvm[585]: 7 logical volume(s) in volume group “archvg” now active
7Debugdebugdebug-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查看用法。
jsonjson格式输出,可通过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 字符串,但有三个例外:

  1. 大于 4096 字节的字段编码为 null 值。(这可以通过传递--all来关闭,但请注意,这可能会分配过长的 JSON 对象。
  2. 日志记录允许在同一日志记录中使用非唯一字段。JSON 不允许对象中的非唯一字段。因此,如果遇到非唯一字段,则使用 JSON 数组作为字段值,将所有字段值列为元素。
  3. 包含不可打印或非 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

孙中茂:摸清自己的性格很重要,只要你的本事够了,在哪个地方都是都会发光的。

《程客有话说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台,也欢迎大家推荐朋友或自己来参加我们的节目,一起加油。 本期我们邀请的程…

第四百二十六回

文章目录 1. 概念介绍2. 实现方法2.1 原生方式2.1 插件方式 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何修改程序的桌面图标"相关的内容,本章回中将介绍如何处理ListView中的事件冲突.闲话休提,让我们一起Talk Flutter吧。 1. 概念介…

YOLOv9有效改进专栏汇总|未来更新卷积、主干、检测头注意力机制、特征融合方式等创新![2024/3/23]

​ 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 专栏介绍 YOLOv9作为最新的YOLO系列模型,对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

NSCaching: Simple and Efficient NegativeSampling for Knowledge Graph Embedding

摘要 知识图嵌入是数据挖掘研究中的一个基本问题,在现实世界中有着广泛的应用。它的目的是将图中的实体和关系编码到低维向量空间中,以便后续算法使用。负抽样,即从训练数据中未观察到的负三元组中抽取负三元组,是KG嵌入的重要步…

Open CASCADE学习|显示文本

目录 1、修改代码 Viewer.h: Viewer.cpp: 2、显示文本 OpenCasCade 你好啊 霜吹花落 1、修改代码 在文章《Open CASCADE学习|显示模型》基础上,增加部分代码,实现对文本显示的支持,具体如下: Viewer…

随机链表的深拷贝

目录 一、何为深拷贝? 二、题目 三、思路 1.拷贝节点插入到原节点后面 2.控制拷贝节点的random 3.脱离原链表 : 尾插的思想 四、代码 五、附加 一、何为深拷贝? 一个引用对象一般来说由两个部分组成:一个具名的Handle,也就…

cinder学习小结

1 官方文档 翻译官方文档学习 链接Cinder Administration — cinder 22.1.0.dev97 documentation (openstack.org) 1.1 镜像压缩加速 在cinder.conf配allow_compression_on_image_upload True可打开开关 compression_format xxx可设置镜像压缩格式,可为gzip 1.2 …

SPP和SPPF的比较

SPP的结构是将输入并行通过多个不同大小的MaxPool层,然后做进一步融合,能在一定程度上解决多尺度问题。 而SPPF结构则是讲输入串行通过多个5*5的MaxPool层,这里需要注意两个5*5的MaxPool层和一个9*9的MaxPool的计算结果是一样的,而…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

3、创建项目,什么是路由

一、创建项目 第一次全局安装脚手架 npm install -g vue/clivue create 项目名 二、什么是路由? 路由就是一组 key-value 的对应关系多个路由,需要经过路由器的管理 1、后端路由: 每个url地址都对应着不同的静态资源对于普通的网站。所有…

记录整合ssm项目时的报错java: Compilation failed: internal java compiler error

启动的时候报错java: Compilation failed: internal java compiler error,这说明是内部编译器错误。如下图所示: 大概率是jdk版本不兼容的问题,也有IDEA初始划分的堆内存不够的原因。 查阅了很多博客的解决方法也都是上述两种,但…

C++引用学习day2

思维导图 定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度&#…

vscode 配置c++环境——3个文件搞定!!!

前提: 在vscode中安装了c扩展 创建文件settings.json {"files.associations": {"string": "cpp","vector": "cpp","array": "cpp","atomic": "cpp","*.tcc"…

Springboot快速整合bootstrap-table使用,接口对接

这个表格加持还是不错了,自带了全局搜索,分页,数据导出,卡片视图,等,本次整合添加了数据添加弹窗和编辑数据回显弹窗,附完整页面代码,只需要拿过来替换自己实际的接口即可。 效果图 …

轻松掌握C语言中的sqrt函数,快速计算平方根的魔法秘诀

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…

ES6 字符串/数组/对象/函数扩展

文章目录 1. 模板字符串1.1 ${} 使用1.2 字符串扩展(1) ! includes() / startsWith() / endsWith()(2) repeat() 2. 数值扩展2.1 二进制 八进制写法2.2 ! Number.isFinite() / Number.isNaN()2.3 inInteger()2.4 ! 极小常量值Number.EPSILON2.5 Math.trunc()2.6 Math.sign() 3.…

力扣hot100:207. 课程表

这是一道拓扑排序问题,也可以使用DFS判断图中是否存在环。详情请见:官方的BFS算法请忽略,BFS将问题的实际意义给模糊了,不如用普通拓扑排序思想。 数据结构:图的拓扑排序与关键路径 拓扑排序: class Sol…

详解:写作和赚钱的 4 个关系!看完你一定会忍不住想开始写!

飞书文档的加密很强,也没有和自家的豆包大模型融合,所以只能通过其他方式获取文档的内容。 (1)将飞书文档转换为PDF,要用到浏览器插件: GoFullPage - Full Page Screen Capture - Microsoft Edge Addons …

ElasticSearch启动报错:Exception in thread “main“ SettingsException

Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 这个报错说明elasticsearch.yml这个配…

垃圾回收:垃圾回收器

目录 垃圾回收器 评估GC的性能指标 7种典型的垃圾回收器 Serial回收器:串行回收 ParNew回收器:并行回收 Parallel回收器:吞吐量优先 CMS回收器:低延迟 G1回收器:区域化分代式 G1回收过程1-年轻代GC G1回收过程…