Journalctl Systemd 日志查看教程

Journalctl 是 Systemd 自带的日志查看工具,用于查询 systemd-journald 收集的所有系统和服务日志。与传统的文本日志文件不同,Journal 使用二进制格式存储,支持结构化查询和高效过滤。在搬瓦工 VPS 上,Journalctl 是排查服务故障、查看启动日志和进行安全审计的首选工具。

一、基本用法

# 查看所有日志(从旧到新)
journalctl

# 查看最新日志(倒序)
journalctl -r

# 查看最近 N 行
journalctl -n 50

# 实时跟踪日志(类似 tail -f)
journalctl -f

# 不分页直接输出
journalctl --no-pager

# 输出为 JSON 格式
journalctl -o json-pretty -n 5

二、按服务过滤

# 查看特定服务的日志
journalctl -u nginx
journalctl -u mysql
journalctl -u sshd

# 实时跟踪服务日志
journalctl -u nginx -f

# 查看多个服务
journalctl -u nginx -u php-fpm

# 查看最近 100 行服务日志
journalctl -u nginx -n 100

# 查看服务的错误日志
journalctl -u nginx -p err

三、按时间范围查询

# 今天的日志
journalctl --since today

# 昨天的日志
journalctl --since yesterday --until today

# 指定时间范围
journalctl --since "2026-03-01 00:00:00" --until "2026-03-01 23:59:59"

# 最近一小时
journalctl --since "1 hour ago"

# 最近 30 分钟
journalctl --since "30 min ago"

# 过去两天
journalctl --since "2 days ago"

四、按优先级过滤

日志优先级从 0(最紧急)到 7(调试):

# 只看错误及以上级别
journalctl -p err

# 只看警告及以上级别
journalctl -p warning

# 只看紧急和严重错误
journalctl -p crit

# 指定优先级范围
journalctl -p err..crit

# 某服务的错误日志
journalctl -u nginx -p err --since today

五、按进程和用户过滤

# 按 PID 过滤
journalctl _PID=1234

# 按用户过滤
journalctl _UID=1000

# 按可执行文件过滤
journalctl /usr/sbin/nginx

# 按主机名过滤
journalctl _HOSTNAME=my-vps

# 查看内核日志
journalctl -k
journalctl --dmesg

六、启动日志

# 查看本次启动的日志
journalctl -b

# 查看上次启动的日志
journalctl -b -1

# 查看所有启动记录
journalctl --list-boots

# 查看上次启动中的错误
journalctl -b -1 -p err

# 查看启动耗时
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain

七、输出格式

# 简短格式(默认)
journalctl -o short

# 详细格式
journalctl -o verbose -n 5

# JSON 格式
journalctl -o json -n 5

# JSON 美化格式
journalctl -o json-pretty -n 5

# 只输出消息内容
journalctl -o cat -u nginx -n 10

# 导出日志
journalctl -u nginx --since today > /tmp/nginx-today.log

# 导出为 JSON
journalctl -u nginx -o json --since today > /tmp/nginx-today.json

八、磁盘空间管理

Journal 日志会占用大量磁盘空间,在搬瓦工 VPS 上需要合理控制:

8.1 查看日志占用

# 查看日志磁盘使用量
journalctl --disk-usage

8.2 清理日志

# 保留最近 7 天的日志
journalctl --vacuum-time=7d

# 限制日志总大小为 500MB
journalctl --vacuum-size=500M

# 保留最近 5 个归档文件
journalctl --vacuum-files=5

# 验证日志完整性
journalctl --verify

8.3 持久化配置

# 编辑 journald 配置
vi /etc/systemd/journald.conf

# 推荐配置
[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFileSize=50M
MaxRetentionSec=30day
MaxFileSec=1week
Compress=yes
ForwardToSyslog=yes

# 重启 journald 使配置生效
systemctl restart systemd-journald

九、实际运维场景

9.1 排查服务启动失败

# 查看服务状态
systemctl status nginx

# 查看服务最近的日志
journalctl -u nginx -n 50 --no-pager

# 查看服务启动时的错误
journalctl -u nginx -p err -b

# 实时监控服务重启
journalctl -u nginx -f &
systemctl restart nginx

9.2 安全审计

# 查看 SSH 登录记录
journalctl -u sshd --since today | grep "Accepted\|Failed"

# 查看 sudo 操作记录
journalctl _COMM=sudo --since "1 week ago"

# 查看认证失败记录
journalctl -u sshd -p warning --since "24 hours ago"

# 监控可疑登录
journalctl -u sshd -f | grep "Failed password"

9.3 系统问题诊断

# 查看 OOM(内存不足)事件
journalctl -k | grep -i "oom\|out of memory"

# 查看磁盘错误
journalctl -k | grep -i "error\|i/o"

# 查看网络相关日志
journalctl | grep -i "network\|eth0\|ens"

# 查看定时任务日志
journalctl -u cron --since today

十、与传统日志文件的对比

  • 查询效率:Journalctl 的结构化查询远快于在文本文件中使用 grep。
  • 存储格式:Journal 使用二进制格式存储,自动压缩,节省空间。
  • 元数据:Journal 自动记录 PID、UID、服务名等元数据,方便过滤。
  • 完整性:Journal 支持日志签名和验证,防止篡改。

总结

Journalctl 是现代 Linux 系统中查看和管理日志的核心工具。在搬瓦工 VPS 上,善用 Journalctl 的过滤和查询功能可以快速定位问题。注意合理控制日志磁盘占用,避免撑满磁盘。建议搭配 Rsyslog 日志管理Logrotate 日志轮转 教程一起学习。选购搬瓦工 VPS 请参考全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。