journalctl使用
以下是对 journalctl
的详细使用指导,包括查询 MySQL、Nginx、PHP 和 Elasticsearch (ES) 日志的示例,以及每个参数的多个使用案例。
# 使用 journalctl
查询日志
journalctl
是用来查询和管理 systemd
日志的命令行工具,能够访问系统启动、服务状态、应用程序错误等信息。下面是如何使用 journalctl
查询日志的详细指导。
# 基本用法
journalctl [OPTIONS]
# 主要命令和选项
-b
: 显示当前启动后的所有日志。使用案例:
- 查看当前启动后的所有日志:
journalctl -b
1 - 查看上一次启动后的所有日志:
journalctl -b -1
1
- 查看当前启动后的所有日志:
-e
: 显示日志的最后部分。使用案例:
- 查看日志的最后 50 行:
journalctl -e -n 50
1
- 查看日志的最后 50 行:
-f
: 实时跟踪最新日志(类似于tail -f
)。使用案例:
- 实时跟踪所有日志:
journalctl -f
1 - 实时跟踪 Nginx 服务的日志:
journalctl -u nginx.service -f
1
- 实时跟踪所有日志:
-n <number>
: 显示最近的<number>
条日志。使用案例:
- 查看最近的 100 条日志:
journalctl -n 100
1 - 查看最近的 50 条 MySQL 日志:
journalctl -u mysql.service -n 50
1
- 查看最近的 100 条日志:
--since
: 仅显示指定时间之后的日志。使用案例:
- 查看从 2023 年 10 月 1 日 12:00 之后的日志:
journalctl --since "2023-10-01 12:00:00"
1 - 查看从今天早上以来的所有日志:
journalctl --since today
1
- 查看从 2023 年 10 月 1 日 12:00 之后的日志:
--until
: 仅显示指定时间之前的日志。使用案例:
- 查看到 2023 年 10 月 1 日 12:00 之前的日志:
journalctl --until "2023-10-01 12:00:00"
1 - 查看到昨天的所有日志:
journalctl --until yesterday
1
- 查看到 2023 年 10 月 1 日 12:00 之前的日志:
-u <unit>
: 显示特定服务的日志。使用案例:
- 查看 MySQL 服务的日志:
journalctl -u mysql.service
1 - 查看 Nginx 服务的日志:
journalctl -u nginx.service
1
- 查看 MySQL 服务的日志:
--priority
: 根据优先级过滤日志(如info
,warning
,error
等)。使用案例:
- 查看所有警告级别的日志:
journalctl --priority=warning
1 - 查看所有错误级别的日志:
journalctl --priority=err
1
- 查看所有警告级别的日志:
--grep <pattern>
: 仅显示包含指定模式的日志行。使用案例:
- 查找包含“error”的日志:
journalctl --grep "error"
1 - 查找包含“failed”的日志:
journalctl --grep "failed"
1
- 查找包含“error”的日志:
# 查询特定服务的日志
# 1. 查看 MySQL 服务的日志
journalctl -u mysql.service
- 实时跟踪 MySQL 日志:
journalctl -u mysql.service -f
- 查看过去 24 小时的 MySQL 错误日志:
journalctl -u mysql.service --since "24 hours ago" --priority=err
# 2. 查看 Nginx 服务的日志
journalctl -u nginx.service
- 实时跟踪 Nginx 日志:
journalctl -u nginx.service -f
- 查看 Nginx 日志中包含“error”的行:
journalctl -u nginx.service --grep "error"
# 3. 查看 PHP-FPM 服务的日志
journalctl -u php-fpm.service
- 实时跟踪 PHP-FPM 日志:
journalctl -u php-fpm.service -f
- 查看过去 24 小时的 PHP-FPM 日志:
journalctl -u php-fpm.service --since "24 hours ago"
# 4. 查看 Elasticsearch 服务的日志
journalctl -u elasticsearch.service
- 实时跟踪 Elasticsearch 日志:
journalctl -u elasticsearch.service -f
- 查看过去 24 小时的 Elasticsearch 错误日志:
journalctl -u elasticsearch.service --since "24 hours ago" --priority=err
# 结合使用选项
可以组合多个选项以更精确地查询日志。例如,查看 nginx
服务中包含“error”的所有日志:
journalctl -u nginx.service --grep "error"
# 更多组合示例
- 查看过去 1 小时内的 MySQL 警告和错误日志:
journalctl -u mysql.service --since "1 hour ago" --priority=warning
- 查看 Elasticsearch 服务中包含“timeout”的日志:
journalctl -u elasticsearch.service --grep "timeout"
# 其他实用选项
--no-pager
: 直接输出日志内容,不使用分页显示。journalctl --no-pager
1--output <format>
: 更改输出格式,例如short
,json
,cat
等。journalctl --output json
1
# 总结
journalctl
是一个强大的工具,用于查看和管理 systemd
日志。通过灵活使用其命令和选项,可以轻松查询到系统的运行状态、服务问题及其他重要日志信息。掌握这些命令将有助于更好地进行系统管理和故障排查。