跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    排查方法论

    遇到问题时,盲目搜索和试错往往浪费大量时间。本文介绍一套适用于 EL 系统的通用排查框架。

    1. 先观察,后行动 — 在修改任何配置之前,先收集足够的信息
    2. 从近到远 — 先检查最近的变更,再扩大排查范围
    3. 一次只改一个变量 — 每次只修改一项,验证后再改下一项
    4. 记录过程 — 记下你做了什么、看到了什么
    1. 明确问题现象

      能具体描述问题吗?“网站打不开”不够具体,“访问 80 端口返回 connection refused” 才是有效描述。

    2. 检查最近的变更

      查看最近的系统日志
      $ sudo journalctl --since "1 hour ago" --priority err
      查看最近安装/更新的包
      $ dnf history list --reverse | tail -20
    3. 检查服务状态

      查看相关服务的状态和日志
      $ sudo systemctl status <服务名>
      $ sudo journalctl -u <服务名> -n 50 --no-pager
    4. 检查资源

      磁盘空间
      $ df -h
      内存使用
      $ free -h
      CPU 和进程
      $ top -bn1 | head -20
    5. 检查网络

      端口监听状态
      $ sudo ss -tlnp
      防火墙规则
      $ sudo firewall-cmd --list-all
    6. 检查 SELinux

      SELinux 拒绝是 EL 系统上非常常见的问题来源:

      查看 SELinux 拒绝日志
      $ sudo ausearch -m avc -ts recent
      查看 SELinux 当前模式
      $ getenforce
    7. 查阅日志文件

      系统日志
      $ sudo journalctl -xe
      特定应用日志(以 nginx 为例)
      $ sudo tail -50 /var/log/nginx/error.log
    目标命令
    系统全部日志journalctl
    当前启动的日志journalctl -b
    指定服务日志journalctl -u sshd
    实时跟踪日志journalctl -f
    错误级别以上journalctl -p err
    指定时间范围journalctl --since "2024-01-01" --until "2024-01-02"
    • 不要第一时间关闭 SELinux — 先排查是否是 SELinux 策略问题
    • 不要随意 chmod 777 — 这会引入安全风险,应该找到正确的权限设置
    • 不要忽略磁盘空间 — /var/log 写满是非常常见的故障原因
    • 不要忘记防火墙 — 服务正常但外部访问不了,很可能是 firewalld 规则问题