journalctl使用
以下是对 journalctl 的详细使用指导,包括查询 MySQL、Nginx、PHP 和 Elasticsearch (ES) 日志的示例,以及每个参数的多个使用案例。
# 使用 journalctl 查询日志
journalctl 是用来查询和管理 systemd 日志的命令行工具,能够访问系统启动、服务状态、应用程序错误等信息。下面是如何使用 journalctl 查询日志的详细指导。
# 基本用法
journalctl [OPTIONS]
# 主要命令和选项
-b: 显示当前启动后的所有日志。使用案例:
- 查看当前启动后的所有日志:
journalctl -b1 - 查看上一次启动后的所有日志:
journalctl -b -11
- 查看当前启动后的所有日志:
-e: 显示日志的最后部分。使用案例:
- 查看日志的最后 50 行:
journalctl -e -n 501
- 查看日志的最后 50 行:
-f: 实时跟踪最新日志(类似于tail -f)。使用案例:
- 实时跟踪所有日志:
journalctl -f1 - 实时跟踪 Nginx 服务的日志:
journalctl -u nginx.service -f1
- 实时跟踪所有日志:
-n <number>: 显示最近的<number>条日志。使用案例:
- 查看最近的 100 条日志:
journalctl -n 1001 - 查看最近的 50 条 MySQL 日志:
journalctl -u mysql.service -n 501
- 查看最近的 100 条日志:
--since: 仅显示指定时间之后的日志。使用案例:
- 查看从 2023 年 10 月 1 日 12:00 之后的日志:
journalctl --since "2023-10-01 12:00:00"1 - 查看从今天早上以来的所有日志:
journalctl --since today1
- 查看从 2023 年 10 月 1 日 12:00 之后的日志:
--until: 仅显示指定时间之前的日志。使用案例:
- 查看到 2023 年 10 月 1 日 12:00 之前的日志:
journalctl --until "2023-10-01 12:00:00"1 - 查看到昨天的所有日志:
journalctl --until yesterday1
- 查看到 2023 年 10 月 1 日 12:00 之前的日志:
-u <unit>: 显示特定服务的日志。使用案例:
- 查看 MySQL 服务的日志:
journalctl -u mysql.service1 - 查看 Nginx 服务的日志:
journalctl -u nginx.service1
- 查看 MySQL 服务的日志:
--priority: 根据优先级过滤日志(如info,warning,error等)。使用案例:
- 查看所有警告级别的日志:
journalctl --priority=warning1 - 查看所有错误级别的日志:
journalctl --priority=err1
- 查看所有警告级别的日志:
--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-pager1--output <format>: 更改输出格式,例如short,json,cat等。journalctl --output json1
# 总结
journalctl 是一个强大的工具,用于查看和管理 systemd 日志。通过灵活使用其命令和选项,可以轻松查询到系统的运行状态、服务问题及其他重要日志信息。掌握这些命令将有助于更好地进行系统管理和故障排查。