博主头像
mxd's Blog

"The quieter you become,the more you are able to hear."

Linux系统查看日志命令journalctl的用法

一、Systemd运行原理

Systemd是Linux系统中的初始化系统,负责启动系统后的所有服务,并监视它们在系统运行期间的状态。它将系统和服务的启动过程抽象为单元(unit),并以单元的形式进行管理。这些单元包括服务单元(service)、挂载单元(mount)、设备单元(device)等。Systemd通过解析单元配置文件(通常位于/etc/systemd/system//usr/lib/systemd/system/目录下)来了解每个单元的启动顺序、依赖关系等信息,从而实现对系统资源的高效管理和调度。此外,Systemd还集成了journald来管理日志系统,journalctl作为工具用于检索和分析日志。

二、journalctl的用法

(一)查看所有日志

journalctl

该命令会输出系统中所有的日志条目,按时间顺序排列。如果希望不分页输出,可以加上--no-pager选项。

(二)按时间倒序查看所有日志

journalctl -r

(三)查看最新的N条日志

journalctl -n N

例如,查看最新的10条日志:

journalctl -n 10

(四)实时查看新添加的日志条目

journalctl -f

类似于tail -f命令,可以实时监控日志的更新。

(五)查看特定服务的日志

journalctl -u <服务名>

例如,查看nginx服务的日志:

journalctl -u nginx

如果想实时查看特定服务的日志,可以将-f选项与-u选项结合使用:

journalctl -u nginx -f

(六)按时间范围过滤日志

可以通过--since--until选项来指定时间范围。例如,查看自某时间以来的日志:

journalctl --since "YYYY-MM-DD HH:MM:SS"

查看某时间范围内的日志:

journalctl --since "YYYY-MM-DD" --until "YYYY-MM-DD"

也可以使用相对时间,如todayyesterday等。

(七)按优先级过滤日志

可以按优先级过滤日志,例如查看所有错误日志:

journalctl -p err

优先级选项包括:emergalertcriterrwarningnoticeinfodebug

(八)按进程或用户过滤日志

可以按进程ID或用户ID过滤日志:

journalctl _PID=1234
journalctl _UID=1000

(九)按主机名或机器ID过滤日志

可以按主机名或机器ID过滤日志:

journalctl _HOSTNAME=hostname
journalctl _MACHINE_ID=machine-id

(十)按字段过滤日志

可以按特定字段过滤日志:

journalctl _SYSTEMD_UNIT=sshd.service

(十一)查看内核日志

journalctl -k

(十二)反向排序日志(最新的在前)

journalctl -r

(十三)查看磁盘日志占用情况

journalctl --disk-usage

(十四)查看特定启动的日志

查看当前启动以来的日志:

journalctl -b

查看上一次启动的日志:

journalctl -b -1

列出所有启动记录:

journalctl --list-boots

(十五)显示日志的详细解释

journalctl -x

(十六)以不同时区的时间查看日志条目

默认情况下,journalctl以当前系统时区显示日志的时间。要以UTC时区查看日志,可以使用以下命令:

journalctl --utc

三、如何查看service的名字

可以使用以下命令来列出系统中的systemd服务:

systemctl list-units --type=service

四、示例

假设我们想查看nginx服务在最近一次启动时的错误日志,可以使用以下命令:

journalctl -u nginx -b -1 -p err

该命令表示查看nginx服务在上一次启动时的错误日志。

Linux系统查看日志命令journalctl的用法
https://blog.mxdyeah.top/mxdyeah_blog_post/journalctl_usage.html
本文作者 mxdyeah
发布时间 2025-04-05
许可协议 CC BY-NC-SA 4.0
发表新评论
Vaptcha Initializing...