How does one check whether the OS X “disabled” flag for launchd services is set

launchdmac-osx

According to the man page for launchctl (emphasis mine):

   -w   Overrides the Disabled key and sets it to false. In previous versions, this option would modify the configuration file. Now the state of the Disabled key is stored elsewhere on-disk.

Because the current state of the disabled flag is no longer set in the .plist file itself, checking for the Disabled key is no longer an accurate way to tell if the service will run on next boot.

Where is this "elsewhere on-disk"? More to the point (and more importantly), how does one check whether this flag is set?

Also, is it possible to set a service to run on next boot without forcing it to start immediately (as with launchctl load -w /Library/LaunchDaemons/my-service.plist)?

Best Answer

Disables are now (as of 10.6.x) stored in /private/var/db/launchd.db/com.apple.launchd/overrides.plist, as entries like:

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

You could parse this file to see which launchd items are overridden, but the file is set to root access only ("-rw------- 1 root wheel"), and there's no guarantee that Apple won't change how things are stored again in 10.7...

Also, I don't know any way to enable an existing launchd item to load on next boot without also loading it immediately. (If it's a new item, no problem: make sure it has Disabled=false in it, and drop it into /Library/LaunchDaemons.)