首页/系统/Linux 运维命令速查/systemctl mask 彻底屏蔽单元
systemd 与服务42 条

systemctl mask 彻底屏蔽单元

mask 把单元链接到 /dev/null,连依赖拉起都会被拒;比 disable 更彻底,用于强禁服务或隔离故障单元。

Linux 运维命令速查系统更新于 2026-10-13

mask 是什么

屏蔽把单元名链接到空设备,让 systemd 在任何启动路径上都拒绝它,包括被依赖关系拉起,这一点比禁用更彻底。它用于强禁服务或隔离故障单元,代价是可能打断依赖链,让上层服务启动失败。

基本信息

用途禁止单元被启动,含被依赖拉起
语法systemctl mask 单元名,解除用 unmask
与禁用对照禁用只取消开机自启,不阻止手动或依赖启动
状态查询is-enabled 显示为 masked

典型使用场景

  • 强禁服务:某服务在本机明确不该运行,连被依赖拉起都要拦住
  • 隔离故障单元:排障期临时屏蔽有问题的单元,避免被反复拉起
  • 替代方案接管:屏蔽自带服务,由自研组件承担同一职责
  • 维护窗口保护:变更期间阻止被依赖关系意外启动
  • 梳理依赖:屏蔽后观察哪些上层单元报错,反推耦合关系

常用示例

常用示例
systemctl mask firewalld          # 屏蔽
systemctl is-enabled firewalld    # 输出 masked
systemctl unmask firewalld        # 解除屏蔽
systemctl list-unit-files --state=masked | head   # 列出所有被屏蔽的单元

操作效果对照

操作效果注意
停止停止当前运行不阻止后续被启动
禁用取消开机自启手动与依赖启动仍然可行
屏蔽彻底禁止启动被依赖拉起也会失败
解除屏蔽恢复可启动单元文件必须仍然存在
列出被屏蔽单元审计用途确认没有遗留的临时屏蔽
屏蔽会拦截所有启动路径,临时屏蔽故障单元后要记录并尽快解除,否则运维容易遗忘。
屏蔽与停止是两件事:屏蔽不会停止正在运行的服务,需要时两个操作一起做。
单元文件已被软件包移除时解除屏蔽会报错,先确认文件是否还在。
屏蔽状态会覆盖启用状态:屏蔽期间执行启用命令不会恢复开机自启,必须先解除屏蔽再启用。
排障结束后用列表命令复核被屏蔽单元清单,避免遗留状态影响后续运维。

易错点

  • 屏蔽与停止是两件事,只屏蔽不停止会让正在运行的服务继续跑
  • 把被依赖的单元屏蔽掉会让上层服务启动失败,排障时先看依赖报错
  • 临时屏蔽后忘记解除,后续会遇到明明装了服务却起不来的困惑
  • 单元文件已被删除时解除屏蔽会报错,先确认软件包是否仍提供该单元

数据来源与参考

  • man 1 systemctl(mask)
  • man 5 systemd.unit

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌