lin 发表于 2025-4-18 14:49:43

🧩 Linux 常见报错信息解析与解决方案大全

本帖最后由 lin 于 2025-4-18 14:53 编辑

在使用 Linux 系统进行开发、部署、运维的过程中,我们经常会遇到各种报错。很多报错看似吓人,实则背后逻辑非常清晰。本文将系统整理一些常见 Linux 报错及其处理方式,帮助大家快速定位并解决问题。
❗1. Permission denied(权限被拒绝)
错误示例:
bash: ./deploy.sh: Permission denied常见原因:

[*]脚本没有执行权限;
[*]你不是拥有该文件的用户;
[*]文件系统为只读;
[*]SELinux 拦截访问。
解决方案:
添加执行权限:
chmod +x deploy.sh使用 sudo 执行:
sudo ./deploy.sh查看是否挂载为只读:
mount | grep ro,临时关闭 SELinux(测试用):
setenforce 0❗2. command not found(命令不存在)
错误示例:
nginx: command not found原因分析:

[*]程序未安装;
[*]路径未加入 $PATH 环境变量;
[*]命令拼写错误。
解决方法:
安装所需软件包:
sudo apt install nginx       # Ubuntu/Debiansudo yum install nginx       # CentOS/RHEL使用绝对路径:
/usr/sbin/nginx查看路径是否在 $PATH 中:
echo $PATH❗3. No such file or directory
错误示例:chmod 755 start.sh
chmod: cannot access 'start.sh': No such file or directory常见原因:

[*]文件路径错误;
[*]文件名包含空格或特殊字符;
[*]脚本引用的解释器不存在(如 #!/bin/bash^M 出现回车符)。
解决方法:
确认文件是否存在:
ls -l start.sh使用完整路径:
chmod 755 /home/user/scripts/start.sh解决 ^M 问题(Windows 格式换行):
dos2unix start.sh❗4. Address already in use(端口已被占用)
错误示例:
bind(): Address already in use原因分析:

[*]端口已经被另一个服务绑定;
[*]启动多个实例时未释放端口。
解决方法:
查找占用该端口的进程:
sudo lsof -i :80sudo netstat -tlnp | grep :80杀掉对应进程:
sudo kill -9 PID❗5. Segmentation fault(段错误)

[*]原因分析:
[*]访问了非法内存(通常是 C/C++ 程序);
指针越界、数组溢出等编程错误。
解决方法:
使用调试工具定位问题:
gdb ./your_program core检查日志,缩小代码范围。
❗6. Connection refused(连接被拒绝)
错误示例:
curl: (7) Failed to connect to localhost port 8000: Connection refused常见原因:

[*]服务未启动;
[*]服务配置只监听 127.0.0.1,而你在远程访问;
[*]防火墙阻止端口访问。
解决方法:
查看端口监听情况:
ss -tlnp | grep :8000检查服务是否运行:
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原因分析:

[*]文件系统被挂载成只读(可能是异常断电后系统保护);
[*]设备错误。
解决方法:
查看挂载参数:
mount | grep ' / '重挂为读写:
sudo mount -o remount,rw /检查硬盘状态:
dmesg | grep -i error❗8. crontab 不执行任务
问题表现:

[*]定时任务写好了,却根本没有触发。
排查步骤:
检查语法:
crontab -l日志查看:
grep CRON /var/log/syslog       # Ubuntugrep CRON /var/log/cron         # CentOS确保命令使用的是完整路径。
🧠 小技巧:查看最近系统级错误日志
dmesg | tail -n 50journalctl -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 运维脚本常见报错与调试技巧」,感兴趣的可以关注一下 😊


页: [1]
查看完整版本: 🧩 Linux 常见报错信息解析与解决方案大全