我特别感兴趣的是看看在定时器上运行的onehot服务的输出。 --unit标志是closures的,但它将所有服务运行连接在一起。 我能想到的最明显的方法就是过滤PID,但是这让我担心分叉的PID重用/服务,并且获得最后的PID非常不方便。 有没有其他的标识符对应一个服务的单个运行,我可以用来过滤日志?
编辑:我会高兴地接受权威的“不”,如果这是真正的答案。
我不确定哪个时间戳最有意义,但这对我有用。 希望有一个更好的方式来处理来自systemctl show的时间戳比awk – 无法弄清楚如何控制时间戳的格式。
unit=foo.service ts=$(systemctl show -p ActiveEnterTimestamp $unit) echo $ts ActiveEnterTimestamp=Fri 2016-11-11 12:30:01 MST journalctl -u $unit --since "$(echo $ts | awk '{print $2 $3}')"
您可以使用引导标志仅从该引导中获取日志。 例如
journalctl _SYSTEMD_UNIT=avahi-daemon.service -b 5
这些可能会帮助你:
journalctl -u foo.service | 尾巴-n 2
或者用期望的行数replace2
journalctl -u foo.service –since =' 2016-04-11 13:00:00 '
您可以将它们组合起来,以获得最后一次运行时间戳记,然后使用带有–since开关的时间戳记。
您可以使用Journalctl的字段filter。 例如
journalctl _PID=1234
获取所有可用字段的列表:
journalctl --fields --unit kubelet
一个可用的字段是_PID 。
您可以使用pidof或systemctl show --property MainPID <SERVICE_NAME>获取正在运行的进程的PID
所以下面是我如何从当前Kubernetes kubeletstream程获取日志:
# journalctl --unit kubelet _PID=$(systemctl show --property MainPID kubelet 2>/dev/null | cut -d= -f2) | head
现在告诉我为什么我Kubernetes是如此难以安装:-(