微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux journalctl 命令

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

$ -h

输出所有的日志记录:

$ journalctl

_SYSTEMD_UNIT=cron.service

可以同时添加多个字段进行匹配,它们之间是与的关系,就是同时符合多个条件的记录才会被匹配,比如添加 PRIORITY 字段的匹配条件:

$ journalctl _SYSTEMD_UNIT=cron.service PRIORITY=

$ journal -F PRIORITY

对同一个字段应用多个 match 条件的情况,比如:

$ journalctl _SYSTEMD_UNIT=cron.service _SYSTEMD_UNIT=prometheus.service

$ journalctl _SYSTEMD_UNIT=cron.service + _PID=

$ journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID= + _SYSTEMD_UNIT=dbus.service

stemd-journald 服务收集到的日志认保存在 /run/log 目录中,重启系统会丢掉以前的日志信息。 我们可以通过两种方式让 systemd-journald 服务把所有的日志都保存到文件中,这样重新启动后就不会丢掉以前的日志。方法一:创建目录 /var/log/journal,然后重启日志服务 systemd-journald.service。方法二:修改配置文件 /etc/systemd/journald.conf,把 Storage=auto 改为 Storage=persistent,并取消注释,然后重启日志服务 systemd-journald.service。

方法一的详细操作

$ /var/log/ root:systemd-journal /var/log/ /var/log/ systemctl restart systemd-journald.service

文件被保存在 /var/log/journal 目录下:

$ journalctl --disk-usage

文件,都会得到 disk-usage。

删除旧有记录直到所占容量符合要求:

$ journalctl --vacuum-size=1G

删除。例如,去年之后的条目才能保留:

$ journalctl --vacuum-=1years

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

$ journalctl --list-boots

$ journalctl -b - journalctl -b 9eaabbc25fe343999ef1024e6a16fb58

输出最后一次启动后的日志信息:

$ journalctl - journalctl -b

YYYY-MM-DD HH:MM:SS

$ journalctl --since

$ journalctl --since --

$ journalctl --since yesterday

$ journalctl --since : --

$ journalctl _SYstemD_UNIT=cron.service --since --

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

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

$ journalctl -p err

名称。

$ journalctl -f

$ journalctl -f -u prometheus.service

显示最新的 n 行日志,认是显示尾部的最新 10 行日志:

$ journalctl -n

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

$ journalctl -n

显示 cron.service 服务最新的三行日志:

$ journalctl -u cron.service -n

输出

$ journalctl --no-pager

short short-isoshort-preciseshort-monotonicverboseexportjsonjson-prettyjson-ssecat

$ journalctl -u cron.service -n --no-pager -o json

文件(二进制文件或脚本文件),则 journalctl 会显示与该可执行文件相关的全部条目。比如可以显示 /usr/lib/systemd/systemd 程序产生的日志:

$ journalctl /usr/lib/systemd/systemd

显示 /usr/bin/bash 程序产生的日志:

$ journalctl /usr/bin/bash

$ journalctl -k

stemd 时代后,查看日志的方式也发生了变化,原因是 systemd 自带日志管理服务和工具。单就日志的查看来说,我们需要使用 journalctl 工具。它的好处是使用一个统一的工具来完成日志的查看功能,我们不用记很多的命令了。

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

相关推荐