OS X Yosemite(10.10)で、サービスの有効/無効オーバーライド設定を削除する方法はありますか?
たとえば、rootに対して存在しないサービス「test」を永続的に無効にするには、次のようにします。
Sudo launchctl disable user/0/test
無効リストに追加されていることを確認してください。
Sudo launchctl print-disabled user/0
結果:
disabled services = {
"test" => true
}
login item associations = {
}
では、無効なサービスリストから「テスト」を削除するにはどうすればよいですか?
(有効にできることはわかっていますが、エントリを完全に削除したいだけです。)
注:
コンピュータを再起動すると、「test」オーバーライドがlaunchd disabled
ファイルに追加されていることがわかります。
Sudo cat /var/db/com.Apple.xpc.launchd/disabled.0.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>test</key>
<true/>
</dict>
</plist>
このコマンドを実行して、.plist
ファイルから手動で削除しようとしました。
Sudo /usr/libexec/Plistbuddy /var/db/com.Apple.xpc.launchd/disabled.0.plist -c Delete:test
これによりファイルから削除されますが、コンピューターを再起動すると再び表示されます。何か案は?
overrides.plist
にあった情報の性質が変わったようです。
「レガシー」launchctl
/man
サブコマンドのload
のunload
ページによると。
-w
Disabledキーをオーバーライドし、loadサブコマンドとunloadサブコマンドでそれぞれfalseまたはtrueに設定します。以前のバージョンでは、このオプションは構成ファイルを変更していました。これで、Disabledキーの状態は、起動された以外のプロセスによって直接操作されない可能性のある場所のディスク上の別の場所に保存されます。
私は今推測します...情報は/var/db/com.Apple.xpc.launchd
ディレクトリに保存されます。
私の内容にはいくつかのplistが含まれていました。
config disabled.0.plist disabled.200.plist ... disabled.501.plist ... disabled.migrated loginitems.0.plist ... loginitems.501.plist ...
この場合、ファイル名はさまざまなユーザーのIDを参照しています(501
はmine、0
はroot)。これらのファイルのキーを(明らかにrootとして)変更すると、dark-overlord launchd
で対応するオーバーライドを削除する必要があります。
そうでない場合は、リカバリ用に起動しているときにこれらの同じファイルを編集するか、他のドライブを試してください。launchd
が実行されていないとき、または執拗にボスになろうとしているときにファイルをいじることができます。
ヨセミテのLaunchControlでこのような問題を解決しました…OSXでデーモンとエージェントを管理するための驚くべき小さなGUIが必要です。たくさんの機能があります…だからキャスクで取り付けるだけです
$ brew cask install launchcontrol
次に、左側のリストでサービスを見つけます([エージェントの使用]や[グローバルデーモンなど]の下など)。
それを選択し、メインメニューでJob => Override Disabled key => Always Falseに移動します。
次に、再起動して確認します...動作するはずです!
シングルユーザーモードを使用してこれを行うことができました。手順は次のとおりです。
/sbin/mount -uw /
と入力します/var/db/com.Apple.xpc.launchd/disabled.*.plist
ファイルを編集し、必要に応じて無効なアイテムを削除します。exit
と入力します。'launchctl'で使用される構成ファイル/スクリプトは次の場所にあります。
# Location of the LaunchAgents which run under the user own name (and is logged in).
$ cd $HOME/Library/LaunchAgents
# Location for the Deamons for running jobs without logged in user.
$ cd /Library/LaunchDeamons
# Location for the LaunchAgents which run as root when the user is logged in.
$ cd /Library/LaunchAgents
XMLスクリプト(.plistで終わる)の次のすばやく簡単なコマンドは次のとおりです(上記のディレクトリのいずれかにいて、Sudoが必要な場合があります)。
# Loads the specified configuration file.
# Jobs that are not on-demand will be started as soon as possible.
$ The -w option overrides the disabled setting.
# The -F option forces the loading and ignores the Disabled key.
$ launchctl load <script-name.plist>
# Unloads the specified configuration file from the current started session.
$ The -w option overrides the disabled setting.
# The -F option forces the loading and ignores the Disabled key.
$ launchctl unload <script-name.plist>
# Removes the specified configuration from the list and does not appear after rebooting
$ launchctl remove <script-name.plist>
詳細については、launchctlのマニュアルページ https://ss64.com/osx/launchctl.html を参照してください。