macos用户级自启服务本质是launch agent,运行于用户权限下,通过操作~/library/launchagents/下的.plist文件并用launchctl管理;需用launchctl list查看、unload/bootout停用、load启用,注意权限、路径及语义层级。
macos 用户环境下的自启服务,本质是用户登录后由 launchd 启动的 launch agent,它们运行在当前用户权限下,能访问 gui、弹窗、读写用户目录,但不会影响其他账户。管理这类服务,核心是操作 ~/library/launchagents/ 下的 .plist 文件,并用 launchctl 正确加载或卸载。
看清哪些代理正在运行
先确认现状,再动手:
- 列出当前所有活跃的用户级代理(不含系统内部状态行):
launchctl list | grep -v "0x" - 快速找某个应用,比如“飞书”或“钉钉”:
launchctl list | grep -i "feishu\|dingtalk" - 查看所有已存放的代理配置文件路径:
ls ~/Library/LaunchAgents/
停用或移除用户级自启代理
这类操作无需 sudo,安全可控:
- 临时停用并终止进程(下次登录仍会启动):
launchctl unload ~/Library/LaunchAgents/com.feishu.desktop.plist - 彻底禁用且不再加载(推荐先用这步验证效果):
launchctl bootout gui/$(id -u) /path/to/file.plist - 永久删除:先 unload,再删文件:
rm ~/Library/LaunchAgents/com.example.app.plist - 想留备份?直接把
.plist移出LaunchAgents目录即可,比如移到桌面或~/Downloads
手动创建或修改 Launch Agent 配置
若需让自己的脚本或工具随登录启动:
- 确保目录存在:
mkdir -p ~/Library/LaunchAgents - 用
nano新建 plist(如com.myapp.startup.plist),内容需包含:<key>Label</key><string>com.myapp.startup</string><key>ProgramArguments</key><array><string>/usr/bin/python3</string><string>/path/to/script.py</string></array><key>RunAtLoad</key><true></true><key>StandardOutPath</key><string>/tmp/myapp.log</string> - 保存后立即生效:
launchctl load ~/Library/LaunchAgents/com.myapp.startup.plist - 若改过文件,先
unload再load才能刷新配置
注意几个易错点
- 不要把用户级
.plist放进/Library/LaunchDaemons/,否则launchctl load会静默失败 - 文件权限必须是
-rw-r--r--(644),归属为当前用户,不能是root -
launchctl list显示的 PID 为-表示已加载但未运行,可能因路径错误或权限不足 - 修改后无需重启,登出再登录即生效;也可用
killall Dock刷新图形会话
不复杂但容易忽略细节,关键是始终盯住 ~/Library/LaunchAgents/ 这个位置,和 launchctl 的用户级语义。











