1. Linux疑难问题全景概览
作为从Windows转向Linux的老用户,我清楚地记得第一次面对命令行时的茫然无措。那些在Windows下点几下鼠标就能完成的操作,在Linux中却需要输入神秘命令。经过15年的Linux系统运维,我整理了这份覆盖90%常见问题的实战手册。不同于官方文档的学院派风格,这里只聚焦那些真正让新手头疼、老手也常踩坑的典型场景。
Linux系统的复杂性源于其高度模块化设计。内核、Shell、桌面环境、软件包管理器各司其职,这种架构带来了灵活性,也埋下了兼容性隐患。比如同一个网络配置,在Ubuntu和CentOS上可能要用不同工具;一个在GNOME桌面正常的程序,切换到KDE可能就显示异常。理解这些底层逻辑,才能从根本上解决问题。
2. 高频命令故障排查手册
2.1 权限管理经典案例
"Permission denied"可能是Linux新手遇到的第一堵墙。上周就有同事误用chmod -R 777 /导致系统崩溃。正确的权限修复应该分三步走:
- 确认当前权限状态:
bash复制ls -l /path/to/file
stat -c "%a %n" /path/to/file
- 针对性设置权限(以web目录为例):
bash复制find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chown -R www-data:www-data /var/www/html
- 特殊场景处理(如SUID程序):
bash复制chmod u+s /usr/bin/passwd # 设置SUID位
警告:永远不要递归修改根目录权限!建议先在测试环境验证命令效果。
2.2 磁盘空间紧急救援
当df -h显示根分区爆满时,按这个优先级清理:
- 快速定位大文件:
bash复制ncdu / # 需要安装ncdu工具
du -sh * | sort -h # 当前目录大小排序
- 清理日志文件(以journalctl为例):
bash复制journalctl --vacuum-size=200M # 保留最近200MB日志
find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
- 处理残留软件包:
bash复制apt autoremove # Debian系
dnf autoremove # RHEL系
最近遇到一个典型案例:/var/lib/docker/overlay2占用50GB,最终发现是容器日志未做轮转限制。解决方案是在/etc/docker/daemon.json中添加:
json复制{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
3. 网络连接疑难杂症
3.1 SSH连接故障树
当ssh连接超时时,按这个流程图排查:
- 检查基础连通性:
bash复制ping target_ip
telnet target_ip 22
- 验证服务状态:
bash复制systemctl status sshd
ss -tulnp | grep 2
