你如何查看日志,做分析的? #
-
grep 命令 一个强大的文本搜索工具
如:
grep "hello" file.txt # 在 file.txt 中查找 "hello" grep "hello" *.txt常用选项
选项 说明 -i忽略大小写 -v反向匹配(显示不包含模式的行) -n显示匹配行的行号 -c统计匹配的行数 -r或-R递归搜索目录 -w匹配整个单词 -
tail -f是 Linux/Unix 系统中用于实时查看文件末尾内容的命令,常用于监控日志文件的更新。tail -f [选项] [文件] tail -f /var/log/syslog # 实时查看 syslog 日志 tail -f /var/log/nginx/access.log # 监控 Nginx 访问日志常用选项
选项 说明 -f实时跟踪文件变化(默认显示最后 10 行) -n [NUM]指定显示的行数(如 -n 20显示最后 20 行) -
less是一个功能强大的文件查看工具less /var/log/syslog # 查看系统日志 less -N access.log # 显示行号搜索内容
快捷键 功能 /关键词向下搜索(按 n跳转到下一个匹配项)?关键词向上搜索(按 N跳转到上一个匹配项)n跳到下一个匹配结果 N跳到上一个匹配结果 跳转位置
快捷键 功能 g跳到文件开头 G跳到文件末尾 10g跳到第 10 行 50%跳到文件 50% 位置 浏览文件
快捷键 功能 空格或Page Down向下翻一页 b或Page Up向上翻一页 ↓或Enter向下翻一行 ↑向上翻一行 -
wc 用于统计文件或输入流的行数、单词数、字节数的命令
wc [选项] [文件...] wc file.txt常用选项
选项 功能 -l只统计行数 -w只统计单词数(以空格分隔) -c只统计字节数 -
sort用于对文本文件或输入流进行排序的命令。sort [选项] [文件] sort file.txt # 按字母顺序排序 sort -r file.txt # 反向排序(Z-A) sort -n numbers.txt # 按数值大小排序常用选项
选项 描述 -n按数值大小排序 -r反向排序(降序) -k n按第 n 列排序 -t c指定列分隔符为字符 c -u去除重复行 -f忽略大小写 -b忽略行首空白字符 -o 文件将结果输出到指定文件 -
uniq用于过滤或统计连续重复行的命令uniq [选项] [输入文件 [输出文件]] sort file.txt | uniq # 先排序再去重 uniq sorted.txt # 直接处理已排序文件 sort file.txt | uniq -c # 显示每行出现次数常用选项
选项 描述 -c在每行前显示重复次数 -d仅显示重复的行 -u仅显示不重复的行 -i忽略大小写 -f N跳过前 N 个字段的比较 -s N跳过前 N 个字符的比较 -
awk是一种强大的文本处理工具和编程语言,特别适合处理结构化文本数据(如日志、CSV等)。
查网络与进程 #
- netstat / ss:查看网络连接。
- 举例:查看8080端口被谁占用:ss -tlnp | grep 8080。
- lsof:查看打开的文件/端口。举例:查看某个进程打开了哪些文件:lsof -p
。
1.1 进程管理命令(核心) #
| 命令 | 参数说明 | 使用场景 | 示例 |
|---|---|---|---|
ps |
-ef:全格式显示所有进程;-aux:显示 CPU / 内存占比 | 查看进程 PID、状态、启动命令 | `ps -ef |
top |
-H:显示线程;-p PID:监控指定进程 | 实时监控进程 CPU / 内存 / Load | top(全局)top -H -p 1234(查进程 1234 的线程) |
htop |
top 增强版,可视化操作 | 直观查看进程资源 | htop |
lsof |
-p PID:查进程打开文件;-i: 端口:查端口占用 | 句柄排查、端口占用、文件锁 | lsof -p 1234(查进程打开文件)lsof -i :8080 |
kill |
-9:强制杀死;-15:优雅退出 | 终止异常进程 | kill -9 1234(强制杀)kill 1234(优雅退出) |
nohup |
后台运行,日志输出到 nohup.out | 启动后台服务 | nohup ./master & |
1.2 系统资源查看命令 #
| 命令 | 参数 | 作用 | 示例 |
|---|---|---|---|
uptime |
- | 查看系统 Load、运行时间、在线用户 | uptime → 10:00:00 up 10 days, 2 users, load average: 0.50, 0.60, 0.70 |
free |
-h:人性化单位;-m:MB 显示 | 查看内存总容量 / 已用 / 可用 / 缓存 | free -h |
df |
-h:人性化;-i:查看 inode | 查看磁盘使用率、挂载点 | df -h |
du |
-sh:统计目录总大小;-s:汇总 | 查看文件 / 目录占用空间 | du -sh ./*(查当前目录大小) |
iostat |
-x 1:每秒刷新,显示扩展 IO 信息 | 查看磁盘 IO 使用率、响应时间 | iostat -x 1 |
iotop |
- | 实时查看进程 IO 占用 | iotop |
1.3 网络与端口命令 #
| 命令 | 作用 | 示例 |
|---|---|---|
netstat -tulpn |
查看所有 TCP/UDP 监听端口、进程 PID | `netstat -tulpn |
ss -tulpn |
比 netstat 更快的端口查看工具 | ss -tulpn |
telnet IP 端口 |
测试端口连通性 | telnet 127.0.0.1 8080 |
ping IP |
测试网络连通性 | ping 192.168.1.100 |
curl IP:端口 |
测试 HTTP 服务可用性 | curl 127.0.0.1:8080/health |
tcpdump |
抓包分析网络请求 | tcpdump -i any port 8080 |
1.4 日志与文本操作命令 #
| 命令 | 作用 | 示例 |
|---|---|---|
tail -f 日志文件 |
实时刷新日志 | tail -f master.log |
tail -n 1000 日志文件 |
查看最后 1000 行日志 | tail -n 1000 master.log |
grep "关键字" 日志文件 |
搜索日志关键字 | grep "error" master.log |
grep -C 10 "关键字" 日志 |
显示关键字前后 10 行 | grep -C 10 "panic" master.log |
vim 文件名 |
编辑文件 | vim app.ini |
1.5 权限与系统配置命令 #
| 命令 | 作用 | 示例 |
|---|---|---|
chmod 755 文件名 |
修改文件权限 | chmod 755 master |
chown 用户:用户组 文件名 |
修改文件归属 | chown root:root master |
ulimit -n |
查看 / 修改文件最大句柄数 | ulimit -n 65535 |
systemctl status 服务 |
查看系统服务状态 | systemctl status redis |
1.6 Go 专属排查命令 #
| 命令 | 作用 |
|---|---|
go tool pprof http://IP:端口/debug/pprof/profile |
采集 CPU 性能分析(30s) |
go tool pprof http://IP:端口/debug/pprof/heap |
采集内存堆分析 |
go tool pprof http://IP:端口/debug/pprof/goroutine |
查看协程数量 / 泄漏 |
go tool pprof http://IP:端口/debug/pprof/block |
查看阻塞 / 锁竞争 |