macOS自带系统服务由Apple预置,分三类:/System/Library/LaunchDaemons/(开机早期root启动的守护进程)、/System/Library/LaunchAgents/(用户登录后启动的系统代理)、/Library/下为管理员安装服务;均受SIP保护,不可随意修改。macOS 自带系统服务不是靠用户手动设置启动顺序的,而是由系统内核、launchd 机制和启动阶段严格管控的。你无法像 Windows 那样拖拽调整“启动顺序”,但可以查看、启用、禁用部分服务,并理解它们在哪个层级被加载。
哪些服务属于 macOS 自带系统服务?
这些服务由 apple 预置,不依赖用户账户,通常以 launchd 的 plist 文件形式存在,分三类:
-
/System/Library/LaunchDaemons/:系统级守护进程(daemon),开机早期由 root 启动,无需用户登录,如
com.apple.windowserver(窗口服务)、com.apple.diskmanagementd(磁盘管理) -
/System/Library/LaunchAgents/:系统级代理(agent),随用户登录启动,但由系统预装,如
com.apple.finder、com.apple.Dock - /Library/LaunchDaemons/ 和 /Library/LaunchAgents/:管理员安装的服务,不属于“自带”,但常被误认为系统服务
如何查看当前运行的系统服务?
终端命令最直接有效:
- 列出所有已加载的系统守护进程:
sudo launchctl list | grep -v "PID\|0x" - 查看某个服务状态,例如窗口服务:
sudo launchctl print system/com.apple.windowserver - 显示所有 LaunchDaemon plist 文件路径:
ls /System/Library/LaunchDaemons/*.plist
注意:不要随意修改 /System/Library 下的 plist 文件 —— 它们受 SIP(系统完整性保护)保护,强行编辑会导致签名失效、服务无法加载,甚至系统不稳定。
能否禁用或延迟某个系统服务?
极少数服务支持安全禁用,但没有“启动顺序调整”功能。可行操作限于:
- 临时停用(重启后恢复):
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.some.service.plist - 永久禁用(需关闭 SIP,不推荐):
sudo mv /System/Library/LaunchDaemons/com.apple.some.service.plist ~/Desktop/,再重建符号链接或重命名 - 延迟启动(仅对部分 LaunchAgent 有效):在 plist 中添加
<key>StartInterval</key><integer>30</integer>,表示登录后 30 秒启动
⚠️ 提示:禁用核心服务(如 com.apple.securityd、com.apple.logd)可能导致钥匙串失效、日志丢失或登录异常,务必提前备份并测试。
系统启动各阶段与服务加载时机
macOS 启动是分层推进的,服务按角色在不同阶段介入:
-
BootROM → boot.efi:硬件初始化,加载内核(
kernelcache) - 内核启动后:加载内核扩展(kext)和基础驱动(如存储、网络)
-
launchd 启动(pid 1):首个用户态进程,按优先级顺序读取
/System/Library/LaunchDaemons/中的 plist -
用户登录时:launchd 加载
/System/Library/LaunchAgents/和用户目录下的代理
服务之间通过 LaunchDependencies 或 KeepAlive 建立依赖关系,但 Apple 未公开完整依赖图谱,也不提供图形化排序工具。











