Linux问题总结

你如何查看日志,做分析的? #

  • 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 向下翻一页
    bPage 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、运行时间、在线用户 uptime10: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 查看阻塞 / 锁竞争