journalctl命令

journalctl命令

journalctl命令是Systemd日志系统的一个命令,主要用途是用来查看经过Systemd日志系统记录的日志,在Systemd出现以前,Linux系统及各应用的日志都是分别管理的,Systemd取代了initd以后便开始统一管理了全部Unit的启动日志,能够只用一个journalctl命令,查看全部内核和应用的日志。html

语法

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

参数

  • --no-full, --full, -l: 当字段匹配可用列时将其省略,默认设置是显示完整字段,容许它们换行或被截断,旧的选项-l/--full再也不有用,除了撤销--no-full
  • -a, --all: 完整显示全部字段,即便它们包含不可打印字符或很是长。
  • -f, --follow: 仅显示最近的日志条目,并在新条目附加到日志时连续打印。
  • -e, --pager-end: 当即跳到日志的结尾内隐含的工具,这意味着-n 1000能够保证分页器不会缓冲大小不受限制的日志,能够在命令行中使用显式的-n和其余一些数值来覆盖它,注意,这个选项只支持less页。
  • -n, --lines=: 显示最近的日志事件并限制显示的事件数,若是使用--follow,则隐含此选项,参数为正整数,是可选的,默认为10
  • --no-tail: 显示全部存储的输出行,即便在follow模式下也是如此,撤消--line=的效果。
  • -r, --reverse: 反转输出,以便首先显示最新的条目。
  • -o, --output=: 控制所显示的日志条目的格式,采用如下选项之一:
    • short: 默认值,并生成与经典syslog文件格式基本相同的输出,每一个日志条目显示一行。
    • short-iso: 与short很是类似,但显示ISO 8601 wallclock时间戳。
    • short-precise: 与short很是类似,可是以微秒的精度显示时间戳。
    • short-monotonic: 很是类似,可是显示的是monotonic的时间戳,而不是wallclock的时间戳。
    • verbose: 显示具备全部字段的完整结构条目。
    • export: 将日志序列化成适合备份和网络传输的二进制流,主要是基于文本的。
    • json: 将条目格式化为JSON数据结构,每行一个。
    • json-pretty: 将条目格式化为JSON数据结构,但将它们格式化为多行,以令人们更容易阅读。
    • json-sse: 将条目格式化为JSON数据结构,但将它们包装为适合服务器发送的Eventsm的格式。
    • cat: 生成一个很是简洁的输出,只显示每一个日志条目的实际消息,没有元数据,甚至没有时间戳。
  • -x, --catalog: 用来自消息目录的解释文本扩充日志行,这将向输出中可用的日志消息中添加解释性帮助文本,这些简短的帮助文本将解释错误或日志事件的上下文、可能的解决方案,以及指向支持论坛、开发人员文档和任何其余相关手册的指针,注意,帮助文本不是对全部消息均可用,而是仅对选定的消息可用。此外,将journalctl输出附加到错误报告时,请不要使用-x
  • -q, --quiet: 当以普通用户身份运行时,禁止显示有关不可访问的系统日志的任何警告消息。
  • -m, --merge: 显示全部可用的日志,包括远程日志的交叉条目。
  • -b [ID][±offset], --boot=[ID][±offset]: 显示来自特定启动的消息,这将为_BOOT_ID=添加匹配项,参数可能为空,在这种状况下,将显示当前引导的日志,若是省略引导ID,则正偏移量将查找从日志开始的引导,而等于或小于零的偏移量将查找从日志结束的引导,所以,1表示按时间顺序在日志中找到的第一个引导,2表示第二个引导,依此类推,而-0表示最后一个引导,-1表示最后一个引导以前的引导,依此类推,空偏移量等同于指定-0,除非当前引导不是最后一次引导,例如由于指定--directory查看来自不一样计算机的日志。若是指定了32个字符的ID,则能够选择后跟偏移量,该偏移量标识相对于boot ID给定的引导,负值表示较早的引导,正值表示较晚的引导,若是未指定offset,则假定值为零,并显示ID给定的引导日志。
  • --list-boots: 显示引导编号(相对于当前引导)、它们的id以及与引导相关的第一条和最后一条消息的时间戳的列表。
  • -k, --dmesg: 只显示内核消息,这意味着-b并添加匹配_TRANSPORT=kernel
  • -u, --unit=UNIT|PATTERN: 显示指定的systemd单元单元的消息,或任何与PATTERN匹配的单元的消息,若是指定了模式,日志中找到的单元名称列表将与指定的模式进行比较,并使用全部匹配的内容,对于每一个单元名,将为来自该单元的消息添加一个匹配_SYSTEMD_UNIT= unit,以及来自systemd的消息和关于指定单元的coredumps的消息的额外匹配,该参数能够指定屡次。
  • --user-unit=: 显示指定用户会话单元的消息,这将为来自单元的消息_SYSTEMD_USER_UNIT=_UID=添加匹配,并为来自会话systemd的消息和关于指定单元的coredumps的消息添加额外匹配,该参数能够指定屡次。
  • -p, --priority=: 根据消息优先级或优先级范围筛选输出,接受单个数字或文本日志级别(即在0 emerg7 debug之间),或以..形式表示的numeric/text日志级别范围,日志级别是syslog中记录的一般的syslog日志级别,即emerg 0alert 1crit 2err 3warning 4notice 5info 6debug 7,若是指定一个日志级别,则显示该级别或更低(值更低优先级更高)日志级别的全部消息,若是指定了一个范围,则将显示该范围内的全部消息,包括该范围的开始值和结束值,这将为指定的优先级添加PRIORITY=匹配项。
  • -c, --cursor=: 从传递的游标指定的日志位置开始显示条目。
  • --after-cursor=: 从该光标指定的位置以后的日志位置开始显示条目,使用--show-cursor选项时将显示光标。
  • --show-cursor: 光标显示在最后一项的两个破折号后,相似于-- cursor: s=0639...,光标的格式是私有的,可能会更改。
  • --since=, --until=: 分别在指定日期或更新日期,或在指定日期或更新日期开始显示条目,日期规范的格式应该是2012-10-30 18:17:16,若是省略了时间部分,则假定为00:00:00,若是只省略了seconds组件,则假定为:00,若是省略了date部分,则假定为当前日期,或者理解字符串yesterdaytodaytomorrow,分别表示当前日期的前一天00:00:00、当前日期的前一天00:00:00、当前日期的后一天,now指的是当前时间,最后,能够指定相对次数,以-+做为前缀,分别表示当前时间以前或以后的次数。
  • -F, --field=: 在日志的全部条目中打印指定字段能够接受的全部可能数据值。
  • --system, --user: 显示来自系统服务和内核的消息(使用--system),显示来自当前用户服务的消息(使用--user),若是二者都未指定,则显示用户能够看到的全部消息。
  • -M, --machine=: 显示来自运行中的本地容器的消息,指定要链接的容器名称。
  • -D DIR, --directory=DIR: 以目录路径做为参数,若是指定,journalctl将操做指定的日志目录DIR,而不是默认的运行时和系统日志路径。
  • --file=GLOB: 以文件glob做为参数,若是指定,journalctl将操做与GLOB匹配的指定日志文件,而不是默认的运行时和系统日志路径,能够指定屡次,在这种状况下文件将被适当地交错。
  • --root=ROOT: 以目录路径做为参数,若是指定,journalctl将对指定目录下的目录文件层次结构而不是根目录进行操做,例如--update catalog将建立root/var/lib/systemd/catalog/database
  • --new-id128: 生成一个新的适合标识消息的128ID,而不是显示日志内容,这是为那些须要为他们引入的新消息使用新标识符并但愿使其可识别的开发人员准备的,这将以三种不一样的格式打印新的ID,这些格式能够复制到源代码或相似的文件中。
  • --header: 不是显示日志内容,而是显示所访问日志字段的内部头信息。
  • --disk-usage: 显示全部日志文件的当前磁盘使用状况。
  • --list-catalog [128-bit-ID...]: 以消息id表的形式列出消息目录的内容,以及它们的简短描述字符串,若是指定了任何128id,则只显示那些条目。
  • --dump-catalog [128-bit-ID...]: 显示消息目录的内容,条目由由两个破折号和ID组成的行分隔,格式与.catalog文件相同,若是指定了任何128id,则只显示那些条目。
  • --update-catalog: 更新消息目录索引,每次安装、删除或更新新的编目文件以从新生成二进制编目索引时,都须要执行此命令。
  • --setup-keys: 生成一个用于前向安全密封FSS的新密钥对,而不是显示日志内容,这将生成一个密封密钥和一个验证密钥,密封密钥存储在日志数据目录中,并保留在主机上,验证键应该存储在外部。
  • --force: 当传递了--setup keys而且已经配置了前向安全密封FSS时,从新建立FSS keys
  • --interval=: 指定使用--setup-keys生成FSS密钥对时密封密钥的更改间隔,较短的时间间隔会增长CPU消耗,但会缩短没法检测到的日志更改的时间范围,默认为15分钟。
  • --verify: 检查日志文件的内部一致性,若是文件是在启用FSS的状况下生成的,而且FSS验证密钥是用--verify key=指定的,则会验证日志文件的真实性。
  • --verify-key=: 指定用于--verify操做的FSS验证密钥。
  • --no-pager: 不将程序的输出内容管道pipe给分页程序。
  • --vacuum-size=BYTES: 将磁盘使用减小到指定大小如下。
  • --vacuum-files=INT: 仅保留指定数量的日记文件。
  • --vacuum-time=TIME: 任何早于指定时间点的条目都将被删除。
  • --rotate: 要求日志守护进程滚动日志文件,此命令会一直阻塞到滚动操做完成以后才会返回,日志滚动能够确保全部活动的日志文件都被关闭、并被重命名以完成归档,同时新的空白日志文件将被建立,并成为新的活动日志文件,一般能够与--vacuum-size=--vacuum-time=--vacuum-file=一块儿使用, 以提升日志清理的效率。
  • -h, --help: 输出帮助信息。
  • --version: 输出版本信息。

示例

显示本次启动以来的所有日志。linux

journalctl

显示内核日志。nginx

journalctl -k

使用-n参数能够显示最后n行日志,若是不指定行数,默认显示10行。git

journalctl -n 20

查看指定进程的日志。github

journalctl _PID=1

显示最近30分钟的日志。shell

journalctl --since=-30m

显示2021年以来的日志。json

journalctl --since="2021-01-01"

显示今天的日志。安全

journalctl --since=today

使用-f参数能够实现类型tail -f的功能,持续监控最新的日志。服务器

journalctl -f

查看指定Unit的日志。网络

journalctl -u nginx.service

查看日志占用的磁盘空间。

journalctl --disk-usage

要求日志守护进程滚动日志文件,日志滚动能够确保全部活动的日志文件都被关闭、并被重命名以完成归档,同时新的空白日志文件将被建立,并成为新的活动日志文件。

journalctl --rotate

清理一个周前的日志。

journalctl --vacuum-time=1week

将磁盘占用减小到指定大小如下。

journalctl --vacuum-size=10M

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

http://www.jinbuguo.com/systemd/journalctl.html#
https://www.commandlinux.com/man-page/man1/journalctl.1.html
https://blog.orchidflower.cn/2020/04/20/linux-command-introduction-04-journalctl/
相关文章
相关标签/搜索