精华内容
下载资源
问答
  • 解决docker报错systemctl status docker.service and journalctl -xe
  • journalctl命令

    2021-02-17 12:42:04
    journalctl命令 journalctl命令是Systemd日志系统的一个命令,主要用途是用来查看通过Systemd日志系统记录的日志,在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd取代了initd之后便开始统一...

    journalctl命令

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

    语法

    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: 输出版本信息。

    示例

    显示本次启动以来的全部日志。

    journalctl
    

    显示内核日志。

    journalctl -k
    

    使用-n参数可以显示最后n行日志,如果不指定行数,默认显示10行。

    journalctl -n 20
    

    查看指定进程的日志。

    journalctl _PID=1
    

    显示最近30分钟的日志。

    journalctl --since=-30m
    

    显示2021年以来的日志。

    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/
    
    展开全文
  • journalctl

    2018-04-10 00:33:00
    systemd 提供了自己的日志系统(logging system),称为 journal。...# journalctl 默认情况下(当Storage=在文件/etc/systemd/journald.conf中被设置为auto),日志记录将被写入/var/log/journal/。该目录是sys...

    systemd 提供了自己的日志系统(logging system),称为 journal。使用 systemd 日志,无需额外安装日志服务(syslog)。读取日志的命令:

    # journalctl
    

    默认情况下(当 Storage= 在文件 /etc/systemd/journald.conf 中被设置为 auto),日志记录将被写入 /var/log/journal/。该目录是 systemd 软件包的一部分。若被删除,systemd 不会自动创建它,直到下次升级软件包时重建该目录。如果该目录缺失,systemd 会将日志记录写入 /run/systemd/journal。这意味着,系统重启后日志将丢失。

    提示: 如果  /var/log/journal/ 位于  btrfs 文件系统,应该考虑对这个目录禁用写入时复制,方法参阅 Btrfs#Copy-on-Write (CoW)

    Systemd 日志事件提示信息的记录安装优先级和更能进行分离,符合经典的 BSD syslog 协议风格(维基百科RFC 5424)。

    过滤输出

    journalctl可以根据特定字段过滤输出。如果过滤的字段比较多,需要较长时间才能显示出来。

    示例:

    显示本次启动后的所有日志:

    # journalctl -b
    

    不过,一般大家更关心的不是本次启动后的日志,而是上次启动时的(例如,刚刚系统崩溃了)。可以使用 -b 参数:

    • journalctl -b -0 显示本次启动的信息
    • journalctl -b -1 显示上次启动的信息
    • journalctl -b -2 显示上上次启动的信息 journalctl -b -2
    • 只显示错误、冲突和重要告警信息
      # journalctl -p err..alert
      也可以使用数字, journalctl -p 3..1。If single number/keyword used, journalctl -p 3 - all higher priority levels also included.
    • 显示从某个日期 ( 或时间 ) 开始的消息:
      # journalctl --since="2012-10-30 18:17:16"
    • 显示从某个时间 ( 例如 20分钟前 ) 的消息:
      # journalctl --since "20 min ago"
    • 显示最新信息
      # journalctl -f
    • 显示特定程序的所有消息:
      # journalctl /usr/lib/systemd/systemd
    • 显示特定进程的所有消息:
      # journalctl _PID=1
    • 显示指定单元的所有消息:
      # journalctl -u netcfg
    • 显示内核环缓存消息r:
      # journalctl -k
    • Show auth.log equivalent by filtering on syslog facility:
      # journalctl -f -l SYSLOG_FACILITY=10

    详情参阅journalctl(1)systemd.journal-fields(7),以及 Lennert 的这篇博文

    日志大小限制

    如果按上面的操作保留日志的话,默认日志最大限制为所在文件系统容量的 10%,即:如果 /var/log/journal 储存在 50GiB 的根分区中,那么日志最多存储 5GiB 数据。可以修改配置文件指定最大限制。如限制日志最大 50MiB:

    /etc/systemd/journald.conf
    SystemMaxUse=50M

    还可以通过配置片段而不是全局配置文件进行设置:

    /etc/systemd/journald.conf.d/00-journal-size.conf
    [Journal]
    SystemMaxUse=50M

    详情参见 journald.conf(5).

    配合 syslog 使用

    systemd 提供了 socket /run/systemd/journal/syslog,以兼容传统日志服务。所有系统信息都会被传入。要使传统日志服务工作,需要让服务链接该 socket,而非 /dev/log官方说明)。Arch 软件仓库中的 syslog-ng 已经包含了需要的配置。

    journald.conf 使用 no 转发socket . 为了使 syslog-ng 配合 journald , 你需要在 /etc/systemd/journald.conf 中设置 ForwardToSyslog=yes . 参阅 Syslog-ng#Overview了解更多细节.

    如果你选择使用 rsyslogAUR , 因为 rsyslog 从日志中 直接 传出消息,所以不再必要改变那个选项..

    设置开机启动 syslog-ng:

     # systemctl enable syslog-ng
    

    这里有一份很不错的 journalctl 指南。

    手动清理日志

    /var/log/journal 存放着日志, rm 应该能工作. 或者使用journalctl,

    例如:

    • 清理日志使总大小小于 100M:
      # journalctl --vacuum-size=100M
    • 清理最早两周前的日志.
      # journalctl --vacuum-time=2weeks

    参阅 journalctl(1) 获得更多信息.

    Journald in conjunction with syslog

    Compatibility with a classic, non-journald aware syslog implementation can be provided by letting systemd forward all messages via the socket /run/systemd/journal/syslog. To make the syslog daemon work with the journal, it has to bind to this socket instead of /dev/log (official announcement).

    As of systemd 216 the default journald.conf for forwarding to the socket was changed to ForwardToSyslog=no to avoid system overhead, because rsyslog or syslog-ng (since 3.6) pull the messages from the journal by itself.

    See Syslog-ng#Overview and Syslog-ng#syslog-ng and systemd journal, or rsyslog respectively, for details on configuration.

    转发 journald 到 /dev/tty12

    建立一个 drop-in directory[broken link: invalid section] /etc/systemd/journald.conf.d 然后在其中建立 fw-tty12.conf :

    /etc/systemd/journald.conf.d/fw-tty12.conf
    [Journal]
    ForwardToConsole=yes
    TTYPath=/dev/tty12
    MaxLevelConsole=info

    然后重新启动 systemd-journald.

    查看特定位置的日志

    有时你希望查看另一个系统上的日志.例如从 Live 环境修复现存的系统.

    这种情况下你可以挂载目标系统 ( 例如挂载到 /mnt ),然后用 -D/--directory 参数指定目录,像这样:

    $ journalctl -D /mnt/var/log/journal -xe

    转载于:https://www.cnblogs.com/Alexzzzz/p/8766714.html

    展开全文
  • journalctl用法详解

    2021-01-04 19:37:02
    文章目录一、journalctl命令简述二、journalctl常用选项 一、journalctl命令简述 journalctl [OPTIONS...] [MATCHES...] Query the journal. Flags: --system Show the system journal --user Show the user ...

    一、journalctl命令简述

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

    Query the journal.

    Flags:
         --system              Show the system journal
         --user                Show the user journal for the current user
      -M --machine=CONTAINER   Operate on local container
      -S --since=DATE          Show entries not older than the specified date
      -U --until=DATE          Show entries not newer than the specified date
      -c --cursor=CURSOR       Show entries starting at the specified cursor
         --after-cursor=CURSOR Show entries after the specified cursor
         --show-cursor         Print the cursor after all the entries
      -b --boot[=ID]           Show current boot or the specified boot
         --list-boots          Show terse information about recorded boots
      -k --dmesg               Show kernel message log from the current boot
      -u --unit=UNIT           Show logs from the specified unit
      -t --identifier=STRING   Show entries with the specified syslog identifier
      -p --priority=RANGE      Show entries with the specified priority
      -e --pager-end           Immediately jump to the end in the pager
      -f --follow              Follow the journal
      -n --lines[=INTEGER]     Number of journal entries to show
         --no-tail             Show all lines, even in follow mode
      -r --reverse             Show the newest entries first
      -o --output=STRING       Change journal output mode (short, short-iso,
                                       short-precise, short-monotonic, verbose,
                                       export, json, json-pretty, json-sse, cat)
         --utc                 Express time in Coordinated Universal Time (UTC)
      -x --catalog             Add message explanations where available
         --no-full             Ellipsize fields
      -a --all                 Show all fields, including long and unprintable
      -q --quiet               Do not show privilege warning
         --no-pager            Do not pipe output into a pager
      -m --merge               Show entries from all available journals
      -D --directory=PATH      Show journal files from directory
         --file=PATH           Show journal file
         --root=ROOT           Operate on catalog files underneath the root ROOT
         --interval=TIME       Time interval for changing the FSS sealing key
         --verify-key=KEY      Specify FSS verification key
         --force               Override of the FSS key pair with --setup-keys
    
    Commands:
      -h --help                Show this help text
         --version             Show package version
      -F --field=FIELD         List all values that a specified field takes
         --new-id128           Generate a new 128-bit ID
         --disk-usage          Show total disk usage of all journal files
         --vacuum-size=BYTES   Reduce disk usage below specified size
         --vacuum-time=TIME    Remove journal files older than specified date
         --flush               Flush all journal data from /run into /var
         --header              Show journal header information
         --list-catalog        Show all message IDs in the catalog
         --dump-catalog        Show entries in the message catalog
         --update-catalog      Update the message catalog database
         --setup-keys          Generate a new FSS key pair
         --verify              Verify journal file consistency
    

    二、journalctl常用选项

    1. journalctl -e // Immediately jump to the end in the pager(立即跳到日志页面结尾处)
    journalctl -e
    
    1 04 18:30:32 server1 systemd[1]: Started Session 22 of user root.
    1 04 18:30:32 server1 systemd[1]: Starting Session 22 of user root.
    1 04 18:30:32 server1 CROND[55734]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    1 04 18:40:01 server1 systemd[1]: Started Session 23 of user root.
    1 04 18:40:01 server1 systemd[1]: Starting Session 23 of user root.
    1 04 18:40:01 server1 CROND[55818]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    1 04 18:50:01 server1 systemd[1]: Started Session 24 of user root.
    1 04 18:50:01 server1 systemd[1]: Starting Session 24 of user root.
    1 04 18:50:01 server1 CROND[55907]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    1 04 19:00:01 server1 systemd[1]: Started Session 25 of user root.
    1 04 19:00:01 server1 systemd[1]: Starting Session 25 of user root.
    1 04 19:00:01 server1 CROND[55997]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    1 04 19:01:01 server1 systemd[1]: Started Session 26 of user root.
    1 04 19:01:01 server1 systemd[1]: Starting Session 26 of user root.
    1 04 19:01:01 server1 CROND[56011]: (root) CMD (run-parts /etc/cron.hourly)
    1 04 19:01:01 server1 run-parts(/etc/cron.hourly)[56014]: starting 0anacron
    1 04 19:01:01 server1 run-parts(/etc/cron.hourly)[56020]: finished 0anacron
    1 04 19:10:01 server1 systemd[1]: Started Session 27 of user root.
    1 04 19:10:01 server1 systemd[1]: Starting Session 27 of user root.
    1 04 19:10:01 server1 CROND[56105]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    
    1. journalctl -u //查看指定单元 ( unit ) 的日志
    journalctl -u httpd
    
    [root@server1 ~]# journalctl -u httpd
    -- Logs begin at  2020-11-22 04:33:29 CST, end at  2021-01-04 19:30:01 CST. --
    1 04 19:24:46 server1 systemd[1]: Starting The Apache HTTP Server...
    1 04 19:25:06 server1 httpd[56288]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::4f00:5a8e:3923:429d. Set the 'ServerName' directive 
    1 04 19:25:26 server1 systemd[1]: Started The Apache HTTP Server.
    1 04 19:27:57 server1 systemd[1]: Stopping The Apache HTTP Server...
    1 04 19:27:58 server1 systemd[1]: Stopped The Apache HTTP Server.
    
    展开全文
  • 1. journalctl 常用命令 查看所有日志(默认情况下 ,只保存本次启动的日志) journalctl 查看内核日志(不显示应用日志) journalctl -k 查看系统本次启动的日志 journalctl -b 查看上一次启动的日志(需...

    参考链接:
    sparkdev

    1. journalctl 常用命令

    查看所有日志(默认情况下 ,只保存本次启动的日志)

    journalctl 
    

    查看内核日志(不显示应用日志)

     journalctl -k 
    

    查看系统本次启动的日志

     journalctl -b
    

    查看上一次启动的日志(需更改设置)
    在该[Journal]部分下,将该Storage=选项设置为“persistent”以启用持久记录:

      vim    /etc/systemd/journald.conf
        . . .
        [Journal]
        Storage=persistent
    

    在您的服务器上启用了保存以前的引导时,journalctl提供了一些命令来帮助您将引导作为分割单位来使用。要查看journald知道的引导,请使用以下–list-boots选项journalctl:

    $ journalctl --list-boots 
        -1 00d066e11cb3412a912cb804cee123b5 Thu 2018-02-22 17:01:47 CST—Thu 2018-02-22 17:09:15 CST
         0 63f75abbe94c4087bc2cc3cdb3b57100 Thu 2018-02-22 17:09:10 CST—Thu 2018-02-22 17:10:19 CST
    

    这将为每次启动显示一行。第一列是启动的偏移量,可用于轻松引用启动journalctl。如果您需要绝对参考,则启动ID位于第二列。您可以通过在结束时列出的两个时间规范来指出引导会话引用的时间。

    2. 使用时间限制来过滤日记数据

    例如,要查看上一次启动的日志,请使用-1带有该-b标志的相对指针:

    $ journalctl -b -1
    

    查看指定时间的日志
    可以使用–since和–until选项过滤任意时间限制,这些限制分别显示给定时间之前或之后的条目。
    例如: #“显示2017年10月30号,18点10分30秒到当前时间之间的所有日志信息”

    $ journalctl --since="2017-10-30 18:10:30"
    

    另外,journal还能够理解部分相对值及命名简写。例如,大家可以使用“yesterday”、“today”、“tomorrow”或者“now”等表达。另外,我们也可以使用“-”或者“+”设定相对值,或者使用“ago”之前的表达。
    例如获取昨天的日志如下:

    journalctl –since yesterday
    

    获取某一个时间段到当前时间的前一个小时的日志

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

    获取当前时间的前20分钟的日志

    journalctl --since "20 min ago"
    

    获取某一天到某一个时间段的日志信息

    journalctl --since "2017-01-10" --until "2017-01-11 03:00" 
    

    3. 根据服务或组件来进行过滤

    -u选项来过滤。

    例如,查看httpd服务的日志信息

    $ journalctl -u httpd.service 
    -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:30:01 CST. --
    Feb 22 17:29:27 centos7.localdomain systemd[1]: Starting The Apache HTTP Server...
    Feb 22 17:29:27 centos7.localdomain httpd[1610]: AH00558: httpd: Could not reliably determine t
    Feb 22 17:29:28 centos7.localdomain systemd[1]: Started The Apache HTTP Server.
    

    也可以查看httpd服务当天的运行状况

    journalctl -u httpd.service --since today
    

    按进程、用户或者群组ID
    由于某些服务当中包含多个子进程,因此如果我们希望通过进程ID实现查询,也可以使用相关过滤机制。
    这里需要指定_PID字段。例如,如果PID为8088,则可输入:

    journalctl _PID=8088
    

    有时候我们可能希望显示全部来自特定用户或者群组的日志条目,这就需要使用_UID或者_GID。例如,如果大家的Web服务器运行在www-data用户下,则可这样找到该用户ID:

    $ id -u www-data
    
    33
    
    

    接下来,我们可以使用该ID返回过滤后的journal结果:

    journalctl _UID=33 --since today
    

    journalctl配合-p选项显示特定优先级的信息,从而过滤掉优先级较低的信息。
    例如,只显示错误级别或者更高的日志条目:

    $ journalctl -p err -b
        -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:40:02 CST. --
        Feb 22 17:09:10 centos7.localdomain kernel: sd 0:0:0:0: [sda] Assuming drive cache: write throu
        Feb 22 17:09:12 centos7.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not
        Feb 22 17:09:15 centos7.localdomain rsyslogd[593]: error during parsing file /etc/rsyslog.conf,
        Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: ALSA wo
        Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: Most li
        Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: We were
        Feb 22 17:09:48 centos7.localdomain spice-vdagent[1274]: Cannot access vdagent virtio channel /
        lines 1-8/8 (END)
    

    这将只显示被标记为错误、严重、警告或者紧急级别的信息。Journal的这种实现方式与标准syslog信息在级别上是一致的。大家可以使用优先级名称或者其相关量化值。以下各数字为由最高到最低优先级:

    0: emerg
    1: alert
    2: crit
    3: err
    4: warning
    5: notice
    6: info
    7: debug

    例如:

    $ journalctl -p 3 -b
        -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:50:01 CST. --
        Feb 22 17:09:10 centos7.localdomain kernel: sd 0:0:0:0: [sda] Assuming drive cache: write throu
        Feb 22 17:09:12 centos7.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not
        Feb 22 17:09:15 centos7.localdomain rsyslogd[593]: error during parsing file /etc/rsyslog.conf,
    

    4. 修改journal显示内容

    分页显示(默认)或者改为正常标准输出
    分页显示,其中插入省略号以代表被移除的信息,使用–no-full选

    journalctl --no-full
    

    . . .

    大家也可以要求其显示全部信息,无论其是否包含不可输出的字符。具体方式为添加-a标记:
    journalctl -a
    默认情况下,journalctl会在pager内显示输出结果以便于查阅。如果大家希望利用文本操作工具对数据进行处理,则可能需要使用标准格式。在这种情况下,我们需要使用–no-pager选项:

    journalctl --no-pager
    

    这样就可以用一些工具过滤出自己感兴趣的信息了

    5. 输出格式

    如果大家需要对journal条目进行处理,则可能需要使用更易使用的格式以简化数据解析工作。幸运的是,journal能够以多种格式进行显示,只须添加-o选项加格式说明即可。
    例如,我们可以将journal条目输出为JSON格式:

    $ journalctl -b -u httpd -o json
        { "__CURSOR" : "s=8fa6a8a1c6264c7b938e4d23584ae602;i=149d;b=63f75abbe94c4087bc2cc3cdb3b57100;m=46edf6e6;t=565c9ae1d38f7;x=b3a1eaebceb26d5b", "__REALTIME_TIMESTAMP" : "1519291767535863", "__MONOTONIC_TIMESTAMP"
        { "__CURSOR" : "s=8fa6a8a1c6264c7b938e4d23584ae602;i=149e;b=63f75abbe94c4087bc2cc3cdb3b57100;m=46f3506d;t=565c9ae22927d;x=91ef081943191196", "__REALTIME_TIMESTAMP" : "1519291767886461", "__MONOTONIC_TIMESTAMP"
        { "__CURSOR" : 
    

    以下为可用于显示的各类格式:

        cat: 只显示信息字段本身。
        export: 适合传输或备份的二进制格式。
        json: 标准JSON,每行一个条目。
        json-pretty: JSON格式,适合人类阅读习惯。
        json-sse: JSON格式,经过打包以兼容server-sent事件。
        short: 默认syslog类输出格式。
        short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
        short-monotonic: 默认格式,提供普通时间戳。
        short-precise: 默认格式,提供微秒级精度。
        verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。
    

    活动进程监控
    Journalctl命令还能够帮助管理员以类似于tail的方式监控活动或近期进程。这项功能内置于journalctl当中,允许大家在无需借助其它工具的前提下实现访问。
    显示近期日志
    要显示特定数量的记录,大家可以使用-n选项,类似为tail -n功能。默认情况下只显示最后发生的10条日志,但是也可以指定。
    例如:

    $ journalctl -n20
        -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 18:20:01 CST. --
        Feb 22 17:40:01 centos7.localdomain systemd[1]: Started Session 5 of user root.
        Feb 22 17:40:02 centos7.localdomain systemd[1]: Starting Session 5 of user root.
    

    6. 追踪日志

    要主动追踪当前正在编写的日志,大家可以使用-f标记。同样功能类似为tail -f,只要不终止,会一直监控

    $ journalctl -f
    

    7. Journal维护

    存储这么多数据当然会带来巨大压力,因此我们还需要了解如何清理部分陈旧日志以释放存储空间。
    查看当前日志占用磁盘的空间的总大小

    $ journalctl --disk-usage 
    Archived and active journals take up 8.0M on disk.
    

    指定日志文件最大空间

    journalctl --vacuum-size=1G
    

    指定日志文件保存多久

    journalctl --vacuum-time=1years
    

    8. journalctl相关配置

    大家可以配置自己的服务器以限定journal所能占用的最高容量。要实现这一点,我们需要编辑/etc/systemd/journald.conf文件。
    以下条目可用于限定journal体积的膨胀速度:

      SystemMaxUse=: 指定journal所能使用的最高持久存储容量。
        SystemKeepFree=: 指定journal在添加新条目时需要保留的剩余空间。
        SystemMaxFileSize=: 控制单一journal文件大小,符合要求方可被转为持久存储。
        RuntimeMaxUse=: 指定易失性存储中的最大可用磁盘容量(/run文件系统之内)。
        RuntimeKeepFree=: 指定向易失性存储内写入数据时为其它应用保留的空间量(/run文件系统之内)。
        RuntimeMaxFileSize=: 指定单一journal文件可占用的最大易失性存储容量(/run文件系统之内)。
    
    通过设置上述值,大家可以控制journald对服务器空间的消耗及保留方式。
    
    展开全文
  • 带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。 journalctl功能强大,用法非常多。 journalctl 常用命令 # 查看...
  • journalctl工具是在centos7之后出现的工具。 在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有日志...
  • ubuntu18.04 linux journalctl 命令

    千次阅读 2019-04-26 15:54:33
    目录 Help 输出所有的日志记录 匹配(match) 把日志保存到文件中 限定日志所能占用的最高容量 查看某次启动后的日志 查看指定时间段的日志 同时应用 match 和时间过滤条件 ...journalctl 用来查询 systemd...
  • 这是emacs在emacs中查看systemd的journalctl输出的主要模式。 由于性能原因,将输出分成多个块。 提供字体,并且可以自定义。 目前,它仍处于早期开发阶段。 请提供有关发生的任何问题的反馈。 安装 带有使用包 您...
  • 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用...
  • journalctl 日志查看方法

    万次阅读 2020-06-12 15:17:23
    日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用...
  • linux读取日志Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / Shutterstock Linux system logging changed with the introduction of ... Learn how to use the journalctl command to read and...
  • journalctl 清理journal日志

    千次阅读 2019-10-05 17:18:54
    journalctl --disk-usage 清理方法可以采用按照日期清理,或者按照允许保留的容量清理 journalctl --vacuum-time=2d journalctl --vacuum-size=500M 如果要手工删除日志文件,则在删除前需要先轮转一次...
  • journalctl命令详解

    2021-09-02 16:32:45
    journalctl 如果不带参数,journalctl将显示所有的信息。 (从旧到新) journalctl -r -r参数表示反序输出,(从新到旧) journalctl -f 要使用 journalctl 跟踪日志文件 (读取最新条目), 只需在命令后加参数 ...
  • linux journalctl 命令

    2018-04-12 13:15:00
    目录 Help 输出所有的日志记录 匹配(match) 把日志保存到文件中 限定日志所能占用的最高容量 查看某次启动后的日志 查看指定时间段的日志 同时应用 match 和时间...journalctl 用来查询 systemd-journald 服务收集...
  • linux journalctl使用详解

    千次阅读 2020-09-04 17:56:59
    journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。journalctl通常用来查询systemd管理的Unit的日志信息。 2.使用方法 $ man ...
  • 简单了解journalctl

    2019-10-02 18:25:41
    journalctl 命令 journalctl是什么以及作用? journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。 命令格式为: journalctl [OPTIONS...
  • 之前的文章Systemd日志管理服务:Journald以及重要配置选项介绍了Journald这个systemd引入的用于收集和存储日志数据的系统服务,本文将讨论systemd用来查看和处理系统日志的程序Journalctl,该实用程序可用于访问和...
  • journalctlOn Linux, I check system logs by journalctl. But it is soooo slow. How to make it faster. 在Linux上 ,我通过journalctl检查系统日志。 但这太慢了。 如何使其更快 。 By default without any ...
  • 在今天的教程中,我们将探讨如何使用journalctl工具,并在其帮助下访问并操作journal内部的数据。 总体思路 Systemd journal的深层驱动力在于以集中方式管理对来自任意来源的日志信息。由于大部分引导进程都是...
  • 查看日志的命令是: journalctl -xe 启动失败反馈的结果: [root@localhost ~]# systemctl restart zabbix-server Job for zabbix-server.service failed because a configured resource limit was exceeded. Se
  • journalctl如何使用?

    2020-10-26 18:08:58
    system统一管理所有的Unit的启动日志,其配置文件:/etc/systemd/journald.conf ,使用journalctl命令就可以查看所有日志(内核&应用)。 使用示例: 查看内核日志 journalctl -k 查看系统本次启动的日志 ...
  • I know I can view this information in journalctl but I can't figure out how to do so in Go so that I can aggregate the data. I've been looking for a library for this but can't seem to find anything ...
  • journalctl基本介绍

    2020-06-15 14:35:37
    journalctl基础用法 1、查看所有日志(默认显示本次启动的所有日志) [root@localhost ~]# journalctl 查看本次启动的所有日志也可以使用 [root@localhost ~]# journalctl -b 2、查看内核日志 [root@localhost ~]#...
  • Linux journalctl 命令

    2020-03-19 09:08:11
    Linux journalctl命令1. journalctl 作用2. journalctl 的配置文件3. journalctl 用法3. journalctl 常用参数参考 1. journalctl 作用 查看所有日志(内核日志和 应用日志) journalctl 是 centos7 上专有的日志管理...
  • journalctl日志清空方法

    2021-09-28 20:19:57
    journalctl日志清空方法 1 删除 /run/log/journal 目录下文件 2 重启systemd-journald服务 rm /run/log/journal/* -rf;systemctl restart systemd-journald
  • [linux] journalctl神器使用

    千次阅读 2018-12-23 18:32:44
    journalctl 神器使用 查看详细日志 前言 自从使用systemctl管理守护进程之后,真香。我的小飞机可以开机自启动了。但因为之前win平台的ss有日志,可以实时看到使用ss访问的网页地址,而linux下并没有,而 systemctl ...
  • 系统日志查看journalctl命令详解

    千次阅读 2020-07-13 15:48:46
    journalctl可以查看所有的系统日志文件,由于日志信息量很大,journalctl还提供了各种参数帮助用户更快速的定位到日志信息。 默认情况下,用户都可以访问自己的日志。对于系统主日志和其他用户的日志,仅限于有权限...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,754
精华内容 5,101
关键字:

journalctl