简单了解journalctl
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
简单了解journalctl的更多相关文章
- Jenkins 安装启动提示“iJob for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.”
通过RPM安装Jenkins简单方便,不太需要复杂的过程,但是在安装完成以后启动Jenkins的时候提示“Starting jenkins (via systemctl): Job for jenki ...
- Mysql-Percona mysql5.7简单安装
Mysql-Percona mysql5.7简单安装 一.什么是Percona 单从mysql的角度来讲,可以把Percona理解为mysql的一个分支,因为mysql的源码是开源的,Percona就 ...
- 【Hadoop离线基础总结】impala简单介绍及安装部署
目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
随机推荐
- LeetCode 143. 重排链表(Reorder List)
题目描述 给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. ...
- Thymeleaf Multiple Template Locations using Spring Boot
1. Overview In this tutorial, we'll see how we can define multiple template locations using Thymelea ...
- PHP 分页 (分页类)
分页类 以后可直接使用 /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private ...
- 求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。函数为 int same(int num)其中num是输入的整型数字
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Test { pub ...
- AXIS 1.4 自定义序列化/反序列化类
axis1.4的CalendarDeserializer 使用的时区是GMT,导致日期显示不准确 private static SimpleDateFormat zulu = new SimpleDa ...
- 集成学习之Adaboost算法原理
在boosting系列算法中,Adaboost是最著名的算法之一.Adaboost既可以用作分类,也可以用作回归. 1. boosting算法基本原理 集成学习原理中,boosting系列算法的思想:
- .NET GC简单理解
内存分配 计算对象大小. 添加对象指针和同步索引块. 从内存指针处开始,分配对象内存. 问题:内存不能无限制增长. 垃圾回收 从应用程序实例出发,标记所有的引用对象. 将标记对象移动到低地址端,修正实 ...
- Mysql强制修改密码
windows: 1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\M ...
- 只含有一个Excel模板的工程发布问题
遇到这样一个问题,某个项目不是dynamic web project,也不是java工程,里面只有一个Excel模板,这样的话,不能打成war包和jar包,不能通过eclipse发布至Tomcat,但 ...
- SQL:SQL优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...