首页/系统/信创系统运维速查/systemctl enable 开机自启管理
服务与运维65 条

systemctl enable 开机自启管理

enable/disable 控制服务是否随开机启动,is-enabled 查询当前状态;enable --now 等于同时启动。批量为服务做自启取舍是交付初检的常规动作。

信创系统运维速查系统更新于 2026-10-13

enable 与开机自启

在 systemd 里,服务「当前是否运行」和「开机是否自动启动」是两件独立的事:start 只管这一次,enable 才决定下次开机拉不拉起来。enable 的本质是在对应启动目标目录下建立软链,把单元挂进开机流程;disable 则删除这条软链,但不会动正在运行的进程。交付与巡检时最常做的就是批量为服务做自启取舍,把不需要的服务关掉,既减少资源占用也收敛暴露面。

基本信息

启用自启systemctl enable 单元名
禁用自启systemctl disable 单元名
启用并立即启动systemctl enable --now 单元名
停止并禁用systemctl disable --now 单元名
状态查询systemctl is-enabled 单元名
常见取值enabled、disabled、static、masked、indirect

典型使用场景

  • 交付初检:列出自启服务清单逐项核对,关掉不需要的默认服务
  • 上线新服务:装完立即设自启并启动,避免重启后业务中断
  • 故障后恢复:确认关键服务已设自启,防止下次重启漏启
  • 临时停用:只在当前窗口停掉服务但保留自启配置
  • 安全收敛:把用不到的服务禁用并屏蔽,减少可被利用的入口
  • 核对差异:两台机器对比自启清单,快速找出配置漂移

示例

示例
systemctl enable --now nginx                     # 设自启并立即启动
systemctl disable --now telnet.socket            # 停止并取消自启
systemctl is-enabled chronyd                     # 查单个服务的自启状态
systemctl list-unit-files --state=enabled | head -40   # 列出所有已设自启的单元
systemctl list-unit-files --state=disabled | head -20  # 看看还有哪些是默认关闭的

is-enabled 取值读法

取值含义说明
enabled已设开机自启符合预期,按需保留
disabled未设自启关键服务处在此状态需确认
static没有安装段,无法直接 enable由其它单元或目标拉起
masked已被屏蔽比禁用更强制,改回需先解除屏蔽
indirect间接启用由别的单元引用而生效
static 表示单元文件里没有安装段,它不是错误状态,也不能直接 enable,通常由目标或其它单元拉起。看到 static 时不要盲目改成 enabled,应先弄清它究竟由谁负责启动。
disable 只取消开机自启,不会停止正在运行的服务。想「立刻停掉且以后不再启动」,要写 disable --now。反过来,停用安全组件(防火墙、审计服务)前应先确认合规要求与替代控制措施。

易错点

  • 以为 disable 会顺带停服务,结果进程还在跑、端口还开着,误判为禁用没生效
  • 交付时不核对自启清单,把图形、打印等无关服务带着上线,既占资源又扩大暴露面
  • 把 static 的单元强行 enable,操作报错后误以为系统有问题
  • 屏蔽操作后忘记解除,后续无论怎么启动都失败,排查方向被严重带偏

数据来源与参考

  • man 1 systemctl(enable/is-enabled)
  • 银河麒麟服务器操作系统管理手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌