Linux服务器常见报错解决:零基础解决Linux服务器常见
刚接触Linux服务器时,遇到报错很容易慌。
其实大部分常见报错都有固定的排查流程,不需要太多经验就能解决。
下面我把工作中最常遇到的几类问题拆成5步,每一步都带命令和截图思路,你可以直接复制操作。
排查报错前的准备工作
在动手之前,确保你有一个能用的终端工具(Windows推荐Putty或Windows Terminal自带SSH,Mac/Linux直接用系统终端)。
另外记好服务器的IP、用户名和密码。
如果SSH已登不上,确认网络能Ping通,防火墙没有禁掉22端口。
SSH连接失败:先检查这两项
SSH连接报错最常见的是Connection refused或Permission denied。
- 检查服务是否启动:运行
systemctl status sshd。如果没启动,执行sudo systemctl start sshd再sudo systemctl enable sshd。 - 检查端口是否被占用:
ss -tlnp | grep 22。如果22端口被其他程序占用,修改/etc/ssh/sshd_config中的Port为别的值(如2222),重启服务:sudo systemctl restart sshd。
注意:修改端口后,下次连接时需要指定端口:ssh -p 2222 user@你的IP。
Permission denied:文件权限与用户身份
当你运行./script.sh却提示Permission denied,说明脚本没有执行权限。
用ls -l 脚本名查看权限,如果缺少x权限,运行 chmod +x 脚本名。
如果是普通目录cd被拒,检查目录权限至少要有r-x(读和执行)。
更常见的是sudo权限问题:普通用户没有root权限时,命令前加sudo即可,但如果/etc/sudoers配置有误,会报user is not in the sudoers file。
这时候只能找管理员把自己加入wheel或sudo组,或编辑/etc/sudoers(用visudo命令)。
磁盘空间不足:一招找到大文件
服务突然报错“No space left on device”,大部分是磁盘满了。
用df -h查看磁盘使用率。
然后找大文件:du -sh /* 2>/dev/null | sort -rh | head -10,这个命令列出根目录下最大的10个目录。
常见元凶有日志文件(/var/log)、缓存(/tmp)和容器镜像。
清理日志用journalctl --vacuum-size=100M(保留100MB),或直接删除/var/log/*.log中不需要的旧日志。
删除前确认不是系统正在写入的日志。
端口冲突:让服务绑定到指定端口
启动Web服务(Nginx、Apache)时报Address already in use。
先用lsof -i :80或ss -tlnp | grep 80找出占用80端口的进程ID(PID)。
然后根据情况处理:
- 如果占用进程是其他服务(如旧的Nginx),
sudo systemctl stop 新服务名,再修改配置文件将端口改成8080或其他未占用的端口。 - 如果想保留原端口,就干掉占用进程:
sudo kill -9 进程PID(注意:别误杀系统进程)。
改端口后重启服务,再ss -tlnp | grep 新端口号确认监听成功。
避坑:不要随意运行chmod 777
很多新人为了省事直接对整个目录chmod 777,这会导致严重的安全风险。
正确的做法是只给需要的最小权限。
比如网站目录/var/www/html,建议权限设为755(目录)和644(文件)。
如果想批量设置,用find /var/www/html -type d -exec chmod 755 {} \;和find /var/www/html -type f -exec chmod 644 {} \;。
验证报错是否修复的正确方法
每个操作完成后,都要模拟故障发生时的场景来验证。
例如:
- SSH问题修复后,重新用
ssh user@IP试连一次。 - 权限修复后,重新执行原来报错的命令。
- 磁盘清理后,运行
df -h确认使用率下降。 - 端口修改后,用
curl http://服务器IP:新端口检查服务是否正常响应。
同时查看服务日志:sudo journalctl -u 服务名 --since "5 minutes ago",没有报错才算真的解决。
如果你正在处理Linux服务器常见报错解决,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
多练几次,这些报错对你来说就不再是难题了。