journalctl-停止关注但不退出寻呼机

journalctl-停止关注但不退出寻呼机

如果我做:

journalctl -u my-service

然后Shift-F在寻呼时进行跟踪,如何(interrupt to abort)在不退出寻呼机的情况下进行跟踪?

使用less,我通常只是^C,但如果我在 journalctl 中执行此操作,它会退出整个寻呼机。

答案1

less此时使用,但由于 的调用方式,^C 的行为有所不同journalctl。journalctl 传递给的标志less包括以下默认值:

 FRSXMK

其中,我认为“K”选项适用于此:

-K 或 --quit-on-intr 当输入中断字符(通常是 ^C)时,会导致 less 立即退出(状态为 2)。通常,中断字符会导致 less 停止其正在执行的操作并返回到其命令提示符。请注意,使用此选项会导致无法从“F”命令返回到命令提示符。

因此,在您的环境中设置 $SYSTEMD_LESS 并省略“K”选项应该解决这个问题,它在我在 Ubuntu 16.04 上的测试中不起作用:

 SYSTEMD_LESS="FRSXM"journalctl -u nginx

但是,您可以通过比较以下变体的行为来获得想要的行为,以确认 K 标志是相关的:

# ^C after Shift-F does not completely quit
journalctl -u nginx | less -FRSXM

# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK

答案2

我也刚刚遇到了这个恼人的怪癖。
设置SYSTEMD_LESS确实不起作用,因为 journalctlSIGTERM在收到 ^C 时会向寻呼机发送一个。

我的“解决方案”是使用这样的 bash 别名:

alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'

这将覆盖默认分页程序,并且在您中断跟踪时不会退出。
环境变量SYSTEMD_COLORS似乎是在之后拥有颜色并保持 less 运行的唯一方法SIGINT

这适用于我的 Debian 9 安装。

相关内容