最简洁可靠的方法是用 getenforce 命令判断,仅当输出为“Disabled”才表示 SELinux 真正关闭;sestatus 的 enabled/disabled 易误判,不推荐自动化使用;永久关闭需额外检查 /etc/selinux/config 中 SELINUX=disabled。

直接用 getenforce 命令判断最简洁可靠,它只输出一行结果,适合脚本中做条件判断。
用 getenforce 判断是否关闭
getenforce 返回三种可能值:Enforcing、Permissive、Disabled。只有返回 Disabled 才算真正关闭(SELinux 未加载)。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 在 Shell 脚本中可这样写:
if [[ "$(getenforce)" == "Disabled" ]]; then
echo "SELinux 已关闭"
else
echo "SELinux 未关闭(当前模式:$(getenforce))"
fi
- 注意大小写敏感,必须用
"Disabled",不能写成disabled或DISABLED - 该命令无需 root 权限,普通用户也能执行
避免误判:不要只看 sestatus 的 enabled/disabled
sestatus 输出中的 SELinux status: enabled 或 disabled 看似直观,但它的 enabled 实际包含 enforcing 和 permissive 两种开启状态。也就是说:
-
SELinux status: enabled≠ SELinux 正在强制拦截(可能是宽容模式) -
SELinux status: disabled才表示完全关闭 - 但
sestatus输出较冗长,解析不便,不推荐用于自动化判断
补充验证:检查配置文件是否设为 disabled
若需确认“永久关闭”配置是否已写入(比如部署脚本中要确保重启后仍关闭),可同时检查 /etc/selinux/config:
- 提取配置值:
grep "^SELINUX=" /etc/selinux/config | cut -d= -f2 | tr -d ' "' - 若结果为
disabled,说明配置文件已设为永久关闭(但需重启才生效) - 注意:运行时状态(
getenforce)和配置文件设置(/etc/selinux/config)是两个独立维度,须区分对待

















