ubuntu journalctl — 检索 systemd 日志

经常使用:
查看最近1000行log
sudo journalctl -f --lines=1000 -u server.$PROJECT_NAME
--no-full--full-l

若是字段内容超长则以省略号(…)截断以适应列宽。 默认显示完整的字段内容(超长的部分换行显示或者被分页工具截断)。html

老旧的 -l/--full 选项 仅用于撤销已有的 --no-full 选项,除此以外没有其余用处。linux

-a--all

完整显示全部字段内容, 即便其中包含不可打印字符或者字段内容超长。apache

-f--follow

只显示最新的日志项,而且不断显示新生成的日志项。 此选项隐含了 -n 选项。json

-e--pager-end

在分页工具内当即跳转到日志的尾部。 此选项隐含了 -n1000 以确保分页工具没必要缓存太多的日志行。 不过这个隐含的行数能够被明确设置的 -n 选项覆盖。 注意,此选项仅可用于 less(1) 分页器。缓存

-n--lines=

限制显示最新的日志行数。 --pager-end 与 --follow 隐含了此选项。 此选项的参数:若为正整数则表示最大行数; 若为 "all" 则表示不限制行数; 若不设参数则表示默认值10行。安全

--no-tail

显示全部日志行, 也就是用于撤销已有的 --lines= 选项(即便与 -f 连用)。网络

-r--reverse

反转日志行的输出顺序, 也就是最早显示最新的日志。数据结构

-o--output=

控制日志的输出格式。 可使用以下选项:less

short 

这是默认值, 其输出格式与传统的 syslog 文件的格式类似, 每条日志一行。ide

short-iso 

与 short 相似,只是将时间戳字段以 ISO 8601 格式显示。

short-precise 

与 short 相似,只是将时间戳字段的秒数精确到微秒级别。

short-monotonic 

与 short 相似,只是将时间戳字段的零值从内核启动时开始计算。

short-unix 

与 short 相似,只是将时间戳字段显示为从"UNIX时间原点"(1970-1-1 00:00:00 UTC)以来的秒数。 精确到微秒级别。

verbose 

以结构化的格式显示每条日志的全部字段。

export 

将日志序列化为二进制字节流(大部分依然是文本) 以适用于备份与网络传输(详见 Journal Export Format 文档)。

json 

将日志项按照JSON数据结构格式化, 每条日志一行(详见 Journal JSON Format 文档)。

json-pretty 

将日志项按照JSON数据结构格式化, 可是每一个字段一行, 以便于人类阅读。

json-sse 

将日志项按照JSON数据结构格式化,每条日志一行,可是用大括号包围, 以适应 Server-Sent Events 的要求。

cat 

仅显示日志的实际内容, 而不显示与此日志相关的任何元数据(包括时间戳)。

--utc

以世界统一时间(UTC)表示时间

--no-hostname

不显示来源于本机的日志消息的主机名字段。 此选项仅对 short 系列输出格式(见上文)有效。

-x--catalog

在日志的输出中增长一些解释性的短文本, 以帮助进一步说明日志的含义、 问题的解决方案、支持论坛、 开发文档、以及其余任何内容。 并不是全部日志都有这些额外的帮助文本, 详见 Message Catalog Developer Documentation 文档。

注意,若是要将日志输出用于bug报告, 请不要使用此选项。

-q--quiet

当以普通用户身份运行时, 不显示任何警告信息与提示信息。 例如:"-- Logs begin at ...", "-- Reboot --"

-m--merge

混合显示包括远程日志在内的全部可见日志。

-b [ID][±offset]--boot=[ID][±offset]

显示特定于某次启动的日志, 这至关于添加了一个 "_BOOT_ID=" 匹配条件。

若是参数为空(也就是 ID 与 ±offset 都未指定), 则表示仅显示本次启动的日志。

若是省略了 ID , 那么当 ±offset 是正数的时候, 将从日志头开始正向查找, 不然(也就是为负数或零)将从日志尾开始反响查找。 举例来讲, "-b 1"表示按时间顺序排列最先的那次启动, "-b 2"则表示在时间上第二早的那次启动; "-b -0"表示最后一次启动, "-b -1"表示在时间上第二近的那次启动, 以此类推。 若是 ±offset 也省略了, 那么至关于"-b -0", 除非本次启动不是最后一次启动(例如用 --directory 指定了另一台主机上的日志目录)。

若是指定了32字符的 ID , 那么表示以此 ID 所表明的那次启动为基准 计算偏移量(±offset), 计算方法同上。 换句话说, 省略 ID 表示以本次启动为基准 计算偏移量(±offset)。

--list-boots

列出每次启动的 序号(也就是相对于本次启动的偏移量)、32字符的ID、 第一条日志的时间戳、最后一条日志的时间戳。

-k--dmesg

仅显示内核日志。隐含了 -b 选项以及 "_TRANSPORT=kernel" 匹配项。

-t--identifier=SYSLOG_IDENTIFIER

仅显示 syslog 识别符为 SYSLOG_IDENTIFIER 的日志项。

能够屡次使用该选项以指定多个识别符。

-u--unit=UNIT|PATTERN

仅显示属于特定单元的日志。 也就是单元名称正好等于 UNIT 或者符合 PATTERN 模式的单元。 这至关于添加了一个 "_SYSTEMD_UNIT=UNIT" 匹配项(对于 UNIT 来讲), 或一组匹配项(对于 PATTERN 来讲)。

能够屡次使用此选项以添加多个并列的匹配条件(至关于用"OR"逻辑链接)。

--user-unit=

仅显示属于特定用户会话单元的日志。 至关于同时添加了 "_SYSTEMD_USER_UNIT=" 与 "_UID=" 两个匹配条件。

能够屡次使用此选项以添加多个并列的匹配条件(至关于用"OR"逻辑链接)。

-p--priority=

根据日志等级(包括等级范围)过滤输出结果。 日志等级数字与其名称之间的对应关系以下 (参见 syslog(3)): "emerg" (0), "alert" (1), "crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6), "debug" (7) 。 若设为一个单独的数字或日志等级名称, 则表示仅显示小于或等于此等级的日志 (也就是重要程度等于或高于此等级的日志)。 若使用 FROM..TO.. 设置一个范围, 则表示仅显示指定的等级范围内(含两端)的日志。 此选项至关于添加了 "PRIORITY=" 匹配条件。

-c--cursor=

从指定的游标(cursor)开始显示日志。 [提示]每条日志都有一个"__CURSOR"字段,相似于该条日志的指纹。

--after-cursor=

从指定的游标(cursor)以后开始显示日志。 若是使用了 --show-cursor 选项, 则也会显示游标自己。

--show-cursor

在最后一条日志以后显示游标, 相似下面这样,以"--"开头:

-- cursor: s=0639...

游标的具体格式是私有的(也就是没有公开的规范), 而且会变化。

-S--since=-U--until=

显示晚于指定时间(--since=)的日志、显示早于指定时间(--until=)的日志。 参数的格式相似 "2012-10-30 18:17:16" 这样。 若是省略了"时:分:秒"部分, 则至关于设为 "00:00:00" 。 若是仅省略了"秒"的部分则至关于设为 ":00" 。 若是省略了"年-月-日"部分, 则至关于设为当前日期。 除了"年-月-日 时:分:秒"格式, 参数还能够进行以下设置: (1)设为 "yesterday", "today", "tomorrow" 以表示那一天的零点(00:00:00)。 (2)设为 "now" 以表示当前时间。 (3)能够在"年-月-日 时:分:秒"前加上 "-"(前移) 或 "+"(后移) 前缀以表示相对于当前时间的偏移。 关于时间与日期的详细规范, 参见 systemd.time(7)

-F--field=

显示全部日志中某个字段的全部可能值。 [译者注]相似于SQL语句:"SELECT DISTINCT 某字段 FROM 所有日志"

-N--fields

输出全部日志字段的名称

--system--user

仅显示系统服务与内核的日志(--system)、 仅显示当前用户的日志(--user)。 若是两个选项都未指定,则显示当前用户的全部可见日志。

-M--machine=

显示来自于正在运行的、特定名称的本地容器的日志。 参数必须是一个本地容器的名称。

-D DIR--directory=DIR

仅显示来自于特定目录中的日志, 而不是默认的运行时和系统日志目录中的日志。

--file=GLOB

GLOB 是一个能够包含"?"与"*"的文件路径匹配模式。 表示仅显示来自与指定的 GLOB 模式匹配的文件中的日志, 而不是默认的运行时和系统日志目录中的日志。 能够屡次使用此选项以指定多个匹配模式(多个模式之间用"OR"逻辑链接)。

--root=ROOT

在对日志进行操做时, 将 ROOT 视为系统的根目录。 例如 --update-catalog 将会建立 ROOT/var/lib/systemd/catalog/database

--new-id128

此选项并不用于显示日志内容, 而是用于从新生成一个标识日志分类的 128-bit ID 。 此选项的目的在于 帮助开发者生成易于辨别的日志消息, 以方便调试。

--header

此选项并不用于显示日志内容, 而是用于显示日志文件内部的头信息(相似于元数据)。

--disk-usage

此选项并不用于显示日志内容, 而是用于显示全部日志文件(归档文件与活动文件)的磁盘占用总量。

--vacuum-size=--vacuum-time=--vacuum-files=

这些选项并不用于显示日志内容, 而是用于清理日志归档文件(并不清理活动的日志文件), 以释放磁盘空间。 --vacuum-size= 可用于限制归档文件的最大磁盘使用量 (可使用 "K", "M", "G", "T" 后缀); --vacuum-time= 可用于清除指定时间以前的归档 (可使用 "s", "m", "h", "days", "weeks", "months", "years" 后缀); --vacuum-files= 可用于限制日志归档文件的最大数量。 注意,--vacuum-size= 对 --disk-usage 的输出仅有间接效果, 由于 --disk-usage 输出的是归档日志与活动日志的总量。 一样,--vacuum-files= 也未必必定会减小日志文件的总数, 由于它一样仅做用于归档文件而不会删除活动的日志文件。 此三个选项能够同时使用,以同时从三个维度去限制归档文件。 若将某选项设为零,则表示取消此选项的限制。

--list-catalog [128-bit-ID...

简要列出日志分类信息, 其中包括对分类信息的简要描述。

若是明确指定了分类ID(128-bit-ID), 那么仅显示指定的分类。

--dump-catalog [128-bit-ID...

详细列出日志分类信息 (格式与 .catalog 文件相同)。

若是明确指定了分类ID(128-bit-ID), 那么仅显示指定的分类。

--update-catalog

更新日志分类索引二进制文件。 每当安装、删除、更新了分类文件,都须要执行一次此动做。

--setup-keys

此选项并不用于显示日志内容, 而是用于生成一个新的FSS(Forward Secure Sealing)密钥对。 此密钥对包含一个"sealing key"与一个"verification key"。 "sealing key"保存在本地日志目录中, 而"verification key"则必须保存在其余地方。 详见 journald.conf(5) 中的 Seal= 选项。

--force

与 --setup-keys 连用, 表示即便已经配置了FSS(Forward Secure Sealing)密钥对, 也要强制从新生成。

--interval=

与 --setup-keys 连用,指定"sealing key"的变化间隔。 较短的时间间隔会致使占用更多的CPU资源, 可是可以减小未检测的日志变化时间。 默认值是 15min

--verify

检查日志文件的内在一致性。 若是日志文件在生成时开启了FSS特性, 而且使用 --verify-key= 指定了FSS的"verification key", 那么,同时还将验证日志文件的真实性。

--verify-key=

与 --verify 选项连用, 指定FSS的"verification key"

--sync

要求日志守护进程将全部未写入磁盘的日志数据刷写到磁盘上, 而且一直阻塞到刷写操做实际完成以后才返回。 所以该命令能够保证当它返回的时候, 全部在调用此命令的时间点以前的日志, 已经所有安全的刷写到了磁盘中。

--flush

要求日志守护进程 将 /run/log/journal 中的日志数据 刷写到 /var/log/journal 中 (若是持久存储设备当前可用的话)。 此操做会一直阻塞到操做完成以后才会返回, 所以能够确保在该命令返回时, 数据转移确实已经完成。 注意,此命令仅执行一个单独的、一次性的转移动做, 若没有数据须要转移, 则此命令什么也不作, 而且也会返回一个表示操做已正确完成的返回值。

--rotate

要求日志守护进程滚动日志文件。 此命令会一直阻塞到滚动完成以后才会返回。

-h--help

显示简短的帮助信息并退出。

--version

显示简短的版本信息并退出。

--no-pager

不将程序的输出内容管道(pipe)给分页程序。

退出状态

返回值为 0 表示成功, 非零返回值表示失败代码。

环境变量

$SYSTEMD_PAGER

指定分页程序。仅在未指定 --no-pager 选项时有意义。 此变量会覆盖 $PAGER 的值。 将此变量设为空字符串或 "cat" 等价于使用 --no-pager 选项。

$SYSTEMD_LESS

用于覆盖 默认传递给 less 程序的命令行选项 ("FRSXMK")。

例子

不带任何选项与参数,表示显示所有日志

journalctl

仅指定一个匹配条件, 显示全部符合该匹配条件的日志

journalctl _SYSTEMD_UNIT=avahi-daemon.service

指定了两个不一样字段的匹配条件, 显示同时知足两个匹配条件的日志

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097

指定了同一个字段的两个不一样匹配条件, 显示知足其中任意一个条件的日志

journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

使用 "+" 链接两组匹配条件, 至关于逻辑"OR"链接

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
相关文章
相关标签/搜索