journalctl 是 Linux 系统上用于查询和管理 systemd 日志的命令行工具。 它提供了一种强大的方式来访问、过滤和分析系统日志,这对于诊断问题、监控系统性能以及审计安全事件至关重要。
以下是 journalctl 的一些主要作用和用法:
1. 查看系统日志:
- 查看所有日志: - 1 - journalctl - 这将显示自系统启动以来的所有日志消息。 
- 查看最近的日志: - 1 - journalctl -n <数量> - 例如, - journalctl -n 10显示最近的 10 条日志消息。
- 实时查看日志 (类似于 - tail -f):- 1 - journalctl -f - 实时显示新的日志消息,直到按下 Ctrl+C。 
2. 基于时间过滤日志:
- 查看特定时间后的日志: - 1 
 2
 3
 4- journalctl --since "<日期时间>" 
 journalctl --since "today"
 journalctl --since "yesterday"
 journalctl --since "2023-10-27 10:00:00"
- 查看特定时间之前的日志: - 1 
 2
 3- journalctl --until "<日期时间>" 
 journalctl --until "tomorrow"
 journalctl --until "2023-10-27 12:00:00"
- 查看特定时间范围内的日志: - 1 - journalctl --since "2023-10-27 08:00:00" --until "2023-10-27 18:00:00" 
3. 基于单元 (Unit) 过滤日志:
- 查看特定服务的日志: - 1 
 2- journalctl -u <单元名称> 
 journalctl -u nginx.service
- 查看特定进程的日志 (通过 PID): - 1 
 2- journalctl _PID=<进程ID> 
 journalctl _PID=1234
- 查看特定用户启动的单元的日志: - 1 
 2- journalctl --user-unit <单元名称> 
 journalctl --user-unit myapp.service
4. 基于优先级 (Priority) 过滤日志:
- 查看特定优先级的日志: - 1 - journalctl -p <优先级> - 优先级包括: - emerg(紧急)
- alert(警报)
- crit(严重)
- err(错误)
- warning(警告)
- notice(注意)
- info(信息)
- debug(调试)
 - 例如,查看所有错误和更严重级别的日志: - 1 - journalctl -p err 
- 查看特定优先级及以上级别的日志: - 1 
 2- journalctl -p err..crit # 错误级别到严重级别 
 journalctl -p err+ # 错误级别及以上级别 (包括严重,警报,紧急)
5. 基于内核日志:
- 查看内核日志: - 1 - journalctl -k 
- 查看特定时间的内核日志: - 1 - journalctl -k --since "yesterday" 
6. 输出格式化:
- 以短格式输出 (默认): - 1 - journalctl 
- 以详细格式输出: - 1 - journalctl -o verbose 
- 以 JSON 格式输出: - 1 - journalctl -o json 
- 以 JSON-pretty 格式输出: - 1 - journalctl -o json-pretty 
- 以导出格式输出 (二进制,可用于传输): - 1 - journalctl -o export 
- 以猫格式输出 (最小化信息,适合管道传输): - 1 - journalctl -o cat 
7. 其他功能:
- 显示磁盘空间使用情况: - 1 - journalctl --disk-usage 
- 清理旧日志 (归档): - 1 
 2- journalctl --vacuum-time=2weeks # 删除两周前的日志 
 journalctl --vacuum-size=1G # 保留 1GB 的日志
- 设置日志持久化 (如果 - /var/log/journal目录不存在,则创建):- 1 
 2- sudo mkdir -p /var/log/journal 
 sudo systemctl restart systemd-journald- 重启服务后,systemd-journald 将持久化日志到磁盘。 
总结:
journalctl 是一款非常强大的工具,它可以帮助你:
- 诊断系统问题和应用程序错误。
- 监控系统性能和资源使用情况。
- 审计安全事件。
- 跟踪系统启动和关闭过程。
- 了解系统的行为和状态。
熟练使用 journalctl 是 Linux 系统管理员和开发人员的一项重要技能。  通过各种选项,你可以精确地筛选和分析系统日志,从而快速定位和解决问题。  使用 man journalctl 命令查看完整的文档和选项列表。