|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 lin 于 2025-4-18 14:53 编辑
在使用 Linux 系统进行开发、部署、运维的过程中,我们经常会遇到各种报错。很多报错看似吓人,实则背后逻辑非常清晰。本文将系统整理一些常见 Linux 报错及其处理方式,帮助大家快速定位并解决问题。
❗1. Permission denied(权限被拒绝)
错误示例:
- bash: ./deploy.sh: Permission denied
复制代码 常见原因:
- 脚本没有执行权限;
- 你不是拥有该文件的用户;
- 文件系统为只读;
- SELinux 拦截访问。
解决方案:
添加执行权限:
使用 sudo 执行:
查看是否挂载为只读:
临时关闭 SELinux(测试用):
❗2. command not found(命令不存在)
错误示例:
原因分析:
- 程序未安装;
- 路径未加入 $PATH 环境变量;
- 命令拼写错误。
解决方法:
安装所需软件包:
- sudo apt install nginx # Ubuntu/Debian
复制代码- sudo yum install nginx # CentOS/RHEL
复制代码 使用绝对路径:
查看路径是否在 $PATH 中:
❗3. No such file or directory
错误示例:- chmod 755 start.sh
- chmod: cannot access 'start.sh': No such file or directory
复制代码 常见原因:
- 文件路径错误;
- 文件名包含空格或特殊字符;
- 脚本引用的解释器不存在(如 #!/bin/bash^M 出现回车符)。
解决方法:
确认文件是否存在:
使用完整路径:
- chmod 755 /home/user/scripts/start.sh
复制代码 解决 ^M 问题(Windows 格式换行):
❗4. Address already in use(端口已被占用)
错误示例:
- bind(): Address already in use
复制代码 原因分析:
- 端口已经被另一个服务绑定;
- 启动多个实例时未释放端口。
解决方法:
查找占用该端口的进程:
- sudo netstat -tlnp | grep :80
复制代码 杀掉对应进程:
❗5. Segmentation fault(段错误)
- 原因分析:
- 访问了非法内存(通常是 C/C++ 程序);
指针越界、数组溢出等编程错误。
解决方法:
使用调试工具定位问题:
检查日志,缩小代码范围。
❗6. Connection refused(连接被拒绝)
错误示例:
- curl: (7) Failed to connect to localhost port 8000: Connection refused
复制代码 常见原因:
- 服务未启动;
- 服务配置只监听 127.0.0.1,而你在远程访问;
- 防火墙阻止端口访问。
解决方法:
查看端口监听情况:
检查服务是否运行:
- systemctl status your-service
复制代码 放通防火墙端口:
- sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
复制代码 ❗7. Read-only file system(只读文件系统)
错误示例:
- touch: cannot touch 'a.txt': Read-only file system
复制代码 原因分析:
- 文件系统被挂载成只读(可能是异常断电后系统保护);
- 设备错误。
解决方法:
查看挂载参数:
重挂为读写:
- sudo mount -o remount,rw /
复制代码 检查硬盘状态:
❗8. crontab 不执行任务
问题表现:
排查步骤:
检查语法:
日志查看:
- grep CRON /var/log/syslog # Ubuntu
复制代码- grep CRON /var/log/cron # CentOS
复制代码 确保命令使用的是完整路径。
🧠 小技巧:查看最近系统级错误日志
- journalctl -xe # 系统报错详细日志
复制代码 ✅ 总结
报错关键字 | 可能原因 | 建议解决方案简述 | Permission denied | 权限不足、无执行权限 | chmod +x、sudo | command not found | 未安装、PATH问题 | 安装软件、检查环境变量 | No such file | 文件不存在、路径错误 | 使用绝对路径、检查大小写 | Address in use | 端口被占用 | 查看端口进程、kill | Connection refused | 服务未运行、配置不当 | 检查监听状态、防火墙放通 | Segmentation fault | 非法内存访问 | 使用 GDB 调试程序 | Read-only FS | 磁盘或系统挂只读模式 | remount、检查硬盘 | 如果你也遇到过奇怪的 Linux 报错,欢迎在评论区留言,我们一起交流!
后续我也会整理一篇「Linux 运维脚本常见报错与调试技巧」,感兴趣的可以关注一下 😊
|
|