![如何从 systemctl status 服务查看完整日志?](https://linux22.com/image/71661/%E5%A6%82%E4%BD%95%E4%BB%8E%20systemctl%20status%20%E6%9C%8D%E5%8A%A1%E6%9F%A5%E7%9C%8B%E5%AE%8C%E6%95%B4%E6%97%A5%E5%BF%97%EF%BC%9F.png)
我使用 检查服务状态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