您如何使用systemd的journalctl模式


21

我正在尝试使用journalctl的模式匹配SYSLOG_IDENTIFIERS。例如,我有大量标记为的消息sshd

$ journalctl -t sshd | wc -l
987

但是如果我尝试使用模式匹配来找到它们:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

journalctl手册页说模式应该可以工作,但是我找不到关于在systemd中如何使用/定义模式的其他信息。

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

我正在运行ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN

5
根据关于IRC的讨论,看来这是一个bug(或文档问题)。已提交错误。
Mark Grimes 2015年

1
实时尝试此操作:journalctl -f | grep sshd
nexoma

如果适合,您实际上可以添加多个-t <identifier>。
sivann

Answers:


15

这是一个文档错误,当man页面中的错字更新时已关闭。

错误报告导致代码中的以下注释

我们实际上不接受模式,因此不要主张。

解决方法是,您可以按照grep问题注释中的建议使用。像这样:

journalctl | grep sshd

0

原始问题标题为“如何使用systemd的journalctl模式 ”。这指向了称为“ MATCHES”的journalctl的非常特定的功能,而不是通用的正则表达式过滤。

“ MATCHES”功能以及所有其他功能均在其友好的手册页中进行了详细介绍,该手册页的开头部分指出:

如果传递了一个或多个匹配参数,则会对输出进行相应的过滤。

“匹配”功能旨在根据许多可能的过滤器过滤掉日志条目。

对于原始问题中的情况,这就是我的方法(我也运行ArchLinux)。

首先,您需要知道您感兴趣的服务名称。我通常这样做:

systemctl | grep sshd

我得到这个:

sshd.service       loaded active running   OpenSSH Daemon

然后,您可以要求journalctl按“系统单位名称”进行过滤,如下所示:

journalctl _SYSTEMD_UNIT=sshd.service

称为“匹配过滤”。就是这样。

如果原始问题写成意思是“ 如何应用于grepjournalctl输出”,那么您可以将grep“迄今为止”存储的日志应用于

journalctl | grep ssh

或使用以下命令查看当前传入的日志条目

journalctl -f | grep ssh

并按CTRL-C停止流。当然,您可以使用更精细的常规模式或多个grep命令来使用更复杂的管道。


感谢您的答复,但_SYTEMD_UNIT不接受模式。如我的评论和@Tim的回答中所述,这是文档中的错误。
Mark Grimes

@MarkGrimes,至少对我(系统239)有效。在写下之前,我总是先测试一下我说的内容。它按记录工作。
EnzoR

问题是例如使用模式ssh*。journalctl文档指出,这是有可能一次完成的。该文档不正确,并已更新。
马克·格里姆斯

@MarkGrimes问题是关于systemd的journalctl模式,而不是任何字符模式。请查看我更新的答案。它完全按照记录在ArchLinux下工作。
EnzoR

-2

您可以在运行时定义单位文件journalctl

journalctl -f -u sshd.service

我只会显示 sshd


这个答案没有解决这个问题。用户要求在过滤器中使用模式。
Merlijn Sebrechts
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.