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

文章目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Navicat15安装教程

直接开始Navicat15的安装教程 下载好上面的资源,解压后得到以下文件 1. 安装 Navicat ①双击 navicat150_premium_cs_x64.exe,准备安装 Navicat 15 ②无脑一直下一步就行,到下图画面就安装成功了。 2.安装完成以后,先不要启动…

力扣--并查集1631.最小体力消耗路径

这题将图论和并查集联系起来。把数组每个位置看成图中的一个节点。 这段代码的主要思路是: 遍历地图中的每个节点,将每个节点与其相邻的下方节点和右方节点之间的边加入到边集合中(因为从上到下和从下到上他们高度绝对值一样的,…

浅谈如何自我实现一个消息队列服务器(3)—— 细节分析

文章目录 2.2 消息存储在文件时涉及到的流对象2.3 序列化、反序列化的方法2.3.1 JSON的ObjectMapper2.3.2 ObjectOutputStream 、 ObjectInputStream2.3.3 第三方库的Hessian2.3.4 protobuffer2.3.5 thrift 2.4 使用类MessageFileManager封装文件存储操作2.4.1 sendMessage()实…

【保姆级讲解Edge兼容性问题解决方法】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝 希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

【JavaScript】JavaScript 程序流程控制 ⑦ ( do-while 循环概念 | do-while 循环语法结构 )

文章目录 一、while 循环1、while 循环概念2、do-while 循环语法结构 二、do-while 循环代码示例1、打印 1-5 数字2、打印 1-10 累加和 一、while 循环 1、while 循环概念 JavaScript 中的 do-while 循环 是 while 循环的变体 , 是 一种 后测试 循环 , 该循环的 循环体 至少执行…

Windows系统安装PyTorch框架支持AMD Radeon显卡/Intel显卡

前言 PyTorch框架作为一种主流的、对新手友好的深度学习框架,应用的范围越来越广泛,但是作为一种深度学习框架,使用显卡进行加速训练是一种常见的需求,而PyTorch框架官方支持对NVIDIA卡支持更加友好,这一点从官方的安…

fastadmin学习01-windows下安装部署

下载源代码 官网 安装 解压,然后使用phpstorm打开 修改配置文件 创建数据库 -- drop database fastadmin01; create database fastadmin01;这样fastadmin就部署好了 访问主页也能看到前台页面

什么是 SD-WAN 云端部署?

SD-WAN(软件定义广域网)是一种网络架构,可以通过软件定义和控制来管理广域网连接,提高网络的灵活性、可靠性和安全性。而SD-WAN的云端部署则是将SD-WAN 解决方案部署在云端环境中,利用云计算的优势来实现网络管理和优化…

MySQL详细教程

文章目录 前言一、数据库管理1.查看已有的数据库2.创建数据库3.删除数据库4.进入数据库 二、 数据表管理1.查看当前数据库下的所有数据表2.创建数据表3.删除表4.查看表结构 三、常用数据类型1.整型tinyintintbigint 2.浮点型floatdoubledecimal 3.字符型char(m)varchar(m)textm…

错误 LNK1104 无法打开文件“mfc140.lib”

如图,编译一个别人已有的项目,我的编译报错为: 但是我所有文件夹全局搜索了一下,这个文件是存在的。但是当前项目访问不到。 更改方法:项目->属性->配置属性->VC目录->库目录 全局搜索找到mfc140.lib的…

【工具篇】总结比较几种绘画软件的优缺点

目录 一、Visio二、Processon三、draw.io四、亿图图示五、wps 写在文章开头,感谢你的支持与关注!小卓的主页 一、Visio Visio 是微软公司开发的一款流程图和图表绘制软件。我们可以用它来创建各种类型的图表,如流程图、组织结构图、网络图、平…

计算机基础--发展史

1进化史 计算工具,机械计算机,电子计算机(目前) 1.1计算工具 1算筹,算盘(这些都是计算工具,算数还是得靠大脑算 ) 2机械计算机 2.1帕斯卡计算器 2.2莱布尼茨乘法器 2.3Curta计数…

聚类分析|基于层次的聚类方法及其Python实现

聚类分析|基于层次的聚类方法及其Python实现 0. 基于层次的聚类方法1. 簇间距离度量方法1.1 最小距离1.2 最大距离1.3 平均距离1.4 中心法1.5 离差平方和 2. 基于层次的聚类算法2.1 凝聚(Agglomerative)2.3 分裂(Divisive) 3. 基于…

【蓝桥杯】tarjan算法

一.概述 Tarjan 算法是基于DFS的算法,用于求解图的连通性问题。 Tarjan 算法可以在线性时间内求出: 无向图: 割点与桥双连通分量 有向图: 强连通分量必经点与必经边 1.割点: 若从图中删除节点 x 以及所有与 x 关联的…

【Java项目】jspm九宫格日志网站

目录 背景 技术简介 系统简介 界面预览 背景 互联网的迅猛发展彻底转变了全球各类组织的管理策略。自20世纪90年代起,中国的政府机关和各类企业便开始探索利用互联网技术来处理管理信息。然而,由于当时网络覆盖不广、用户接受度不高、互联网法律法规…

一文说清:AI大模型在制造业中的应用类型

在过去的几年里,全球制造业的竞争格局正在发生重构,数字化和智能化成为推动变革的关键力量。AI 大模型作为一种通用人工智能技术,其革命性特征体现在能够生成代码、构建人机交互新模式,并与产品研发、工艺设计、生产作业、产品运营…

羊大师解析,孩子喝羊奶的好处

羊大师解析,孩子喝羊奶的好处 孩子喝羊奶有诸多好处。羊奶富含多种营养物质,包括蛋白质、脂肪、维生素和矿物质等,对孩子的生长发育和身体健康都有积极的促进作用。羊奶中的蛋白质含量丰富,且易于消化吸收。这些优质蛋白质可以为…

《海王2》观后感

前言 我原本计划电影上映之后,去电影院观看的,但时间过得飞快,一眨眼这都快4月份了,查了一下,电影院早就没有排片了,所以只能在B站看了,这里不得不吐槽一下,原来花了4块钱购买观看还…

Hudi部署

目录 前言 Hudi的介绍 一、Hudi是什么? 二、Hudi的特点功能和优势 三、Hudi的使用场景 Hudi的搭建部署 一、准备 二、搭建 1)搭建JAVA环境和Hadoop环境 2)部署zookeeper 3)部署Spark on yarn 4)部署maven环…

vue-quill-editor和vue-ueditor-wrap富文本编辑器应用

目录 一、vue-quill-editor 1.1、界面展示 1.2、代码介绍 1.2.1、安装 1.2.2、配置 1.2.3、代码应用 1.2.4、提取内容 二、vue-ueditor-wrap 2.1、界面展示 2.2、代码介绍 2.2.1、安装 2.2.2、配置 2.2.3、代码应用 一、vue-quill-editor 1.1、界面展示 文本输出…