如何从 systemctl status 服务查看完整日志?

如何从 systemctl status 服务查看完整日志?

我使用 检查服务状态systemctl status service-name

默认情况下,我只看到几行,因此我添加-n50以查看更多行。

有时,我想从头开始查看完整的日志。它可能有数千行。
现在,我检查了一下,-n10000但这看起来不是一个很好的解决方案。

是否有类似于命令的选项来检查完整的 systemd 服务日志less

答案1

只需使用journalctl命令,如下所示:

journalctl -u service-name.service

或者,仅查看当前启动的日志消息:

journalctl -u service-name.service -b

对于名为 的事物<something>.service,您实际上可以只使用<something>,如下所示:

journalctl -u service-name

但对于其他类型的单元(套接字、目标、计时器等),您需要明确。

在上面的命令中,-u标志是 的缩写--unit,并指定您感兴趣的单元的名称。 -b是 的缩写--boot,并将输出限制为仅当前启动,这样您就不会看到大量较旧的消息。请参阅Journalctl 手册页了解更多信息。

答案2

systemctl-l可以通过添加以下标志来包含其状态列表的完整输出,无需截断:

systemctl -l status service-name

-l:不要用省略号截断条目(...)

--no-pager可以添加以避免在输出是交互式终端时调用寻呼机。

答案3

用于journalctl查看系统日志

          ︙

journalctl不分页查看

要将日志发送到标准输出并避免对它们进行分页,请使用以下 --no-pager选项:

journalctl --no-pager

不建议您在未先过滤显示的日志数量的情况下执行此操作。

journalctl -u service-name.service

          ︙

显示某个时间范围内的日志

使用该--since选项在指定日期和时间之后显示日志:

journalctl --since "2018-08-30 14:10:10"

使用该--until选项显示截至指定日期和时间的日志:

journalctl --until "2018-09-02 12:05:50"

结合这些来显示两次之间的日志:

journalctl --since "2018-08-30 14:10:10" --until "2018-09-02 12:05:50"

以上内容大部分抄袭自使用journalctl查看系统日志在 Linode 文档中。那里有更多信息。

答案4

使用journalctl,将日志写入文本文件,然后从下往上读取:

journalctl -u service-name.service > file_name.txt &&\
tail file_name.txt

相关内容