附录 A · 02 常见报错与排查三列表


文档摘要

附录 A · 02 常见报错与排查三列表 本节摘要:遇到报错时,按「报错信息 → 最可能原因 → 第一步排查方向」三列定位。覆盖 Linux 日常最常见的 20 来个报错,从权限、空间、端口、命令缺失到文件占用。这张表的价值在于「把报错翻译成下一步动作」——你不用记报错的全部含义,只要知道「看到它先敲什么」。 内容来源:综合全书各章踩坑整理。 一、权限与认证类 报错信息 | 最可能原因 | 第一步排查 | 无读写/执行权限 | 看权限位;是否需要 | 命令不存在或不在 PATH | ;确认装了( / ); | sudo 的 PATH 与你不同 | 用命令绝对路径( ) | 你无权用 sudo | 用 root 把你加入 sudo 组 / sudoers;或 加规则 (SSH) |

附录 A · 02 常见报错与排查三列表

本节摘要:遇到报错时,按「报错信息 → 最可能原因 → 第一步排查方向」三列定位。覆盖 Linux 日常最常见的 20 来个报错,从权限、空间、端口、命令缺失到文件占用。这张表的价值在于「把报错翻译成下一步动作」——你不用记报错的全部含义,只要知道「看到它先敲什么」。

内容来源:综合全书各章踩坑整理。

一、权限与认证类

报错信息 最可能原因 第一步排查
Permission denied 无读写/执行权限 ls -l 看权限位;是否需要 sudo
command not found 命令不存在或不在 PATH which 命令;确认装了(apt install/yum install);echo $PATH
sudo: 用户: command not found sudo 的 PATH 与你不同 用命令绝对路径(/usr/bin/xxx)
user is not in the sudoers file 你无权用 sudo 用 root 把你加入 sudo 组 / sudoers;或 visudo 加规则
Permission denied (publickey) (SSH) 密钥认证失败 检查公钥是否上传、~/.ssh 权限 700、私钥 600
Host key verification failed (SSH) 服务器指纹变了 确认服务器确实换过,ssh-keygen -R 主机 清旧记录

二、文件与空间类

报错信息 最可能原因 第一步排查
No such file or directory 路径不存在 路径拼对没?相对路径的基准对吗?ls 逐层确认
No space left on device 磁盘满 df -h 看分区;du -sh * | sort -h 找大目录;删日志/旧文件
Disk quota exceeded 用户配额满 quota 查你的配额;删自己的大文件
删大文件空间没释放 进程还持有该文件 fd lsof | grep deleted 找进程,重启它
Text file busy 可执行文件正被运行,无法覆盖 先停掉运行它的进程,再覆盖
device is busy (umount) 目录有文件被占用 lsof +D /mnt 找占用进程,关掉
too many levels of symbolic links 软链接循环(指向自己) 检查软链接目标,修复循环

三、进程与端口类

报错信息 最可能原因 第一步排查
Address already in use 端口被占 ss -tlnp | grep 端口lsof -i :端口 找占用进程
Connection refused 目标端口没服务监听 服务起了没?绑 0.0.0.0 还是 127.0.0.1?
Connection timed out 防火墙丢包 / 主机不可达 ping 测链路;检查防火墙/安全组;traceroute
fork: Resource temporarily unavailable PID 或用户进程数超限 查僵尸堆积(ps aux | grep Z);查 ulimit
Too many open files 文件描述符耗尽 lsof -p PID | wc -l 看 fd 数;调 ulimit -n 或修代码泄漏
僵尸进程堆积 父进程不 wait 收尸 找父进程 ps -o ppid= -p 僵尸PID,kill -CHLD 父PID 或杀父进程
kill -9 杀不掉的进程 D 状态(不可中断睡眠) cat /proc/PID/stack 看卡在哪;通常等 IO 返回

四、命令与脚本类

报错信息 最可能原因 第一步排查
binary operator expected (脚本) 变量含空格未加引号 变量用 "$var" 包裹
unbound variable (set -u) 用了未定义变量 检查变量名拼写;设默认 ${var:-默认}
cron 任务不触发/失败 环境/路径/输出问题 命令用绝对路径、>> log 2>&1、脚本有 #!/bin/bash
curl: (7) Failed to connect 端口没开或被防火墙挡 ss -tlnp 确认监听;telnet 主机 端口 测连通
curl: (28) timed out 连接超时 --max-time 设短些;查网络/防火墙
curl: (60) SSL certificate problem TLS 证书不受信 公开站:补 CA;内网/自签:-k 跳过(⚠️)
重定向无权限 (> /root/file) 重定向是 Shell 做的,没 sudo cmd | sudo tee 文件

五、压缩与归档类

报错信息 最可能原因 第一步排查
tar: Error exit delayed tar 解包时某文件失败 解压目录权限够吗?空间够吗?
解压后文件到处都是 归档没有顶层目录 解压前 tar -tf 看结构;用 -C 目录 解到指定位置
中文文件名乱码(zip) 编码不一致 unzip -O GBK 文件

排查通用方法论

遇到任何报错,按这个顺序走,通常能在第 2-3 步定位:

  1. 读懂报错的字面含义——它说什么错?权限?空间?找不到?
  2. 回到相关章节——权限问题回第 5 章、进程问题回第 6 章、网络问题回第 7 章。
  3. 用速查表第 01 节的工具查现状——ls -l/df -h/ss -tlnp/ps aux
  4. 如果常规手段都失败——上终极武器:lsof(谁占资源)、strace(程序卡在哪)。

下一节是「未收录命令导航」——本书没讲的 500 多条命令怎么查。


发布者: 作者: 灏天文库 转发
评论区 (0)
U