最准确的方法是执行 systemctl list-units --type=service --state=running,它只显示当前被 systemd 加载且状态为 active (running) 的服务,排除 inactive、failed 或未加载单元,确保所见即真实运行状态。

你需要快速确认麒麟OS当前有哪些服务真正在后台运行,而不是只看它们是否被安装或设置为开机自启——因为有些服务虽已启用但并未启动,有些则因异常崩溃后仍被 systemd 错误标记为 active。
用 systemctl list-units 查看实时运行的服务
这是最准确、最直接的方式,它只显示当前已被 systemd 加载且状态为 running 的服务单元,不包含 inactive、failed 或未加载的服务。
打开终端(快捷键 Ctrl+Alt+T),执行以下命令:
systemctl list-units --type=service --state=running
输出结果中每行第一列是服务名(如 sshd.service),第二列是加载状态(loaded),第三列是激活状态(active),第四列是子状态(running)。【只有第三列为 active 且第四列为 running 的服务,才是真正正在运行的】
若想同时查看服务描述,可加 --all 参数:systemctl list-units --type=service --state=running --all
用 systemctl --type=service --state=running 快速筛选
该命令与上一方法本质相同,但更简洁,适合脚本调用或快速复核。
在终端中输入:
systemctl --type=service --state=running
注意:这个命令不会显示 failed 或 activating 状态的服务,也不会列出 socket、timer 等非 service 类型单元。如果看到某服务名后跟 (running),说明它当前确实处于工作状态;若显示 (exited),哪怕状态是 active,也代表主进程已退出,仅留空壳。
用 service --status-all 兼容旧环境(慎用)
部分深度定制版麒麟OS(如某些政务专有镜像)仍保留 SysV init 兼容层,此时可用此命令粗略扫一遍服务开关标识。
方法一:执行 service --status-all
输出中以 + 开头表示该服务脚本存在且当前运行,- 表示存在但未运行,? 表示状态无法确定。但【该命令不经过 systemd,无法反映由 systemd 托管但未通过 /etc/init.d 启动的服务真实状态】,例如 nginx.service 若由 systemctl start 启动,此处可能显示 ? 或 -。
方法二:若提示 bash: service: command not found,说明系统已移除 sysvinit 兼容包,必须退回使用 systemctl 方案。
用 ps 辅助验证关键服务进程是否存在
当 systemctl 显示某个服务为 active (running),但业务无响应时,需进一步确认其主进程是否真实存活——避免 systemd 状态未同步或服务进入僵尸态。
第一步:查出服务对应主进程名,例如 sshd.service → 进程名通常是 sshd,mysqld.service → mysqld,kylin-kms-activation.service → kylin-kms-activation
第二步:执行命令过滤进程(避免匹配 grep 自身):
ps aux | grep '[s]shd'
第三步:检查输出中是否有非 grep 行,且含 /usr/sbin/sshd 或 /usr/bin/sshd 字样;若有,说明进程真实存在;若只有 grep 行,则进程已终止,但 systemd 状态未刷新。
这一步不能替代 systemctl,仅作交叉验证。比如 dbus-daemon 虽在 ps 中可见,但它属于系统核心守护进程,不应手动 kill。

















