如何从systemctl服务日志中查看最新的x行


21

我正在寻找一种方法,可以简单地从Debian中的systemctl服务打印最后X行。我想将此代码安装到脚本中,该脚本使用打印的和最新的日志条目。我找到了这篇文章,但出于我的目的我无法对其进行修改。

当前,我正在使用此代码,这只是给我一小段日志文件:

journalctl --unit=my.service --since "1 hour ago" -p err

要给出结果的外观示例,只需在上面的命令中键入任何服务,然后滚动到日志末尾即可。然后从底部开始复制最后300行。

我的想法是使用egrep ex。egrep -m 700 .但是从那以后我再也没有运气了

Answers:



7

只需将输出传递给tail

journalctl --unit=my.service | tail -n 300

tail命令将在stdin中收到的最后几行(默认情况下为10)打印到stdout。


1
完全忘记了尾巴-好主意,非常感谢!
user3191334'2

5
对于大型原木,尾巴可能会非常缓慢。-n您想要的是journalctrl 的内置函数。例如journalctl -n 300
Drakes

4

如果要查看最后n并在将新消息打印到日志时查看它们,请尝试以下操作:

journalctl -u <service name> -n <number of lines> -f

其中-n表示您希望从日志尾部看到的行数,并-f指定您希望在日志更改时关注它。


4

只是:

journalctl -u SERVICE_NAME -e

参数-e代表:

-e --pagerend; 立即在隐式分页器工具内跳到日记的末尾。这意味着-n 1000,以确保分页器不会缓冲无限制大小的日志。可以使用带有其他数值的显式-n覆盖此参数,而-nall将禁用此上限。


1

由于提供了尾部命令解决方案aleady。我尝试使用sed commmand及其效果很好

下面的命令将显示最后300行

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.