launchdサービスのOS Xの「無効」フラグが設定されているかどうかを確認するにはどうすればよいですか?


8

launchctl(強調鉱山)のmanページによると:

   -w Disabledキーを上書きして、falseに設定します。以前のバージョンでは、このオプションは構成ファイルを変更しました。これで、Disabledキーの状態はディスク上の別の場所に保存されます。

無効化フラグの現在の状態が.plistファイル自体に設定されなくなったため、Disabledキーのチェックは、次回の起動時にサービスが実行されるかどうかを判断する正確な方法ではなくなりました。

この「ディスク上の他の場所」はどこにありますか?もっと重要なことには(そしてもっと重要なことに)、このフラグが設定されているかどうかをどのようにチェックするのでしょうか?

また、サービスをすぐに起動することを強制せずに、次の起動時に実行するように設定することは可能launchctl load -w /Library/LaunchDaemons/my-service.plistですか?

回答:


8

無効化は(10.6.x以降)/private/var/db/launchd.db/com.apple.launchd/overrides.plistに次のようなエントリとして保存されるようになりました。

<key>com.apple.AppleFileServer</key>
<dict>
    <key>Disabled</key>
    <true/>
</dict>

このファイルを解析して、オーバーライドされた起動アイテムを確認することもできますが、ファイルはルートアクセスのみに設定され( "-rw ------- 1ルートホイール")、Appleがその方法を変更しないという保証はありません。物事は10.7に再び保存されます...

また、既存のlaunchdアイテムをすぐにロードせずに、次回の起動時にロードできるようにする方法がわかりません。(新しいアイテムの場合は問題ありません。Disabled= falseが含まれていることを確認し、/ Library / LaunchDaemonsにドロップします。)


2
10.11に移行するようです:( 10.11の更新された回答について何か考えはありませんか?
Peter Lapisu

0

macOSの新しいバージョンでは、launchctl 構文とコマンドが変更されました

以下はmacOS High Sierra(10.13.4)でテストされています。

launchctl print user/$(id -u)
# For GUI domain (effectively "flat" with login domain)
# See man launchctl for details
launchctl print gui/$(id -u)

launchctl printおよびlaunchctl listコマンドのバリアントを使用して、ユーザーに接続されたシステム上のサービスの多くのプロパティを表示できます。たとえば、無効なフラグの状態を確認するには、次のようなセクションを探します。

disabled services = {
{
    "com.apple.macbuddy.icloudsetup.user" => false
    "com.apple.ManagedClientAgent.enrollagent" => true
    "com.apple.FileStatsAgent" => false
    "com.apple.FolderActionsDispatcher" => true
    "homebrew.mxcl.postgresql" => false
    "com.apple.appleseed.seedusaged.postinstall" => true
    "homebrew.mxcl.mysql" => false
}

またありますlaunchctl print system/{service-name}
wisbucky 19/07/18
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.