在Linux中查看已启用服务需区分“启用”(开机自启)与“运行”状态,推荐用systemctl list-unit-files --type=service --state=enabled;static/indirect服务虽不显enabled但属正常启用机制;旧SysVinit系统用chkconfig或update-rc.d;is-enabled判断自启,is-active仅反映当前运行状态。
在 Linux 中查看所有已启用的系统服务,核心是区分“已启用”(开机自启)和“正在运行”——两者不等价。启用表示系统启动时会尝试拉起该服务,无论它当前是否活跃。
这是最准确、最通用的方法,适用于所有基于 systemd 的现代发行版(如 CentOS 7+/8+/9、Ubuntu 16.04+、Debian 8+、Rocky/AlmaLinux 等):
systemctl list-unit-files --type=service,输出含 enabled/disabled/static/indirect 等标记systemctl list-unit-files --type=service --state=enabled
--all 可看到更全信息,但默认输出已足够判断是否启用某些服务标为 static(如 dbus-broker.socket)或 indirect,它们不能被单独启用/禁用,而是由其他单元(如 socket 或 target)自动触发。这类服务虽不显示为 enabled,但属于系统正常启用机制的一部分,不应误判为“未启用”。
仅适用于极少数仍用 SysVinit 的老环境(如 CentOS 6 或定制嵌入式系统):
chkconfig --list | grep 3:on(运行级3下启用)或 chkconfig --list 全局查看sudo update-rc.d -f servicename defaults 启用后,sudo update-rc.d -l 可查各运行级状态/etc/init.d/ 下有脚本 ≠ 已启用;必须配合 chkconfig 或 update-rc.d 确认单个服务快速验证用这两个命令:
systemctl is-enabled nginx → 返回 enabled 表示开机自启已设好systemctl is-active nginx → 返回 active 表示此刻正在运行(可能刚手动 start 过,但没设启用)is-active active 就以为已启用 —— 实际上它可能只是临时运行,重启后不会自动起来