返回列表 发布新帖
查看: 86|回复: 0

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

发表于 2025-4-18 14:49:43 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

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

在使用 Linux 系统进行开发、部署、运维的过程中,我们经常会遇到各种报错。很多报错看似吓人,实则背后逻辑非常清晰。本文将系统整理一些常见 Linux 报错及其处理方式,帮助大家快速定位并解决问题。
❗1. Permission denied(权限被拒绝)
错误示例:
  1. bash: ./deploy.sh: Permission denied
复制代码
常见原因:
  • 脚本没有执行权限;
  • 你不是拥有该文件的用户;
  • 文件系统为只读;
  • SELinux 拦截访问。
解决方案:
添加执行权限:
  1. chmod +x deploy.sh
复制代码
使用 sudo 执行:
  1. sudo ./deploy.sh
复制代码
查看是否挂载为只读:
  1. mount | grep ro,
复制代码
临时关闭 SELinux(测试用):
  1. setenforce 0
复制代码
❗2. command not found(命令不存在)
错误示例:
  1. nginx: command not found
复制代码
原因分析:
  • 程序未安装;
  • 路径未加入 $PATH 环境变量;
  • 命令拼写错误。
解决方法:
安装所需软件包:
  1. sudo apt install nginx       # Ubuntu/Debian
复制代码
  1. sudo yum install nginx       # CentOS/RHEL
复制代码
使用绝对路径:
  1. /usr/sbin/nginx
复制代码
查看路径是否在 $PATH 中:
  1. echo $PATH
复制代码
❗3. No such file or directory
错误示例:
  1. chmod 755 start.sh
  2. chmod: cannot access 'start.sh': No such file or directory
复制代码
常见原因:
  • 文件路径错误;
  • 文件名包含空格或特殊字符;
  • 脚本引用的解释器不存在(如 #!/bin/bash^M 出现回车符)。
解决方法:
确认文件是否存在:
  1. ls -l start.sh
复制代码
使用完整路径:
  1. chmod 755 /home/user/scripts/start.sh
复制代码
解决 ^M 问题(Windows 格式换行):
  1. dos2unix start.sh
复制代码
❗4. Address already in use(端口已被占用)
错误示例:
  1. bind(): Address already in use
复制代码
原因分析:
  • 端口已经被另一个服务绑定;
  • 启动多个实例时未释放端口。
解决方法:
查找占用该端口的进程:
  1. sudo lsof -i :80
复制代码
  1. sudo netstat -tlnp | grep :80
复制代码
杀掉对应进程:
  1. sudo kill -9 PID
复制代码
❗5. Segmentation fault(段错误)
  • 原因分析:
  • 访问了非法内存(通常是 C/C++ 程序);
指针越界、数组溢出等编程错误。
解决方法:
使用调试工具定位问题:
  1. gdb ./your_program core
复制代码
检查日志,缩小代码范围。
❗6. Connection refused(连接被拒绝)
错误示例:
  1. curl: (7) Failed to connect to localhost port 8000: Connection refused
复制代码
常见原因:
  • 服务未启动;
  • 服务配置只监听 127.0.0.1,而你在远程访问;
  • 防火墙阻止端口访问。
解决方法:
查看端口监听情况:
  1. ss -tlnp | grep :8000
复制代码
检查服务是否运行:
  1. systemctl status your-service
复制代码
放通防火墙端口:
  1. sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
复制代码
❗7. Read-only file system(只读文件系统)
错误示例:
  1. touch: cannot touch 'a.txt': Read-only file system
复制代码
原因分析:
  • 文件系统被挂载成只读(可能是异常断电后系统保护);
  • 设备错误。
解决方法:
查看挂载参数:
  1. mount | grep ' / '
复制代码
重挂为读写:
  1. sudo mount -o remount,rw /
复制代码
检查硬盘状态:
  1. dmesg | grep -i error
复制代码
❗8. crontab 不执行任务
问题表现:
  • 定时任务写好了,却根本没有触发。
排查步骤:
检查语法:
  1. crontab -l
复制代码
日志查看:
  1. grep CRON /var/log/syslog       # Ubuntu
复制代码
  1. grep CRON /var/log/cron         # CentOS
复制代码
确保命令使用的是完整路径。
🧠 小技巧:查看最近系统级错误日志
  1. dmesg | tail -n 50
复制代码
  1. 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 运维脚本常见报错与调试技巧」,感兴趣的可以关注一下 😊


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.083580 second(s), 6 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表