如果我做:
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 安装。