launchd führt eine separate Liste von Elementen für jede Benutzersitzung ("Launch Agents") und eine für den Systemkontext ("Launch Daemons"). Wenn Sie launchctl load
als Root ausgeführt werden, wird das Element in die Systemliste geladen (dh als Start-Daemon anstelle eines Agenten), unabhängig davon, wo sich die Datei befindet . Was Sie tun müssen, hängt davon ab, was Sie genau erreichen möchten:
Wenn Sie versuchen, das Element als Startagenten in zukünftige Benutzersitzungen zu laden (z. B. für die nächste Anmeldung), legen Sie es einfach in / Library / LaunchAgents ab, legen Sie die Berechtigungen richtig fest und lehnen Sie sich zurück. Wenn sich ein Benutzer anmeldet, scannt er dieses Verzeichnis und lädt, was er findet.
Wenn Sie versuchen, das Element in eine vorhandene Anmeldesitzung zu laden, müssen Sie
launchctl load
diese Sitzung ausführen . Was genau das bedeutet und wie Sie es tun, ist kompliziert und kann davon abhängen, welche Version von OS X Sie verwenden (Apple ändert die Launchd-Architektur ständig ...). Zumindest in älteren Versionen von OS X müssen Sie die Prozess-ID eines Prozesses ermitteln, der in der Sitzung ausgeführt wird, für die Sie ein Targeting durchführen, und Folgendes ausführen:sudo launchctl bsexec $PIDInTargetSession sudo -u $TargetUsername launchctl load /Library/LaunchAgents/youritem.plist
Erläuterung: Der erste
sudo
wechselt zu root, wechselt dannlaunchctl bsexec $PIDInTargetSession
zum mach-Bootstrap-Kontext der Zielsitzung (ich sagte, es sei kompliziert), wechselt dann diesudo -u $TargetUsername
UID vom Stamm zum Zielbenutzer undlaunchctl load /Library/LaunchAgents/youritem.plist
lädt schließlich den Agenten in dieser Sitzung.
Wenn dies nicht der Fall ist, überprüfen Sie diese Nachricht auf Alternativen.