8

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)?

8

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.)

  • 2
    it looks like it move on 10.11 :( any idea for the updated answer on 10.11? – Peter Lapisu Jan 21 '16 at 11:28
0

For new versions of macOS, launchctl syntax and commands have changed.

The following was tested on 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)

You can view many properties of services on the system attached to your user with variants of the launchctl print and launchctl list commands. For example, to see the state of the disabled flag, look for a section like this:

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
}
  • there's also launchctl print system/{service-name} – wisbucky Jul 10 at 18:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.