Linux初学者常见报错指南:10类典型错误及解决方案
🐧 每个Linux新手都逃不过的报错噩梦!本文整理了10类最常见错误,附详细解决方案,建议收藏备用!
❌ 错误1:Permission denied(权限不足)
$ ./script.sh
bash: ./script.sh: Permission denied
✅ 解决方案:
# 添加执行权限
chmod +x script.sh
# 或者使用bash解释器执行(无需执行权限)
bash script.sh
💡 原理:Linux文件需要执行权限才能直接运行。新手常误以为有文件就能运行。
❌ 错误2:Command not found(命令找不到)
$ conda
bash: conda: command not found
$ python script.py
bash: python: command not found
✅ 解决方案:
# 1. 检查是否安装
which conda # 无输出说明没装
which python # 无输出说明没装
# 2. 添加到环境变量(永久生效)
echo 'export PATH="/home/user/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 3. 使用绝对路径
/home/user/miniconda3/bin/python script.py
❌ 错误3:No such file or directory(文件不存在)
$ cd mydata
bash: cd: mydata: No such file or directory
$ cat result.txt
cat: result.txt: No such file or directory
✅ 解决方案:
# 1. 确认当前位置
pwd
# 2. 列出当前目录内容
ls -la
# 3. 使用Tab键自动补全路径(防手误)
cd myd[Tab键]
# 4. 确认文件名大小写(Linux区分大小写)
ls | grep -i result
💡 常见原因:拼写错误、大小写不对、路径不对、文件真的不存在。
❌ 错误4:Too many arguments(参数太多)
$ cd my data folder
bash: cd: too many arguments
✅ 解决方案:
# 方法1:用引号包裹
cd "my data folder"
# 方法2:使用转义符
cd my\ data\ folder
# 方法3:改名(推荐,避免后续麻烦)
mv "my data folder" my_data_folder
cd my_data_folder
💡 原理:Linux用空格分隔参数,my data folder会被当成3个参数。
❌ 错误5:Segmentation fault(段错误)
$ ./program
Segmentation fault (core dumped)
✅ 解决方案:
# 1. 检查内存是否充足
free -h
# 2. 检查输入文件格式是否正确
head -5 input.txt # 查看文件内容
file input.txt # 检查文件类型
# 3. 使用gdb调试(针对自己编译的程序)
gdb ./program
run
bt # 查看调用栈
# 4. 检查软件版本兼容性
program --version
💡 常见原因:内存溢出、输入文件损坏、软件bug、版本不兼容。
❌ 错误6:Out of memory(内存不足)
Out of memory: Kill process 12345 (python) score 901 or sacrifice child
Killed process 12345 (python) total-vm:5242800kB
✅ 解决方案:
# 1. 查看内存使用情况
free -h
top # 按M排序看内存占用
# 2. 减少并行线程数
program -t 4 # 原来用16线程,改为4线程
# 3. 分块处理大数据
split -l 1000000 bigfile.txt chunk_
# 4. 申请更多内存或使用集群
# 或者使用磁盘缓存替代内存
❌ 错误7:Connection refused/refused(连接拒绝)
$ ssh user@server
ssh: connect to host server port 22: Connection refused
$ wget http://example.com/file.txt
Connecting to example.com... failed: Connection refused.
✅ 解决方案:
# 1. 检查网络连接
ping baidu.com
# 2. 检查端口是否开放
nc -zv server 22 # 测试SSH端口
# 3. 检查防火墙设置
sudo ufw status # Ubuntu
sudo iptables -L # CentOS
# 4. 检查服务是否运行
sudo systemctl status sshd
# 5. 检查代理设置(如果在内网)
env | grep -i proxy
❌ 错误8:Syntax error(语法错误)
$ bash script.sh
script.sh: line 5: syntax error near unexpected token `do'
script.sh: line 5: `for i in *.txt do'
✅ 解决方案:
# 1. 检查语法(bash脚本)
bash -n script.sh # 只检查语法不执行
# 2. 常见错误修正
# 错误:for i in *.txt do
# 正确:for i in *.txt; do
# 3. 检查换行符(从Windows复制的问题)
file script.sh
# 如果是 CRLF,转换:
dos2unix script.sh
# 4. 使用shellcheck检查
shellcheck script.sh
❌ 错误9:Disk quota exceeded(磁盘配额超限)
$ mkdir new_folder
mkdir: cannot create directory 'new_folder': Disk quota exceeded
$ ./analysis.sh
write error: Disk quota exceeded
✅ 解决方案:
# 1. 查看磁盘使用情况
df -h
du -sh ~/* | sort -h
# 2. 清理大文件
find ~ -type f -size +1G # 找大于1G的文件
rm -rf ~/tmp/* # 清理临时文件
conda clean --all # 清理conda缓存
# 3. 申请扩容或转移数据
# 联系管理员或使用外部存储
❌ 错误10:Dependency missing(依赖缺失)
$ python script.py
ImportError: No module named 'pandas'
$ ./program
error while loading shared libraries: libz.so.1: cannot open
✅ 解决方案:
# Python包缺失
pip install pandas
# 或
conda install pandas
# 系统库缺失(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install libz-dev
# 系统库缺失(CentOS/RHEL)
sudo yum install zlib-devel
# 查看缺少哪些依赖
ldd ./program | grep not found
🎯 通用排错技巧
📖 查看帮助
command --help
man command
🔍 搜索错误
复制错误信息到Google
Stack Overflow找答案
🐛 逐步调试
加 -v 或 --verbose
用set -x调试脚本
💡 最后的话: 报错不可怕,关键是学会读错误信息、查文档、用搜索引擎。每个Linux高手都是从这些报错中成长起来的!
收藏本文,遇到报错不慌!🚀