麒麟os中查看开机自启服务需用systemctl查启用状态、检查/etc/rc.d/和/etc/init.d/传统脚本、解析/usr/lib/systemd/system/服务单元文件、用systemd-analyze分析启动链路,并排查用户级~/.config/systemd/user/服务。

如果您在麒麟操作系统中需要了解哪些服务随系统启动而自动运行,或希望精细控制开机自启行为,则需深入查看系统启动服务的配置与状态。以下是获取系统启动服务详情并进行管理的具体操作步骤:
一、使用systemctl命令查看启动服务状态
systemctl是麒麟OS(基于Linux内核,采用systemd初始化系统)中管理服务的核心工具,可列出所有已启用、禁用及当前运行的服务,并区分其启动类型(如enable、disable、static等)。
1、打开终端(可通过“开始菜单 → 系统工具 → 终端”或快捷键Ctrl+Alt+T启动)。
2、执行以下命令,列出所有开机自启(即已启用)的服务:
systemctl list-unit-files --type=service | grep enabled
3、执行以下命令,查看当前正在运行且被设置为开机启动的服务:
systemctl list-dependencies --reverse multi-user.target | grep \.service
4、若需查看某项具体服务的详细启动信息(例如sshd),运行:
systemctl show sshd.service | grep -E "UnitFileState|WantedBy|Description"
二、检查/etc/rc.d/和/etc/init.d/中的传统启动脚本
尽管麒麟OS默认使用systemd,但部分兼容性服务或用户自定义脚本仍可能通过SysVinit风格的启动机制注册,尤其在旧版麒麟或定制环境中,需同步核查传统路径。
1、进入系统初始化脚本目录:
cd /etc/rc.d/
2、列出所有rc*.d目录下的符号链接,识别S开头的启动项:
ls -l /etc/rc.d/rc5.d/ | grep "^S"
3、查看/etc/init.d/下是否存在可执行脚本,并确认其是否被systemd封装为服务单元:
ls -l /etc/init.d/ | grep -v "^d" | head -10
4、对任意脚本(如myservice),检查其是否已被systemd识别:
systemctl list-unit-files | grep myservice
三、解析/usr/lib/systemd/system/中的服务单元文件
systemd服务定义均以.service文件形式存放于该目录,直接阅读单元文件可获知服务启动时机、依赖关系、执行用户及启动条件等底层细节。
1、列出所有系统级服务单元文件:
ls /usr/lib/systemd/system/*.service | head -15
2、选取一个典型服务(如NetworkManager),查看其[Install]段内容,确认启动目标:
grep -A 5 "\[Install\]" /usr/lib/systemd/system/NetworkManager.service
3、查看该服务的WantedBy字段所指向的目标单元(如multi-user.target),进而判断其启动阶段:
systemctl list-dependencies --all multi-user.target | grep NetworkManager
4、检查服务是否包含ConditionPathExists或ConditionKernelCommandLine等启动前置条件:
grep -E "^(Condition|ExecStart)" /usr/lib/systemd/system/NetworkManager.service
四、使用systemd-analyze工具分析启动链路
systemd-analyze提供启动过程的时序与依赖图谱,可用于识别关键启动服务及其加载顺序,辅助判断哪些服务真正参与了开机流程。
1、显示本次启动各服务的初始化耗时排序(前10名):
systemd-analyze blame | head -10
2、生成服务启动依赖树,聚焦于default.target启动路径:
systemd-analyze critical-chain default.target
3、导出完整的启动服务依赖图(需graphviz支持):
systemd-analyze dot default.target | dot -Tpng > boot-chain.png
4、仅筛选出由default.target直接或间接Wanted的服务列表:
systemd-analyze dot default.target | grep "\.service" | sort -u
五、检查用户级systemd服务(~/.config/systemd/user/)
除系统级服务外,当前登录用户可能配置了专属的开机启动服务(如开机自启托盘程序、代理客户端等),这些服务独立于root权限运行,需单独排查。
1、切换至当前用户环境并启用用户实例(若未启用):
loginctl enable-linger $USER
2、列出用户级已启用的服务:
systemctl --user list-unit-files --type=service | grep enabled
3、查看用户级default.target的依赖关系:
systemctl --user list-dependencies default.target
4、检查用户服务单元文件是否存在并有效:
ls -l ~/.config/systemd/user/*.service 2>/dev/null || echo "无用户级服务定义"










