web-dev-qa-db-ja.com

launchctl-有効/無効のオーバーライドを削除します

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

これによりファイルから削除されますが、コンピューターを再起動すると再び表示されます。何か案は?

12
Francis

overrides.plistにあった情報の性質が変わったようです。

「レガシー」launchctl/manサブコマンドのloadunloadページによると。

-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を参照しています(501mine0root)。これらのファイルのキーを(明らかにrootとして)変更すると、dark-overlord launchdで対応するオーバーライドを削除する必要があります。

そうでない場合は、リカバリ用に起動しているときにこれらの同じファイルを編集するか、他のドライブを試してください。launchdが実行されていないとき、または執拗にボスになろうとしているときにファイルをいじることができます。

6
Alex Gray

ヨセミテのLaunchControlでこのような問題を解決しました…OSXでデーモンとエージェントを管理するための驚くべき小さなGUIが必要です。たくさんの機能があります…だからキャスクで取り付けるだけです

$ brew cask install launchcontrol

次に、左側のリストでサービスを見つけます([エージェントの使用]や[グローバルデーモンなど]の下など)。

それを選択し、メインメニューでJob => Override Disabled key => Always Falseに移動します。

次に、再起動して確認します...動作するはずです!

4
Drew

シングルユーザーモードを使用してこれを行うことができました。手順は次のとおりです。

  1. コンピュータをシャットダウンします。
  2. 起動時に、シングルユーザーモード(Command + S)に入ります。
  3. コマンドラインから、/sbin/mount -uw /と入力します
  4. 適切な/var/db/com.Apple.xpc.launchd/disabled.*.plistファイルを編集し、必要に応じて無効なアイテムを削除します。
  5. exitと入力します。
1
Gary

'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 を参照してください。

0
Harm