journalctl
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相关推荐
- docker 错误 A dependency job for docker.service failed. See ‘journalctl -xe‘ for details
[root@localhost laradock]# systemctl enable docker && systemctl start docker A dependency jo ...
- linux journalctl 命令 查询systemd init 系统日志
journalctl 用来查询 systemd-journald 服务收集到的日志.systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务. 命令格式为: j ...
- linux 用journalctl --vacuum-size=10M命令清理/var/log/journal目录下的日志文件
su - root journalctl --vacuum-size=10M
- journalctl -xefu kubelet查看kubelet日志
journalctl -xefu kubelet
- journalctl -xe mysql_journalctl 日志查看方法
1 概述 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息.Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用jo ...
- linux工具-journalctl查询日志
有时候,当linux服务启动失败的时候,系统会提示我们使用journalctl -xe命令来查询详细信息,定位服务不能启动的原因. journalctl 用来查询 systemd-journald 服 ...
- journalctl中文手册
journalctl是一个Linux命令,用于查看系统日志.它可以显示系统启动.服务启动.系统错误等各种事件的详细信息.以下是journalctl命令的完整中文手册: 名称 journalctl - ...
- systemd介绍六:Journalctl查看并操作sytemd日志
一.内容简介 作为最具吸引力的优势,systemd拥有强大的处理与系统日志记录功能.在使用其它工具时,日志往往被分散在整套系统当中,由不同的守护进程及进程负责处理,这意味着我们很难跨越多种应用程序对其 ...
- centos发现网络连不上了,重启网络服务报错“systemctl status network.service” and “journalctl -xe” for details. [失败]
打开虚拟机centos系统的时候发现网络连不上了,重启网络服务失败报错:Restarting network (via systemctl): Job for network.service fail ...
- 系统日志管理——journalctl
1.journalctl 日志查看工具: journalctl命令 注:此命令查看的是内核里所存储的日志,机子重启后会自动消失. journalctl -n 3 参看最近3条日志 journalctl ...
最新文章
- AI算法在FPGA芯片上还有这种操作?| 技术头条
- ssm项目jsp加载不出来图片_16. SSM 搭建
- requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...
- pythonidle新建文件_(一)Python入门:04IDLE开发环境的使用-建立Python源文件
- MapTask并行度决定机制、FileInputFormat切片机制、map并行度的经验之谈、ReduceTask并行度的决定、MAPREDUCE程序运行演示(来自学笔记)
- .bash_profile vs .bashrc
- verilog 除法器
- 用数据库修改服务器的时间格式,如何查询数据库服务器的时间格式
- Git初学札记(九)————EGit检出远程分支
- iPictrue:图片标注提示
- Netty 服务 接收新数据
- vs2008生成lib文件
- 大数据面试-05-大数据工程师面试题
- Mysql各个版本之间的比较
- Electron下使用samba相关问题记录
- 项目开发中如何写说明文档
- uniapp选择所有城市通过索引方式(源码自带所有城市json格式数据)
- matlab 求对称,matlab-线性代数 判断 矩阵的对称、实对称、反对称
- 智慧之战——农民工大战博士后
- R语言关于心脏病相关问题的预测和分析