You should take a look at the asuser and bootstrap commands of launchctl. The 
last one will only work on 10.11.


> On 17 Jul 2015, at 17:11, Per Olofsson <per.olofs...@gu.se> wrote:
> 
> When an installer package contains a LaunchAgent we typically try to load it 
> into any current user sessions, to avoid requiring a logout or restart. 
> Through trial and error we've arrived at using launchctl bsexec with chroot 
> in a loop like this:
> 
> if [[ "$3" == "/" ]]; then
>    # Load agent for all logged in users.
>    for pid_uid in $(ps -axo pid,uid,args | grep -i "[l]oginwindow.app" | awk 
> '{print $1 "," $2}'); do
>        pid=$(echo $pid_uid | cut -d, -f1)
>        uid=$(echo $pid_uid | cut -d, -f2)
>        if [[ "$uid" -ne 0 ]]; then
>            launchctl bsexec "$pid" chroot -u "$uid" / launchctl unload 
> "$AGENT"
>            launchctl bsexec "$pid" chroot -u "$uid" / launchctl load "$AGENT"
>        fi
>    done
> fi
> 
> It's not perfect but it got the job done, but it looks like it breaks in the 
> 10.11 betas if SIP is enabled (launchctl exits with code 5). Is there a 
> better/proper/supported way of loading LaunchAgents for users in a background 
> script running as root?
> 
> -- 
> Per Olofsson, IT-service, University of Gothenburg
> 
> _______________________________________________
> launchd-dev mailing list
> launchd-dev@lists.macosforge.org
> https://lists.macosforge.org/mailman/listinfo/launchd-dev

_______________________________________________
launchd-dev mailing list
launchd-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/launchd-dev

Reply via email to