简单了解journalctl

简单了解journalctljournalctl命令journalctl是什么以及作用?journalctl用来查询systemd-journald服务收集到的日志。systemd-journald服务是systemdinit系统提供的收集系统日志的服务。命令格式为:journalctl[OPTIONS…][MATCHES…]journalctl命令的路径为:/bin/jour…

大家好,又见面了,我是你们的朋友全栈君。

journalctl 命令

journalctl是什么以及作用?

journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。

命令格式为:
journalctl [OPTIONS…] [MATCHES…]

journalctl 命令的路径为:
/bin/journalctl

查看journalctl 帮助文档:journalctl –help

直接使用journalctl可以输出所有的日志记录,因为是所有的日志信息,所以价值不大,我们只是想要某个服务输出的日志信息。

systemd-journald 服务收集到的日志默认保存在 /run/log 目录中,重启系统会丢掉以前的日志信息。

如果日志需要永久保存,可以将日志保存到文件中。

方法一:创建目录 /var/log/journal,然后重启日志服务 systemd-journald.service。
方法二:修改配置文件 /etc/systemd/journald.conf,把 Storage=auto 改为 Storage=persistent,并取消注释,然后重启日志服务 systemd-journald.service。

方法一的详细操作
在 /var/log/ 下面创建名为 journal 的目录,并设置权限即可:

$ sudo mkdir /var/log/journal
$ sudo chown root:systemd-journal /var/log/journal
$ sudo chmod 2775 /var/log/journal
$ sudo systemctl restart systemd-journald.service

这样/run/log 下面就没有 journal 的日志了,日志文件就被保存到/var/log/journal中了。

查看日志占用的磁盘空间

journalctl --disk-usage

需要注意的是,日志不管你存放在哪里,它始终是要占用磁盘空间的。

清理日志数据
如果大家打算对 journal 记录进行清理,则可使用两种不同方式。

  • 使用 –vacuum-size 选项
  • 使用 –vacuum-time 选项

如果使用 –vacuum-size 选项,则可硬性指定日志的总体体积,意味着其会不断删除旧有记录直到所占容量符合要求:

$ sudo journalctl --vacuum-size=1G

另一种方式则是使用 –vacuum-time 选项。任何早于这一时间点的条目都将被删除。例如,去年之后的条目才能保留:

$ sudo journalctl --vacuum-time=1years

查看某次启动后的日志

默认情况下 systemd-journald 服务只保存本次启动后的日志(重新启动后丢掉以前的日志)。此时 -b 选项是没啥用的。当我们把 systemd-journald 服务收集到的日志保存到文件中之后,就可以通过下面的命令查看系统的重启记录:

$ journalctl --list-boots 

此时我们就可以通过 -b 选项来选择查看某次运行过程中的日志:

$ sudo journalctl -b -1
或
$ sudo journalctl -b 9eaabbc25fe343999ef1024e6a16fb58

下面的命令都会输出最后一次启动后的日志信息:

$ sudo journalctl -b
$ sudo journalctl -b  0

查看指定时间段的日志

利用 –since 与 –until 选项设定时间段,二者分别负责指定给定时间之前与之后的日志记录。时间值可以使用多种格式,比如下面的格式:

YYYY-MM-DD HH:MM:SS

如果我们要查询 2018 年 3 月 26 日下午 8:20 之后的日志:

$ journalctl --since "2018-03-26 20:20:00"

如果以上格式中的某些组成部分未进行填写,系统会直接进行默认填充。例如,如果日期部分未填写,则会直接显示当前日期。如果时间部分未填写,则缺省使用 “00:00:00″(午夜)。秒字段亦可留空,默认值为 “00”,比如下面的命令:

$ journalctl --since "2018-03-26" --until "2018-03-26 03:00"

另外,journalctl 还能够理解部分相对值及命名简写。例如,大家可以使用 “yesterday”、”today”、”tomorrow” 或者 “now” 等。
比如获取昨天的日志数据可以使用下面的命令:

$ journalctl --since yesterday

要获得早上 9:00 到一小时前这段时间内的日志,可以使用下面的命令:

$ journalctl --since 09:00 --until "1 hour ago"

按 unit 过滤日志

systemd 把几乎所有的任务都抽象成了 unit,因此我们可以方便的使用 -u 选项通过 unit 的名称来过滤器日志记录。查看某个 unit 的日志:

$ sudo journalctl -u nginx.service
$ sudo journalctl -u nginx.service --since today

还可以使用多个 -u 选项同时获得多个 unit 的日志:

$ journalctl -u nginx.service -u php-fpm.service --since today

通过日志级别进行过滤

除了通过 PRIORITY= 的方式,还可以通过 -p 选项来过滤日志的级别。 可以指定的优先级如下:
# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug

$ sudo journalctl -p err

注意,这里指定的是优先级的名称。

实时更新日志

与 tail -f 类似,journalctl 支持 -f 选项来显示实时的日志:

$ sudo journalctl -f

如果要查看某个 unit 的实时日志,再加上 -u 选项就可以了:

$ sudo journalctl -f -u prometheus.service

只显示最新的 n 行

命令行选项 -n 用来控制只显示最新的 n 行日志,默认是显示尾部的最新 10 行日志:

$ sudo journalctl -n

也可以显示尾部指定行数的日志:

$ sudo journalctl -n 20

下面则是显示 cron.service 服务最新的三行日志:

$ journalctl -u cron.service -n 3

以上是journalctl的简单用法可以简单达到了解和基本使用的目的,更多详情可以参见:https://www.cnblogs.com/sparkdev/p/8795141.html

转载于:https://www.cnblogs.com/jasonboren/p/11493353.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142459.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Unity 3D 入门基础[通俗易懂]

    Unity 3D 入门基础[通俗易懂]1.1菜单栏File(文件):打开和保存场景、项目、以及创建游戏。Edit(编辑):主要用于Unity内部功能、快捷键设置。Assets(资源):用于资源的创建、导入和导出。GameObject(游戏对象):用于游戏对象的创建。Component:(游戏组件):为游戏对象等添加组件来实现部分功能。Window(窗口):显示特定视图。Help(帮助):主要包含使用手册、资源商店、论坛等。1.2五个视图层级视图(Hierarchy):主要存放游戏场景中的具体的游戏对象。场

  • k8s 开源_openstack源码

    k8s 开源_openstack源码createfunc main() { #随机数 rand.Seed(time.Now().UnixNano()) #创建一个新的命令行对象 command := cmd.NewDefaultKubectlCommand() #日志 logs.InitLogs() defer logs.FlushLogs() #真正执行的命令行 if err := command.Execute(); err != nil { os.Exit(1) }}# NewDefaultKubectl

  • 网页图片无缝循环滚动html代码,网页图片无缝循环滚动html代码(Web page seamless scroll HTML code).doc…

    网页图片无缝循环滚动html代码,网页图片无缝循环滚动html代码(Web page seamless scroll HTML code).doc…网页图片无缝循环滚动html代码(WebpageseamlessscrollHTMLcode)网页图片无缝循环滚动html代码(WebpageseamlessscrollHTMLcode)PicturescrollcodeSeamlessscrollingcodeFirstintroduceitsimplementationideas:asetwidth…

  • Intent常用flag之FLAG_ACTIVITY_CLEAR_TOP

    Intent常用flag之FLAG_ACTIVITY_CLEAR_TOP先说Activity的四种启动模式:1:standard:默认模式,不需要配置LaunchMode,默认在从Activity1跳转到Activity2,然后从Activity2跳转到Activity3,此时不管桟中有没有Activity2、3,程序都会新创建一个新的Activity,最后依次返回,会按照倒叙的顺序依次退出,类似退桟的过程。    2:singleTop:singl

  • vs 安装包_vs离线安装包

    vs 安装包_vs离线安装包VS安装包注册com组件VS安装包注册com组件1.把你的com组件加入到打包程序。 2.在打包程序中找到该com组件,点击属性。在属性中有Register项,把值选择为vsdrfCOM即可。

    2022年10月13日
  • flex java教程_java入门推荐

    flex java教程_java入门推荐http://blogs.infosupport.com/flash-builder-4-the-easiest-way-to-create-a-combined-flex-java-project/http://bdk82924.iteye.com/blog/1067285整整一年之后http://hi.baidu.com/amauri3389/item/88ec1ed

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号