1. 首页 > Linux教程 > 正文

Linux教程FG126-系统服务日志查看命令(journalctl)

本文档风哥主要介绍Linux系统服务日志查看命令journalctl,包括基本使用、高级过滤、日志管理、生产环境实战案例等内容,参考Red Hat Enterprise Linux 10官方文档中的System administration章节,适合系统管理员在生产环境中使用。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 journalctl命令概念

journalctl是systemd系统的日志查看工具,用于查看和管理systemd journal日志。它提供了丰富的过滤和查询功能,可以帮助系统管理员快速定位和分析系统问题。学习交流加群风哥微信: itpux-com

journalctl的特点:

  • 统一的日志管理界面
  • 支持多种过滤条件
  • 实时日志监控
  • 日志持久化存储
  • 支持日志转发

1.2 journald服务

journald是systemd的日志服务,负责收集和存储系统日志。

# 查看journald服务状态
$ systemctl status systemd-journald
● systemd-journald.service – Journal Service
Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static)
Active: active (running) since Wed 2026-04-06 10:00:00 CST; 1h ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 1234 (systemd-journal)
Status: “Processing requests…”
Tasks: 1
Memory: 12.3M
CPU: 1.234s
CGroup: /system.slice/systemd-journald.service
└─1234 /usr/lib/systemd/systemd-journald

Apr 06 10:00:00 fgedu.net.cn systemd[1]: Starting Journal Service…
Apr 06 10:00:00 fgedu.net.cn systemd-journald[1234]: Journal started
Apr 06 10:00:00 fgedu.net.cn systemd-journald[1234]: Runtime journal is using 8.0M (max allowed 49.7M, trying to leave 74.6M free of 497.5M available → current limit 49.7M)
Apr 06 10:00:00 fgedu.net.cn systemd-journald[1234]: System journal is using 128.0M (max allowed 4.0G, trying to leave 4.0G free of 49.7G available → current limit 4.0G)

1.3 日志结构

journal日志的结构包括:

  • 时间戳:日志产生的时间
  • 主机名:产生日志的主机
  • 服务名:产生日志的服务
  • 进程ID:产生日志的进程ID
  • 日志级别:日志的严重程度
  • 日志内容:日志的具体内容
风哥提示:journalctl命令是systemd系统的重要工具,掌握它的使用方法对于系统管理和故障排查非常重要。

Part02-生产环境规划与建议

2.1 日志管理策略

日志管理策略:

  1. 集中管理:将日志集中存储和管理
  2. 分类存储:按服务和级别分类存储日志
  3. 定期清理:定期清理过期日志
  4. 备份策略:备份重要日志
  5. 监控告警:监控日志中的异常信息

2.2 日志保留策略

日志保留策略:

# 配置日志保留时间
$ sudo vim /etc/systemd/journald.conf

# 添加以下内容
[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
SystemMaxUse=4G
SystemKeepFree=4G
RuntimeMaxUse=50M
RuntimeKeepFree=100M
MaxRetentionSec=1month
ForwardToSyslog=no

# 重启journald服务
$ sudo systemctl restart systemd-journald

2.3 日志安全性

日志安全性考虑:

  • 权限控制:设置日志文件的权限
  • 加密存储:加密敏感日志
  • 访问控制:限制日志访问权限
  • 审计:监控日志访问
  • 备份:备份重要日志
生产环境建议:配置合适的日志保留策略,确保日志既能满足故障排查需求,又不会占用过多磁盘空间。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 基本使用

journalctl的基本使用方法:

# 查看所有日志
$ journalctl

# 查看最新日志
$ journalctl -n

# 查看最新100条日志
$ journalctl -n 100

# 实时查看日志
$ journalctl -f

# 查看指定服务的日志
$ journalctl -u nginx

# 查看指定时间范围的日志
$ journalctl –since “2026-04-06 10:00:00” –until “2026-04-06 11:00:00”

# 查看引导日志
$ journalctl -b

# 查看指定引导的日志
$ journalctl -b -1

3.2 高级过滤

journalctl的高级过滤功能:

# 按日志级别过滤
$ journalctl -p err
$ journalctl -p warning
$ journalctl -p info

# 按进程ID过滤
$ journalctl _PID=1234

# 按用户ID过滤
$ journalctl _UID=1000

# 按系统单元过滤
$ journalctl -u nginx -u mysql

# 按日志字段过滤
$ journalctl MESSAGE=”*error*”

# 组合过滤
$ journalctl -u nginx -p err –since “1h ago”

# 按主机名过滤
$ journalctl _HOSTNAME=fgedu.net.cn

# 按设备过滤
$ journalctl _KERNEL_DEVICE=/dev/sda

3.3 日志管理

日志管理操作:

# 查看日志磁盘使用情况
$ journalctl –disk-usage
Archived and active journals take up 128.0M on disk.

# 清理日志
$ sudo journalctl –vacuum-time=1d
Vacuuming done, freed 64.0M of archived journals from /var/log/journal/1234567890abcdef1234567890abcdef.

# 清理指定大小的日志
$ sudo journalctl –vacuum-size=100M
Vacuuming done, freed 28.0M of archived journals from /var/log/journal/1234567890abcdef1234567890abcdef.

# 查看日志统计信息
$ journalctl –header
Journal header information:
File path: /var/log/journal/1234567890abcdef1234567890abcdef/system.journal
File ID: 1234567890abcdef1234567890abcdef
State: ONLINE
Compatible: yes
Server: fgedu.net.cn
Signature: yes
Key pair: none
Created: Wed 2026-04-06 10:00:00 CST
Head: 1234567890
Tail: 1234567890
Seqno: 123456
Freespace: 4.0G
Reserved: 0
Runtime journal: no
Journal file type: system

风哥提示:定期清理日志可以避免磁盘空间被占满,建议设置自动清理策略。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 服务故障排查

案例:Nginx服务故障排查

# 查看Nginx服务状态
$ systemctl status nginx
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2026-04-06 10:30:00 CST; 5min ago
Process: 12345 ExecStart=/usr/sbin/nginx (code=exited, status=1/FAILURE)
Main PID: 12345 (code=exited, status=1/FAILURE)

Apr 06 10:30:00 fgedu.net.cn systemd[1]: Starting The nginx HTTP and reverse proxy server…
Apr 06 10:30:00 fgedu.net.cn nginx[12345]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Apr 06 10:30:00 fgedu.net.cn nginx[12345]: nginx: configuration file /etc/nginx/nginx.conf test failed
Apr 06 10:30:00 fgedu.net.cn systemd[1]: nginx.service: Control process exited, code=exited status=1
Apr 06 10:30:00 fgedu.net.cn systemd[1]: nginx.service: Failed with result ‘exit-code’.
Apr 06 10:30:00 fgedu.net.cn systemd[1]: Failed to start The nginx HTTP and reverse proxy server.

# 使用journalctl查看Nginx日志
$ journalctl -u nginx –since “10min ago”
— Logs begin at Wed 2026-04-06 10:00:00 CST, end at Wed 2026-04-06 10:35:00 CST.
Apr 06 10:30:00 fgedu.net.cn systemd[1]: Starting The nginx HTTP and reverse proxy server…
Apr 06 10:30:00 fgedu.net.cn nginx[12345]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Apr 06 10:30:00 fgedu.net.cn nginx[12345]: nginx: configuration file /etc/nginx/nginx.conf test failed
Apr 06 10:30:00 fgedu.net.cn systemd[1]: nginx.service: Control process exited, code=exited status=1
Apr 06 10:30:00 fgedu.net.cn systemd[1]: nginx.service: Failed with result ‘exit-code’.
Apr 06 10:30:00 fgedu.net.cn systemd[1]: Failed to start The nginx HTTP and reverse proxy server.

# 查看端口占用情况
$ ss -tulpn | grep :80
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(“httpd”,pid=6789,fd=4)

# 停止占用端口的服务
$ sudo systemctl stop httpd

# 启动Nginx服务
$ sudo systemctl start nginx

# 验证Nginx服务状态
$ systemctl status nginx
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-06 10:36:00 CST; 1min ago
Main PID: 12346 (nginx)
Tasks: 2 (limit: 4915)
Memory: 1.2M
CPU: 10ms
CGroup: /system.slice/nginx.service
├─12346 nginx: master process /usr/sbin/nginx
└─12347 nginx: worker process

Apr 06 10:36:00 fgedu.net.cn systemd[1]: Starting The nginx HTTP and reverse proxy server…
Apr 06 10:36:00 fgedu.net.cn nginx[12346]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Apr 06 10:36:00 fgedu.net.cn nginx[12346]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Apr 06 10:36:00 fgedu.net.cn systemd[1]: Started The nginx HTTP and reverse proxy server.

4.2 系统启动问题

案例:系统启动失败排查

# 查看系统启动日志
$ journalctl -b

# 查看指定引导的启动日志
$ journalctl -b -1

# 查看启动失败的服务
$ journalctl -b | grep “Failed to start”

# 查看系统启动过程中的错误
$ journalctl -b -p err

# 查看特定服务的启动日志
$ journalctl -b -u systemd-fsck

# 查看硬件相关的日志
$ journalctl -b -k | grep -i error

# 查看网络相关的日志
$ journalctl -b -u NetworkManager

4.3 安全事件分析

案例:SSH暴力破解攻击分析

# 查看SSH服务日志
$ journalctl -u sshd

# 查看SSH登录失败的日志
$ journalctl -u sshd | grep “Failed password”

# 查看SSH登录成功的日志
$ journalctl -u sshd | grep “Accepted”

# 统计登录失败的IP地址
$ journalctl -u sshd | grep “Failed password” | awk ‘{print $11}’ | sort | uniq -c | sort -nr

# 查看最近1小时的SSH日志
$ journalctl -u sshd –since “1h ago”

# 实时监控SSH日志
$ journalctl -u sshd -f

# 查看特定IP地址的登录尝试
$ journalctl -u sshd | grep “192.168.1.100”

生产环境建议:定期分析系统日志,及时发现和处理安全事件,确保系统安全。from Linux:www.itpux.com

Part05-风哥经验总结与分享

5.1 故障排查技巧

故障排查技巧:

  1. 从最近的日志开始:使用-n参数查看最新日志
  2. 按服务过滤:使用-u参数过滤特定服务的日志
  3. 按级别过滤:使用-p参数过滤特定级别的日志
  4. 按时间过滤:使用–since和–until参数过滤时间范围
  5. 组合过滤:结合多个参数进行精确过滤
  6. 实时监控:使用-f参数实时监控日志

5.2 最佳实践

最佳实践:

  • 定期清理日志:避免磁盘空间被占满
  • 配置日志保留策略:根据需要设置合适的保留时间
  • 集中管理日志:将日志集中存储和分析
  • 监控日志:设置日志监控和告警
  • 备份重要日志:备份关键系统和服务的日志
  • 文档化:记录日志分析过程和结果

5.3 风哥建议

风哥建议:

  • 熟悉journalctl命令:掌握常用参数和过滤方法
  • 建立日志分析流程:制定标准化的日志分析流程
  • 使用日志分析工具:结合ELK Stack等工具进行日志分析
  • 定期培训:定期培训团队成员的日志分析能力
  • 持续改进:根据实际情况不断优化日志管理策略
风哥提示:日志是系统运行的重要记录,掌握日志分析技巧对于系统管理和故障排查至关重要。建议定期分析系统日志,及时发现和处理潜在问题。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息