Answers:
禁用LaunchAgent(不是LaunchDaemons)并重新启动计算机(不使用 sudo):
$ launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist
如果您想再次启用它:
$ launchctl load /System/Library/LaunchAgents/com.apple.gamed.plist
sudo
launchctl list
吗?
一种解决方案是创建bash脚本,以在登录后停止游戏服务。在OS X中使用Automator创建bash脚本,然后将其作为登录项添加到OS X帐户中。下次登录时,您将收到执行脚本的提示。通常,我会等到看到Little Snitch发出警报,通知游戏正在打电话回家,然后单击“继续”以运行脚本。这还不是很完美,如果您在登录OS X后立即运行它,可能会遇到问题。我宁愿远离那些禁用服务的解决方案,因为那些建议禁用/覆盖我建议的SIP。
这是我使用的bash脚本。欢迎提出任何改进建议。
#!/bin/bash
chkService=gamed
chkCount=10
chkStatus=$(ps ax | grep "$chkService" | grep -v grep | grep " T " | wc -l)
while [ $chkStatus -ne 1 ]; do
chkProcess=$(ps ax | grep -v grep | grep "$chkService" | wc -l)
if [ $chkProcess -ne 0 ];
then
KILLALL -STOP "$chkService"
chkCount=0
chkStatus=$(ps ax | grep gamed | grep -v grep | grep " T " | wc -l)
else
SLEEP=1
chkCount=$((chkCount-1))
fi
done
问题是上面给出的可接受的答案:
launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist
不再有效。我也看到了使用-w
标志。无论如何,在最近的更新中,我认为围绕El Capitan或优胜美地,您会收到一条消息
启用系统完整性保护时,不允许进行操作
系统完整性保护也被缩写为SIP。要禁用它,您需要启动到Recovery OS并运行csrutil disable
。
我已经在以前的版本中完成了此序列,并且确实可以通过launchctl
命令禁用游戏功能。
我想在禁用gamed之后,可以重新启用SIP。也许这将是两全其美,尽管这是一个单调乏味的过程。
那又如何sudo launchctl unload /System/Library/Launch\ Daemons/com.apple.gamed.plist
呢?
适用于10.11.6的另一个选项是@ Le-Sci建议的方法的变体。创建一个shell脚本来禁用游戏进程:
#!/bin/bash
sleep 30 && kill -9 "$(pgrep gamed)"
这里的sleep命令告诉脚本等待开始退出游戏的过程之前等待30秒,以便让系统有足够的时间在尝试终止游戏之前加载游戏。您可以根据需要调整等待时间。“ kill -9”命令强制退出您请求的进程,但是它仅接受进程ID号,而不接受进程名称,因此使用“ pgrep”查找进程ID。记下脚本的保存位置(对于本示例,我将其保存为/ Users / myaccountname /中的“ forceQuitGamed”)。
授予脚本执行权限:
sudo chmod +x ~/forceQuitGamed
创建启动代理plist文件,该文件将在您每次登录帐户时运行。如果您以前没有创建过plist文件,则可以使用TextEdit来实现。该脚本文件必须以纯文本格式保存,因此,如果TextEdit的默认首选项要求使用RTF格式,则在尝试使用新的启动代理plist文件之前,请执行Format> Make Plain Text命令将其转换为纯文本格式。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.myaccountname.loginscript</string>
<key>ProgramArguments</key>
<array>
<string>/Users/myaccountname/forceQuitGamed</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
数组中“ ProgramArguments”下的字符串是路径/到/您的/ shell脚本。将文件保存到〜/ Library / LaunchAgents /。在此示例中,我将plist文件命名为com.myaccountname.forceQuitGamed.plist,因此该文件位于
/Users/myaccountname/Library/LaunchAgents/com.myaccountname.forceQuitGamed.plist
现在,每次您登录帐户时,加载游戏后仅几秒钟便应强制退出游戏。(如果需要在加载后尽快终止它,请查看@ Le-Sci的方法。)此方法有效,而无需禁用系统完整性保护。
csrutil disable
在恢复模式下,您必须首先在终端中输入,然后重新启动进行更改,在恢复模式下再次重新启动,然后重新csrutil enable
启动。
但是我不知道修改后的哪个进程会损害El Capitan中的启动