[launchd-dev] Loading LaunchAgents for users in postinstall

Per Olofsson per.olofsson at gu.se
Sat Jul 18 01:41:06 PDT 2015


17 juli 2015 kl. 22:03 skrev Damien Sorresso <dsorresso at apple.com>:
> 
> Per,
> 
> You should be able to use `launchctl asuser` for this purpose, eg.
> 
> $ launchctl asuser launchctl unload /Path/to/plist
> $ launchctl asuser launchctl load /Path/to/plist

Thanks, I got some replies off list as well, and asuser is pretty much a drop-in replacement. It wasn't documented until 10.10, but opensource.apple.com (yay!) confirms that it appeared in 10.7, so I guess it should be safe to use even if you need to support older releases?

> On El Capitan, you can use `launchctl bootstrap` and `launchctl bootout`, eg.
> 
> $ launchctl bootout user/$uid /path/to/plist
> $ launchctl bootstrap user/$uid /path/to/plist
> 
> Note that both of these will load your job into the user's background session and *not* the user's GUI session. This means that your job must have a LimitLoadToSessionType value of "Background".
> 
> If you want to load your agent into the user's GUI session, your approach below will work just fine, though I'm not sure why you're chroot(2)ing.

We're basically cargo culting Quinn's reply here:

  https://lists.macosforge.org/pipermail/launchd-dev/2011-January/000890.html

chroot -u just executes a command though, and you don't have to deal with the shell as you have to if you use su, and as a bonus there's no quoting involved.

> On El Capitan, you can modify the above commands to be
> 
> $ launchctl bootout gui/$uid /path/to/plist
> $ launchctl bootstrap gui/$uid /path/to/plist
> 
> if you want to load the job into the user's GUI session, and you won't have to go through any weird tricks like below.

It'll be a few years before we can target 10.11+, but that's excellent!

> Before you ask, yes, we know it's a mess. Unfortunately, we're very constrained by 10+ years of legacy behavior.

Don't I know it, but heck, it's cleaner and more explicit now than it's ever been.

-- 
Per Olofsson, IT-service, University of Gothenburg	



More information about the launchd-dev mailing list