# macOS 取消/停止/彻底删除后台服务(launchctl) # macOS 取消 / 停止 / 彻底删除后台服务(launchctl) macOS 的后台服务分两类: 1. **LaunchAgent 用户服务**:仅当前登录用户运行,路径 `~/Library/LaunchAgents/` 2. **LaunchDaemon 系统服务**:开机就运行、所有用户生效,路径 `/Library/LaunchDaemons/` > ⚠️ 禁止修改 `/System/Library/` 下系统自带服务(com\.apple\.\*),会系统崩溃。 > > ## 一、先找到目标服务(必做第一步) ### 1\. 列出所有运行中的服务 ```bash # 全部服务 launchctl list # 过滤指定软件(替换 iscsictl/zerotier/xxx) launchctl list | grep -i iscsi ``` 输出第一列是 PID(有数字代表正在运行),第三列是**服务 label**(如 `com.iscsi.iscsid`)。 ### 2\. 查找服务 plist 配置文件 ```bash # 全局搜索iscsi相关plist find /Library ~/Library -name "*iscsi*.plist" ``` ## 二、3 种操作力度:临时停止 / 永久禁用 / 彻底删除 ### 方式 1:临时停止当前运行的服务(重启后恢复) ```bash # 格式 launchctl stop 服务label launchctl stop com.iscsi.iscsid ``` ### 方式 2:永久禁用(不删除文件,重启也不会自启,推荐临时取消) #### 旧版命令 unload \-w(兼容所有 macOS) ```bash # 用户级Agent(无需sudo) launchctl unload -w ~/Library/LaunchAgents/xxx.plist # 系统级Daemon(必须sudo) sudo launchctl unload -w /Library/LaunchDaemons/com.iscsi.iscsid.plist ``` `-w` = write,写入禁用标记,永久不开机自启。 #### 新版 macOS 10\.11\+ 标准命令 disable ```bash # 用户服务禁用 launchctl disable gui/$(id -u)/com.iscsi.iscsid # 系统服务禁用 sudo launchctl disable system/com.iscsi.iscsid ``` 恢复启用把 `disable` 改成 `enable` 即可。 ### 方式 3:彻底取消 \+ 删除服务(完全清除,再也不会启动) 完整流程(以 iscsi 服务举例): 1. 停止运行 ```bash sudo launchctl stop com.iscsi.iscsid ``` 2. 从系统服务列表移除 ```bash sudo launchctl bootout system /Library/LaunchDaemons/com.iscsi.iscsid.plist # 用户服务用这条: launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/xxx.plist ``` 3. 删除硬盘上的配置文件(根治) ```bash # 系统服务 sudo rm -f /Library/LaunchDaemons/com.iscsi.iscsid.plist # 用户服务 rm -f ~/Library/LaunchAgents/xxx.plist ``` 4. 强制杀掉残留进程 ```bash pkill -f iscsid ``` ## 三、针对你之前 iSCSI iscsictl 服务实操示例 ```bash # 1. 查看iscsi服务 launchctl list | grep iscsi # 2. 临时停止 sudo launchctl stop com.iscsi.iscsid # 3. 永久禁用开机自启 sudo launchctl unload -w /Library/LaunchDaemons/com.iscsi.iscsid.plist # 4. 彻底删除服务(不再使用iSCSI时执行) sudo launchctl bootout system /Library/LaunchDaemons/com.iscsi.iscsid.plist sudo rm -f /Library/LaunchDaemons/com.iscsi.iscsid.plist pkill -f iscsid ``` ## 四、常见问题 1. **文件无法删除 Operation not permitted** 文件加了系统锁定 `schg`,先解锁: ```bash sudo chflags noschg /xxx/xxx.plist ``` 再执行删除命令。 2. **stop 后立刻自动重启** 说明只停止没卸载,必须执行 `unload -w` 或 `bootout` 取消自启。 3. **提示 could not find specified service** plist 路径写错,先用 `find` 命令确认文件真实路径。 ## 快速总结 - 只想临时关掉:`launchctl stop label` - 永久不开机自启(保留文件):`unload -w` / `launchctl disable` - 彻底删除服务(完全取消):`bootout` \+ `rm plist` \+ 杀进程 > (注:部分内容可能由 AI 生成)