回答:
LaunchDaemonsではなくLaunchAgentを無効にし、(sudo なしで)マシンを再起動します。
$ launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist
ある時点で再度有効にする場合:
$ launchctl load /System/Library/LaunchAgents/com.apple.gamed.plist
sudo
launchctl list
ますか?
1つの解決策は、ログイン後にgamedサービスを停止するbashスクリプトを作成することです。OS XでAutomatorを使用してbashスクリプトを作成し、それをログイン項目としてOS Xアカウントに追加します。次回ログインすると、スクリプトを実行するためのプロンプトが表示されます。通常、ゲームが帰宅しているというリトルスニッチからのアラートが表示されるまで待ち、[続行]をクリックしてスクリプトを実行します。これは完璧ではなく、OS Xにログインした直後に実行すると問題が発生する可能性があります。サービスを無効にするソリューションは避けたいです。
これが私が使用する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またはYosemiteの周りだと思います。代わりにメッセージが表示されます
システム整合性保護が作動している間は操作できません
System Integrity Protectionは、頭字語SIPでも知られています。これを無効にするには、リカバリOSを起動して実行する必要がありますcsrutil disable
。
以前のリリースでこのシーケンスを実行しましたが、launchctl
コマンドを介してゲームを無効にすることができました。
gamedを無効にした後で、SIPを再度有効にできると思います。多分それは退屈なプロセスですが、両方の世界で最高になるでしょう。
どうsudo launchctl unload /System/Library/Launch\ Daemons/com.apple.gamed.plist
ですか?
OS Sierraの場合、システム設定、インターネットアカウントに移動し、リスト(左側)のゲームセンターを(マイナスで)削除します。
10.11.6で機能する別のオプションは、@ Le-Sciによって提案された方法のバリエーションです。gamedプロセスを無効にするシェルスクリプトを作成します。
#!/bin/bash
sleep 30 && kill -9 "$(pgrep gamed)"
ここでsleepコマンドは、gamedを終了するプロセスを開始する前に30秒待機して、システムにgamedを終了する前にgamedをロードするのに十分な時間を与えるようにスクリプトに指示します。必要に応じて待機時間を調整できます。「kill -9」コマンドは要求したプロセスを強制終了しますが、プロセス名ではなくプロセスID番号のみを受け入れるため、「pgrep」を使用してプロセスIDを検索します。スクリプトを保存した場所をメモします(この例では、/ Users / myaccountname /に「forceQuitGamed」として保存します)。
スクリプトの実行権限を付与します。
sudo chmod +x ~/forceQuitGamed
アカウントにログインするたびに実行される起動エージェントplistファイルを作成します。以前にplistファイルを作成したことがない場合、これを行う1つの方法はTextEditを使用することです。スクリプトファイルはプレーンテキストで保存する必要があるため、TextEditのデフォルト設定でリッチテキストフォーマットを呼び出す場合は、[フォーマット]> [プレーンテキストにする]コマンドを実行して、新しい起動エージェントplistファイルを使用する前にプレーンテキストに変換します。
<?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」の下の配列内の文字列は、path / to / your / shellスクリプトです。ファイルを〜/ Library / LaunchAgents /に保存します。この例では、plistファイルにcom.myaccountname.forceQuitGamed.plistという名前を付けたので、次の場所にあります
/Users/myaccountname/Library/LaunchAgents/com.myaccountname.forceQuitGamed.plist
これで、アカウントにログインするたびに、gamedはロードされてから数秒後に強制終了するはずです。(ロード後、できるだけ早く終了する必要がある場合は、@ Le-Sciのメソッドを参照してください。)このアプローチは、システム整合性保護を無効にする必要なく機能します。
最初csrutil disable
にリカバリモードでターミナルに入る必要があります。次に、再起動して変更を加え、もう一度リカバリモードcsrutil enable
で再起動してから、再起動します。
しかし、変更されたときにどのプロセスがEl Capitanのブートを危険にさらすかわかりません