显示服务重启后的日志日志

sdht0

自上次重新启动服务以来,是否有一种规范的方法可从journalctl获取所有日志?我要做的是重新启动服务,并自启动重新启动以来立即查看所有日志。

我想出了:

$ unit=prometheus
$ sudo systemctl restart $unit
$ since=$(systemctl show $unit | grep StateChangeTimestamp= | awk -F= '{print $2}')
$ sudo systemctl status -n0 $unit && sudo journalctl -f -u $unit -S "$since"

这可能会起作用,但是我想知道是否还有一种更具体的说法:重新启动并给我以后的所有日志。

文件火

您可以使用调用ID,它是服务单元特定运行的唯一标识符。

它是在systemd v232引入的,因此至少需要该版本的systemd才能起作用。

要获取服务当前运行的调用ID,请执行以下操作:

$ unit=prometheus
$ systemctl show -p InvocationID --value "$unit"
0e486642eb5b4caeaa5ed1c56010d5cf

然后搜索附加了该调用ID的日记帐分录:

$ journalctl INVOCATION_ID=0e486642eb5b4caeaa5ed1c56010d5cf + _SYSTEMD_INVOCATION_ID=0e486642eb5b4caeaa5ed1c56010d5cf

我发现您同时需要INVOCATION_ID和_SYSTEMD_INVOCATION_ID才能获取所有日志。后者是由systemd添加的,用于由单元本身输出的日志(例如,在该服务中运行的进程的标准输出),而前者则附加到systemd所接收的事件(例如,该单元的“正在启动”和“已启动”消息)。 )

请注意,您也不需要按单位名称进行过滤。由于调用ID是唯一的,因此按ID本身进行过滤就足以仅包含您感兴趣的服务的日志。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章