macos自启动服务管理需分清用户级代理与系统级守护进程:用户级用launchctl load/unload操作~/library/launchagents/下plist;系统级须sudo操作/library/launchdaemons/下root:wheel权限644的plist,并注意语法校验与日志排查。
终端管理 macos 自启动服务,核心是区分层级、选对命令、配好权限。系统级服务和用户级代理不能混用 sudo,plist 文件放错位置或权限不对就会静默失败。
看清当前所有自启动项
先确认哪些在跑,再动手:
- 查用户级代理(登录后启动的图形/后台应用):launchctl list
- 查系统级守护进程(开机即运行,需 root 权限):sudo launchctl list
- 快速过滤某个服务,比如飞书:launchctl list | grep -i "feishu"
- 列出所有已加载的用户级 plist 文件路径:ls ~/Library/LaunchAgents/
管理用户级登录代理(无需 sudo)
这类服务属于当前账户,配置文件放在 ~/Library/LaunchAgents/,影响范围小、操作安全:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 加载并启用一个代理:launchctl load ~/Library/LaunchAgents/com.feishu.desktop.plist
- 停用且不再随登录启动:launchctl unload ~/Library/LaunchAgents/com.feishu.desktop.plist
- 只停用不卸载(保留配置,下次可 load):launchctl bootout gui/$(id -u) /path/to/file.plist
- 想彻底禁用又留备份?把 .plist 文件移出 LaunchAgents 目录即可
管理系统级守护进程(必须用 sudo)
这类服务在系统启动早期运行,文件存于 /Library/LaunchDaemons/ 或 /System/Library/LaunchDaemons/,修改前务必确认必要性:
- 加载并设为开机启用:sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.service.plist
- 立即停止并卸载:sudo launchctl bootout system/com.example.service
- 旧语法仍可用(-w 表示写入启用状态):sudo launchctl load -w /Library/LaunchDaemons/com.example.service.plist
- 对应停用:sudo launchctl unload -w /Library/LaunchDaemons/com.example.service.plist
- 关键前提:plist 文件必须属主 root:wheel,权限 644,否则报 “Operation not permitted”
排查与修复常见问题
命令执行成功但服务没反应?大概率是配置或权限问题:
- 检查 plist 是否语法正确:用 plutil -lint /path/to/file.plist
- 确认归属和权限:ls -l /Library/LaunchDaemons/com.example.plist → 应显示 root:wheel 和 -rw-r--r--
- 若改过 plist 内容,需先 unload 再 load,launchctl 不会自动重载变更
- 日志查看方式:log show --predicate 'subsystem == "com.apple.launchd"' --last 1h










