Linux 日志与故障排查完全指南
基础介绍
日志(Logs)是 Linux 系统中记录事件、错误和系统状态的文件。它们对于监控系统健康状况、诊断问题和进行安全审计至关重要。良好的日志管理和故障排查能力是每个 Linux 系统管理员必备的技能。
工作原理简图:
1 | |
在 Linux 系统中,各种应用程序和服务会将重要的事件和错误信息写入到日志文件中。这些日志文件通常位于 /var/log/ 目录下。常见的日志记录工具包括 rsyslog 和 systemd-journald。通过分析这些日志文件,可以了解系统的运行状况,及时发现并解决潜在问题。
常用命令
| 命令 | 参数 | 说明 |
|---|---|---|
tail |
-f, -n <行数> |
显示文件末尾的内容。-f 参数可以实时追踪文件更新。-n 参数指定显示的行数。 |
head |
-n <行数> |
显示文件头的内容。-n 参数指定显示的行数。 |
cat |
连接文件并打印到标准输出。常用于查看整个日志文件。 | |
grep |
-i, -r, -n, -v, -A, -B |
在文件中搜索匹配指定模式的行。-i 忽略大小写,-r 递归搜索目录,-n 显示行号,-v 反向匹配,-A 显示匹配行之后的内容,-B 显示匹配行之前的内容。 |
less |
允许你前后滚动浏览文件,并且可以搜索。这对于大型日志文件非常有用。 | |
journalctl |
-u <单元>, -since, -until |
用于查询 systemd-journald 收集的日志。-u 指定单元(服务)名称,-since 指定起始时间,-until 指定结束时间。 |
dmesg |
显示内核环缓冲区的内容,包含内核启动信息和硬件相关的消息。 | |
find |
-name, -mtime, -size |
用于在文件系统中查找文件。-name 按名称查找,-mtime 按修改时间查找,-size 按大小查找。 |
awk |
{print $1} |
一种文本处理工具,可以用于从日志文件中提取特定字段。 |
sed |
s/old/new/g |
一种流编辑器,可以用于替换日志文件中的文本。 |
⚠️ 高危操作警告: 直接使用 > 重定向覆盖现有日志文件可能导致数据丢失。建议使用 >> 追加写入。
命令使用频率:
tail:★★★★grep:★★★★journalctl:★★★☆less:★★★☆cat:★★☆☆dmesg:★★☆☆
示例代码
案例 1: 查找 Nginx 错误日志
假设你需要查找 Nginx 错误日志文件中包含 “error” 关键字的行。
1 | |
预期输出示例:
1 | |
步骤解释:
tail -f /var/log/nginx/error.log: 实时显示 Nginx 错误日志文件的末尾内容。grep "error" /var/log/nginx/error.log: 在 Nginx 错误日志文件中搜索包含 “error” 关键字的行。tail -f /var/log/nginx/error.log | grep "error": 使用管道符|将tail命令的输出传递给grep命令进行过滤。
案例 2: 使用 journalctl 查看特定服务的日志
假设你需要查看 nginx.service 服务的日志。
1 | |
预期输出示例:
1 | |
步骤解释:
journalctl -u nginx.service: 显示nginx.service单元的所有日志。journalctl -u nginx.service --since "1 hour ago": 显示nginx.service单元最近 1 小时的日志。journalctl -u nginx.service --since "2023-10-26": 显示nginx.service单元从 2023 年 10 月 26 日开始的日志。journalctl -u nginx.service -f: 实时显示nginx.service单元的日志。
案例 3:查找特定时间段内的日志
要查找特定时间段内的日志,可以使用 journalctl 命令结合 --since 和 --until 参数。
1 | |
预期输出示例:
1 | |
步骤解释:
journalctl --since "2023-10-26 08:00:00" --until "2023-10-27 09:00:00": 显示从 “2023-10-26 08:00:00” 到 “2023-10-27 09:00:00” 这段时间内的所有系统日志。
Metadata
- Tags:
Linux,日志,故障排查,rsyslog,systemd-journald,tail,grep,journalctl - Categories:
系统管理,故障排查