--作者:飞翔的小胖猪

--创建时间:2021年2月27日

内容

journalctl是systemd统一管理所有unit(服务)的启动日志。可以通过journalctl一个命令查看所有日志。

所有用户都被授予访问其私人的每个用户日志的权限。但是,在默认情况下,只有root用户和属于少数特殊组的用户才被授予访问系统日志和其他用户的日志的权限。“system -journal”、“adm”和“wheel”组的成员可以读取所有的journal文件。请注意,后两个组传统上具有由分发版指定的额外特权。“wheel”组的成员通常可以执行管理任务。

默认情况下,输出较长的内容将被“截断”到屏幕宽度。可以使用左箭头和右箭头键查看隐藏的部分。

当输出到tty时,将根据优先级对行进行着色:level ERROR及以上的行被着色为红色;级别通知及以上的行被突出显示;其他行显示正常。使用该命令时注意颜色不一样的输出。

格式

journalctl [OPTIONS...] [MATCHES...]

OPTIONS如果不为空则输出对应过的过滤格式,如同时指定了多个过滤条件,输出必须满足所有的过滤条件。

参数

--no-full, --full, -l :显示完整的字段,所有列,可使用左右键翻看。默认显示所有列--full和-l功能一样。
-a:显示所有的字段。
-i: 查找不区分大小写
-e: 跳到日志我呢见结尾,只显示一屏幕大小。
-f: 实时显示条目,和tail -f功能一致。
-n:显示最近的日志并指定行数,默认为10行。可以理解为才从最后显示10行。
--no-tail:显示所有的行,忽略掉-n参数。
-r:反向输出,最新的数据在首行。
--utc:显示UTC时间,不加时区。
--no-hostname:不要显示来自本地主机的日志消息的主机名字段。
-x:添加解释性帮助文本在输出中记录可用的消息。用来自消息目录的解释文本扩充日志行,增强日志文件可读性,使用的比较多。当将journalctl输出附加到bug报告时,请不要使用-x。
-m:显示所有可用的日志,包括远程日志的交叉条目。
-b:显示来自特定引导的消息。这将添加对“_BOOT_ID=”的匹配。0表示本次启动,-1表示上一次启动。1表示日志文件中发现的第一个启动、2表示日志文件中发现的第二个启动依次类推。默认参数为0。
--list-boots:显示引导编号,查找出来的值可配套-b参数使用。
-k:只显示引导日志中的内核消息,同等-b参数加_TRANSPORT=kernel过滤条件。
-u:显示指定的systemd单元单元(如服务)或任何匹配的单元的消息,该参数可在一条语句中多次使用。
--user-unit:显示指定用户会话单元的消息。这将为来自单元的消息添加匹配。
--utc:显示UTC时间,不加时区。
--no-hostname:不要显示来自本地主机的日志消息的主机名字段。
-x:添加解释性帮助文本在输出中记录可用的消息。用来自消息目录的解释文本扩充日志行,增强日志文件可读性,使用的比较多。当将journalctl输出附加到bug报告时,请不要使用-x。
-m:显示所有可用的日志,包括远程日志的交叉条目。
-b:显示来自特定引导的消息。这将添加对“_BOOT_ID=”的匹配。0表示本次启动,-1表示上一次启动。1表示日志文件中发现的第一个启动、2表示日志文件中发现的第二个启动依次类推。默认参数为0。
--list-boots:显示引导编号,查找出来的值可配套-b参数使用。
-k:只显示引导日志中的内核消息,同等-b参数加_TRANSPORT=kernel过滤条件。
-u:显示指定的systemd单元单元(如服务)或任何匹配的单元的消息,该参数可在一条语句中多次使用。
--user-unit:显示指定用户会话单元的消息。这将为来自单元的消息添加匹配。
-g:过滤输出到MESSAGE=字段匹配指定正则表达式的条目。如果输入模式都是小写则不区分大小写。
--case-sensitive:使模式匹配区分大小写或不区分大小写。默认不区分,小写的话。
-c:从传递的游标指定的日志位置开始显示条目。
--after-cursor:在传递的游标指定的位置之后显示日志中位置的条目。
--show-cursor:显示游标。
-S:在指定日期或更新日期,或在指定日期或更早日期开始显示项。
-F:在日志的所有条目中打印指定字段可以接受的所有可能数据值。
-N:打印日志所有条目中当前使用的所有字段名。
--system:显示来自系统服务和内核的消息。
--user:显示来之用户服务的消息。
-M:显示来自运行中的本地容器的消息。指定要连接的容器名称。
-D:以目录路径作为参数。如果指定了,journalctl将对指定的日志目录进行操作。
--disk-usage:显示所有日志文件的当前磁盘使用情况。这显示了所有存档的和的磁盘使用量的总和活跃日志文件。
--vacuum-size:删除最旧的归档日志文件,直到它们使用的磁盘空间低于指定的大小值,单位:“K”、“M”、“G”和“T”。
--vacuum-time:删除超过指定时间的日志文件,单位:s、m、h、days、months、weeks、years 。
--vacuum-files:指定单独的日志文件最大数量,超过部分就删除。
--sync:要求日志守护进程将所有尚未写入的日志数据写入备份文件系统并进行同步。
--flush:要求日志守护进程将存储在/run/log/journal中的任何日志数据刷新到/var/log/journal中。

-o:输出格式控制。

选项 释义
short 默认值,生成与syslog相同的格式输出,short开头的区别主要在时间上。
short-full 显示较为详细的时间精确到分,格式为:Sun 2021-02-28 09:18:00 CST
short-iso 显示时区年份精确到分,格式:2021-02-28T09:18:00+0800
short-precise 不显示年份精确到微秒,格式:2021-02-28T09:18:00.945348+0800
short-iso-precise 时间精确到微妙,格式:2021-02-28T09:18:00.945348+0800
short-monotonic 具有完全微秒精度的经典syslog时间戳,格式:0.000000
short-unix 自UTC 1970年1月1日以来的秒数,精确到微秒,格式:1614475080.945348
verbose 显示具有所有字段的完整结构条目,不再是一行一条记录。
export 日志序列化为适合备份和网络的二进制流
json json格式显示记录
json-pretty 将条目格式化为JSON数据结构,但将它们格式化为多行,以便使它们更易于阅读。
json-sse 将条目格式化为JSON数据结构,但将它们包装为适合于服务器发送事件[3]的格式。
cat 生成一个非常简洁的输出,只显示每个日志条目的实际消息,没有元数据和时间戳。
with-unit 类似于short-full,但是以单元和用户单元名作为前缀,而不是传统的syslog标识符。

-p:指定输出特定级别的信息,可shiyong..表示告警等级范围。将显示指定值和小于其数字的日志等级。

标识 级别
0 emerg
1 alert
2 crit
3 err
4 warning
5 notice
6 info
7 debug

常用命令

journalctl的很多参数都是可以组合使用的,文章只对常见的参数简单展示使用方法,复杂的组合方法自己玩去。

 1.常见查看参数

#-r标识反向输出,最新的日志在前面
[root@135 ~]# journalctl -r #实时查看日志,功能类似于tail -f命令
[root@135 ~]# journalctl -f #查看最后200行
[root@135 ~]# journalctl -n 200 #不分页输出日志,一次性在屏幕上输出所有日志,不用手动按上下键翻页
[root@135 ~]# journalctl --no-pager #之查看内核日志,-k标识为内核的意思,-r标识逆向输出,只输出系统内核日志,不输出用户服务日志
[root@135 ~]# journalctl -k -r #查看最后的一屏日志信息
[root@135 ~]# journalctl -e

#查看附加了注释信息的日志,-x常和其他参数合并使用,用来提高日志的可读性
[root@135 ~]# journalctl  -x

#显示系统日志信息
[root@135 ~]# journalctl  --system

#显示当前用户的用户日志
[root@135 ~]# journalctl  --user

#过滤日志文件信息,-g同等与grep命令,查找日志文件和network相关的内容,模式(此时的network)全小写则不区分大小写
[root@135 ~]# journalctl  -ig network

2.查看系统启动日志信息

#查看系统中能够查看到的启动日志列表
[root@135 ~]# journalctl --list-boots

#查看指定的启动日志,默认
[root@135 ~]# journalctl -b

3.查看指定的日志

#查看指定文件的日志
[root@135 systemd]# journalctl /usr/lib/systemd/systemd

#查看指定进程号的日志
[root@135 systemd]# journalctl   _PID=1

#实时查看脚本解释器的日志
[root@135 ~]# journalctl  -f /usr/bin/bash

#查看服务单元日志,先通过systemctl list-unit-files获取到所有unit列表
[root@135 ~]# systemctl  list-unit-files
[root@135 ~]# journalctl -u NetworkManager.servic

4.查看指定等级的日志

#显示等级err及以上的告警
[root@135 ~]# journalctl -p err #显示等级err及以上的告警
[root@135 ~]# journalctl -p 3 #显示等级在4-3的告警信息,也就是warning和err
[root@135 ~]# journalctl -p 4..3

5.日志空间暂用及清除

#显示系统中日志文件占用空间。
[root@135 ~]# journalctl --disk-usage #清日志空间直到满足1g,超出部分会被删除
[root@135 ~]# journalctl --vacuum-size=1G #清理1年之前的文件,超过该事件的日志将会被删除。
[root@135 ~]# journalctl --vacuum-time=1years

#清理单个日志文件超过100的日志文件,多出的直接清理掉。
[root@135 ~]# journalctl  --vacuum-files=100

#清理日志间,清理后满足日志存储占用空空间小于1G,同时日志文件不超过1年
[root@135 ~]# journalctl --vacuum-size=1G --vacuum-time=1years

配置journalctl

通过修改/etc/systemd/journald.conf配置文件内容可以控制journalctl一些参数。

没得事不要去修改,这个文件类的可以在虚拟化做系统模板的时候一次设置多次下发,单一一台一台的就算了,工作量太大。

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
#SystemMaxUse=: 指定journal所能使用的最高持久存储容量。
#SystemKeepFree=: 指定journal在添加新条目时需要保留的剩余空间。
#SystemMaxFileSize=: 控制单一journal文件大小,符合要求方可被转为持久存储。
#RuntimeMaxUse=: 指定易失性存储中的最大可用磁盘容量(/run文件系统之内)。
#RuntimeKeepFree=: 指定向易失性存储内写入数据时为其它应用保留的空间量(/run文件系统之内)。
#RuntimeMaxFileSize=: 指定单一journal文件可占用的最大易失性存储容量(/run文件系统之内)。

journactl日志查看命令-渐入佳境的更多相关文章

  1. 服务端Linux机器日志查看命令

    常用查看命令 ps -ef | grep java 查看当前机器运行程序: tail -100f /... 查看日志,实时的 less /- 按页查看日志,空格翻页,q退出 cat /.. | gre ...

  2. linux日志查看命令

    tail tail 命令用于显示文本文件的末尾几行, 对于监控文件日志特别有用 tail example.txt #显示文件 example.txt 的后十行内容: tail -n 20 exampl ...

  3. linux tail命令及其它日志查看命令的用法

    当日志文件存储日志很大时,我们就不能用vi直接进去查看日志,需要Linux的命令去完成我们的查看任务. Log位置: /var/log/message 系统启动后的信息和错误日志,是Red Hat L ...

  4. k8s中pod的容器日志查看命令

    如果容器已经崩溃停止,您可以仍然使用 kubectl logs --previous 获取该容器的日志,只不过需要添加参数 --previous. 如果 Pod 中包含多个容器,而您想要看其中某一个容 ...

  5. SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace)

      SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace) DBA 日常管理工作中,很重要一项工作就是监视数据库文件大小,及日志文件大小.如果你管理数据库的有很 ...

  6. SVN查看提交日志的命令

    Windows下,使用svn客户端查看日志很方便,但是如果在linux下,常规查看日志的命令对于日志记录数比较多的时候,屏幕显示不了,就比较麻烦,后来发现了一个很有用的参数可以限制要查看的记录条数 查 ...

  7. Linux查看日志常用命令(转载)

    转自: https://www.cnblogs.com/kbkiss/p/7567725.html -------------------------------------------------- ...

  8. Python 简易web日志查看工具&可改装为命令行工具

    Python 简易web日志查看工具&可改装为命令行工具 效果图 原理 利用python的paramiko库模拟ssh登录操作,并执行tail命令 所需库 flask.paramiko.gev ...

  9. [转帖]持久化journalctl日志清空命令查看配置参数详解

    持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...

随机推荐

  1. golang中往脚本传递参数的两种用法os.Args和flag

    1. os.Args package main import ( "fmt" "os" ) func main() { // 执行:./demo.exe 127 ...

  2. Java继承的概念与实现

    // 方法 public class Demo { public static void main(String[] args) { Teacher t = new Teacher(); t.name ...

  3. mysql 相关练习题

    /* 自己查询自己 把一张表看成是两张表. 表的设计. SELECT * FROM depart; SELECT d1. NAME '部门', d2. NAME '分部门' FROM depart d ...

  4. .NET 5.0 Docker 镜像 错误修复方法

    在给eshopondapr 打镜像的时候碰到了3个错误 1.restore: Received an unexpected EOF or 0 bytes from the transport stre ...

  5. 使用Hot Chocolate和.NET 6构建GraphQL应用(6) —— 实现Query排序功能

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 从前几篇文章可以看出,使用Hot Chocolate实现GraphQL接口是比较简单的,本篇文章我们继续查询 ...

  6. AT2582 [ARC075D] Mirrored

    首先因为这个问题的解的范围我们是不清楚的,可以先考虑一下解的范围以便后面的解题. 那么我们可以大胆猜测这个数的位数应该不会很长,否则除非使用一条与 \(D\) 有关的式子外,不论我们用什么方法都计算不 ...

  7. 2020-9-29 T3

    题意:给定一颗大小为 \(n(n \le 5 \times 10 ^ 4)\) 的树,保证树的生成方式随机,你需要选定两个点 \(x, y\),最小化: \[\sum\limits_{i = 1} ^ ...

  8. C语言system函数

    我们今天来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system 功 能: 发 ...

  9. js Object.prototype.hasOwnProperty() 与 for in 区别

    hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 语法 obj.hasOwnProperty(prop) 参数 prop要检测的属性 [字符串] 名称或者 ...

  10. Cell简介

    UITableView的每一行都是一个UITableViewCell,通过dataSource的tableView:cellForRowAtIndexPath:方法来初始化每一行 UITableVie ...