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