本文最后更新于92 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
这是面试、实习、工作中 使用频率极高 的技能。
以后遇到:
Nginx 502
网站打不开
Java 服务报错
Docker 容器异常退出
MySQL 启动失败
程序偶发错误
接口 500
第一反应:
看日志。
一、今日目标
今天学完你要能做到:
1、知道 Linux 日志一般放哪里
2、会看日志最后几行
3、会实时追踪日志
4、会在日志里搜索关键词
5、会初步分析报错信息
6、建立“出问题先看日志”的习惯
今天最重要的一句话:
不会看日志,就像医生不会看检查报告。
二、日志是什么
简单理解:
日志 = 程序运行记录。
比如:
什么时候启动
什么时候关闭
有没有报错
谁访问过
访问是否成功
数据库是否连接失败
配置是否加载失败
都会记下来。
比如 Nginx:
访问日志:
/var/log/nginx/access.log
错误日志:
/var/log/nginx/error.log
比如 Linux 系统日志:
在很多发行版中常见于:
/var/log/messages
或者使用 systemd 日志:
journalctl
所以出问题时:
不是猜。
而是:
查日志。
三、cat(先认识)
看文件:
cat 文件名
例如:
cat /etc/passwd
会一次性全部打印。
缺点:
日志大时会刷屏。
所以线上一般少直接 cat 大日志。
四、more / less(推荐)
看大文件:
less 文件名
例如:
less /var/log/messages
优点:
可以上下翻。
退出:
q
搜索:
/关键词
例如:
/error
回车。
继续找下一个:
n
这个很常用。
五、tail(超级高频)
看最后几行:
tail 文件名
例如:
tail /var/log/messages
默认最后 10 行。
看最后 50 行:
tail -n 50 /var/log/messages
这非常常用。
因为:
报错通常在最后。
六、实时追踪 tail -f(核心)
生产最常用之一:
tail -f 文件名
例如:
tail -f /var/log/nginx/access.log
有人访问网站:
立刻刷新一行。
看错误日志:
tail -f /var/log/nginx/error.log
有报错:
马上出现。
停止:
Ctrl + C
这个命令以后天天用。
七、grep 搜索(神技)
搜索 error:
grep error 文件名
例如:
grep error /var/log/messages
搜索 nginx:
grep nginx /var/log/messages
忽略大小写:
grep -i error 文件名
匹配:
ERROR
error
Error
统计次数:
grep error 文件名 | wc -l
非常强。
八、组合拳(高频)
最近 100 行里找 error
tail -100 文件名 | grep error
实时看错误
tail -f 文件名 | grep error
看启动日志
journalctl -u nginx
查看 Nginx Nginx 服务日志。
实时:
journalctl -u nginx -f
这个在 systemd 机器上很强。
九、你今天练习
直接敲:
cat /etc/passwd
less /etc/passwd
tail /etc/passwd
tail -n 5 /etc/passwd
grep root /etc/passwd
grep bash /etc/passwd
如果有 Nginx:
tail -f /var/log/nginx/access.log
然后浏览器访问网站。
观察日志变化。
十、面试高频题
问:网站 502 怎么查?
回答:
先看 Nginx error.log
再看 upstream 服务日志
确认服务是否启动
确认端口是否监听
确认资源是否足够
问:线上问题第一反应?
回答:
先看日志。
问:怎么实时看日志?
回答:
tail -f xxx.log
问:怎么搜索 error?
回答:
grep error xxx.log
十一、今天复盘模板
# Code 4 云计算复盘 Day 6
今日主题:
Linux 日志分析
掌握命令:
cat
less
tail
tail -f
grep
journalctl
今天理解:
日志是程序运行记录,线上问题第一反应应该先看日志。
面试表达:
排障时我会优先查看服务日志,通过 tail 查看最近日志,通过 tail -f 实时追踪,通过 grep 搜索 error / timeout / failed 等关键字定位问题。