当前位置:首页>Linux>Linux命令每日一清单040:journalctl--日志查看命令速查表

Linux命令每日一清单040:journalctl--日志查看命令速查表

  • 2026-09-17 16:29:04
Linux命令每日一清单040:journalctl--日志查看命令速查表

journalctl是systemd日志系统的查询工具,用于查看和管理由systemd-journald服务收集的系统日志。与传统syslog不同,systemd日志以二进制格式存储,支持结构化查询、按时间范围过滤、按服务单元过滤等强大功能。

journalctl是Linux系统管理员排查问题、监控服务状态、审计系统行为的核心工具。它能够集中管理所有系统日志(包括内核日志、服务日志、用户日志),并提供灵活的过滤和输出格式选项。掌握journalctl是进行现代Linux系统故障排查的必备技能。

1. 基本用法

命令说明
journalctl
显示所有日志
journalctl -r
倒序显示(最新的在前)
journalctl -f
实时跟踪新日志(类似tail -f)
journalctl -n 50
显示最后50行
journalctl -e
跳转到日志末尾
journalctl -x
显示说明性消息(解释日志含义)
journalctl --no-pager
不使用分页器直接输出

2. 按服务单元过滤

命令说明
journalctl -u nginx
查看nginx服务的日志
journalctl -u nginx -u php-fpm
查看多个服务单元的日志
journalctl -u nginx --since today
查看nginx服务今日日志
journalctl -u nginx -f
实时跟踪nginx服务日志
journalctl -u nginx -n 100
显示nginx服务最后100行
journalctl -u nginx --no-pager
直接输出(不分页)
journalctl -u nginx --output=short-iso
ISO时间戳格式输出

3. 时间过滤

命令说明
journalctl --since "2026-04-01"
自指定日期以来的日志
journalctl --since "1 hour ago"
最近1小时的日志
journalctl --since "yesterday"
自昨天以来的日志
journalctl --since "2026-04-01 10:00" --until "2026-04-01 12:00"
时间段内的日志
journalctl --since today --until now
当天的日志
journalctl --since "30 min ago" -p err
最近30分钟的错误日志
journalctl --since "2026-04-01" --until "2026-04-02"
指定日期范围的日志

时间表达式支持:

  • 相对时间:-1h、-2d、-30min、-1week
  • 特殊时间:today、yesterday、tomorrow
  • 精确时间:YYYY-MM-DD HH:MM:SS

4. 按启动轮次过滤

命令说明
journalctl -b
当前启动轮次的日志
journalctl -b -1
上一次启动轮次的日志
journalctl --list-boots
列出所有启动轮次及其ID
journalctl -b 2a3b4c...
指定启动ID的日志
journalctl -b -1 -p warning
上一次启动的警告及以上日志
journalctl -b --since "10 min ago"
当前启动中最近10分钟的日志

5. 按进程/来源过滤

命令说明
journalctl _COMM=sshd
按进程名过滤
journalctl _EXE=/usr/sbin/sshd
按可执行文件路径过滤
journalctl _PID=1234
按进程ID过滤
journalctl SYSLOG_IDENTIFIER=nginx
按syslog标识符过滤
journalctl _UID=1000
按用户ID过滤
journalctl _GID=1000
按组ID过滤
journalctl _SYSTEMD_UNIT=nginx.service
按systemd单元显式过滤
journalctl _TRANSPORT=kernel
按传输类型过滤(kernel/syslog/stdout)

6. 优先级过滤

命令说明
journalctl -p err
错误及以上(0-3)
journalctl -p warning
警告及以上(0-4)
journalctl -p info
信息及以上(0-5)
journalctl -p debug
所有级别(0-7)
journalctl -p 3
按优先级数字过滤
journalctl -k -p err -b -1
上次启动的内核错误日志

优先级级别对照:

级别数字关键字说明
emerg
0
--
系统不可用
alert
1
--
需要立即处理
crit
2
--
严重条件
err
3
-p err
错误条件
warning
4
-p warning
警告条件
notice
5
--
正常但重要
info
6
-p info
信息性消息
debug
7
-p debug
调试级别

7. 输出格式

命令说明
journalctl -o short-iso
ISO时间戳格式
journalctl -o short-precise
高精度时间戳
journalctl -o short-full
完整时间戳(默认)
journalctl -o verbose
显示所有字段(详细)
journalctl -o json
JSON格式输出
journalctl -o json-pretty
美化JSON格式
journalctl -o cat
仅输出消息正文(不含元数据)
journalctl -o short-unix
UNIX时间戳格式
journalctl -o export
二进制导出格式

8. 用户日志

命令说明
journalctl --user
查看当前用户日志
journalctl --user -u pipewire
查看用户服务单元日志
journalctl --user -b
当前启动的用户日志
journalctl --user -f
实时跟踪用户日志
journalctl --user --since "1 hour ago"
用户日志时间过滤

9. 搜索与模式匹配

命令说明
journalctl -g "failed"
按模式过滤消息
journalctl -u nginx -g "timeout"
在服务单元中搜索模式
journalctl -u ssh --since "1 day ago" -g "invalid user"
时间+单元+模式组合
journalctl -u nginx -n 200 | grep -i upstream
管道到grep进行高级匹配

10. 导出与集成

命令说明
journalctl -u nginx -o json-pretty > nginx.json
导出单元日志为JSON
journalctl --since "today" --no-pager > today.log
导出当天日志到文件
journalctl -u mysql -n 300 -o cat
仅输出消息(适合快速浏览)
journalctl -u nginx --since "1 hour ago" | less
管道到less分页
journalctl -o cat | head -100
快速查看前100行消息
journalctl --output=json | jq '.MESSAGE'
使用jq处理JSON输出

11. 磁盘使用与清理

命令说明
journalctl --disk-usage
显示日志文件总大小
journalctl --vacuum-size=1G
将日志大小限制为1GB
journalctl --vacuum-time=7d
仅保留7天内的日志
journalctl --vacuum-files=10
仅保留最新的10个日志文件
journalctl --rotate
立即轮转日志文件
journalctl --verify
验证日志文件完整性

12. 实用组合模式

命令说明
journalctl -f -u nginx -u php-fpm
同时跟踪多个服务
journalctl -b -1 -p err -o short-iso
上次启动的错误日志(ISO时间)
journalctl -u nginx --since="1 hour ago" --until="now"
Nginx最近1小时日志
journalctl -k -p warning -b
当前启动的内核警告日志
journalctl --list-boots | tail -5
查看最近5次启动
journalctl -u ssh --since yesterday -g "Accepted"
查看昨天的SSH成功登录
journalctl -u cron --no-pager | tail -20
cron服务最后20行日志
journalctl --user -f -o cat
实时跟踪用户日志(仅消息)

13. 常用选项速查

选项说明
-u
--unit
-b
--boot
-f
--follow
-n
--lines
-r
--reverse
-e
--pager-end
-p
--priority
-x
--catalog
-k
--dmesg
-o
--output
-g
--grep
--since
-
--until
-
--user
-
--no-pager
-
--list-boots
-
--disk-usage
-
--vacuum-size
-
--vacuum-time
-

14. 故障排查

问题解决方法
journalctl: command not found
系统未使用systemd;检查ps -p 1确认init系统
没有日志输出
检查journald服务:systemctl status systemd-journald
日志文件过大
使用--vacuum-size清理;调整/etc/systemd/journald.conf配置
时间范围查询无效
确保时间格式正确;检查系统时区设置
服务日志为空
确认服务是否运行;检查服务是否输出到stdout/stderr
需要root权限的日志
使用sudo执行journalctl
日志显示不完整
检查journal是否被截断:journalctl --verify
持久化日志未保存
检查/etc/systemd/journald.conf中Storage=设置

温馨提示: journalctl是systemd系统中日志管理的核心工具。建议掌握以下技巧:1)排查问题时优先使用-f实时跟踪和-p err过滤错误;2)结合-u和-b快速定位特定服务的启动问题;3)使用--since "5 min ago"快速查看近期日志;4)定期使用--disk-usage和--vacuum-size管理日志空间;5)脚本处理日志时使用-o cat获取纯净消息;6)复杂分析时使用-o json配合jq进行结构化处理。在调试服务时,journalctl -u service -f是最常用的命令组合。对于需要长期保留的日志,建议配置日志轮转和远程日志收集。

本文PDF格式下载:

  关注公众号(haopython),请回复: LTJOUR

最新文章

随机文章