Linux服务器在长期运行或初次部署时,常会遇到一些反复出现的故障。这些问题可能来自权限配置、资源耗尽、网络异常或软件冲突。理解背后的机制并掌握排查路径,能大幅缩短恢复时间。

一、权限拒绝类问题
很多操作失败并不是程序有bug,而是当前用户缺乏对目标文件或设备的访问权限。例如在执行脚本时遇到“Permission denied”,首先要确认文件是否具备可执行位,以及用户是否属于对应用户组。
使用ls -l查看详细权限,若缺少x位可用chmod +x script.sh补充。对于系统级目录如/var/log,普通用户通常只能读不能写,此时应通过sudo提权或把用户加入adm组解决。注意盲目使用chmod 777会带来安全隐患,应优先采用最小权限原则。
# 查看文件权限 ls -l /opt/app/start.sh # 添加执行权限 chmod u+x /opt/app/start.sh # 以提权方式运行 sudo /opt/app/start.sh
二、磁盘空间与inode耗尽
磁盘满是最常见的导致服务异常的原因。但有一种隐蔽情况是空间未满,inode却已用尽,这时新建文件同样会报错“No space left on device”。
通过df -h看空间占用,用df -i看inode使用率。如果发现某个目录小文件极多,可用find配合rm清理,或用lsof | grep deleted找到已被删除但仍被进程占用的文件,重启进程释放空间。
# 查看空间与inode df -h /var df -i /var # 查找大于1MB的已删除未释放文件 lsof +L1 | awk '$5=="(deleted)" && $7>1048576'
| 现象 | 排查命令 | 常见原因 |
|---|---|---|
| 写入日志失败 | df -h | 块设备满 |
| 建文件报错 | df -i | inode耗尽 |
三、服务无响应或假死
某些Java或Python服务在运行数日后出现端口通但业务不处理的情况。这类“假死”多因线程阻塞、连接池耗尽或内存泄漏引起。
先用systemctl status确认服务状态,再用top或htop观察CPU与内存。若发现进程RES持续上涨,应抓取堆转储分析。临时恢复可重启服务,长期则需优化代码或调整JVM参数。
# 查看服务状态 systemctl status nginx # 查看进程资源 top -p $(pgrep -f myapp.jar)
四、DNS解析异常
能ping通IP却无法访问域名,一般是/etc/resolv.conf配置错误或DNS服务器不可达。容器环境里此问题更频繁。
可临时更换DNS为公共解析并测试,持久化需修改网络管理器配置。用dig或nslookup能快速定位是哪一层解析失败。
# 测试解析 dig @8.8.8.8 ippipp.com # 查看当前配置 cat /etc/resolv.conf
五、总结建议
面对Linux问题,核心是先隔离现象再逐层下钻:网络层、系统层、应用层。养成用日志(/var/log)、指标命令(df、top)和排除法定位的习惯,比直接搜索错误信息更高效。
建议新手搭建测试机主动制造故障练习恢复,比如写满磁盘、改错DNS,再按上述思路修复,这样真实线上出问题时不至于慌乱。
Linuxtroubleshootingsystem_admin修改时间:2026-08-07 11:51:24