Ich habe ein kleines Skript geschrieben, um meinen Netzwerkstandort basierend auf einigen Bedingungen automatisch zu aktualisieren, und habe es mit einer launchd-Plist gekoppelt, damit es alle paar Minuten ausgeführt wird.
Ich habe jedoch festgestellt, dass meine launchd-Plist nicht geladen zu werden scheint, wenn mein Computer neu gestartet wird. Meine plist ist in ~/Library/LaunchDaemons
und ist ziemlich einfach:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.davedelong.location-updater</string>
<key>Program</key>
<string>/path/to/my/location_updater.rb</string>
<key>StartInterval</key>
<integer>180</integer>
</dict>
</plist>
Mein LaunchDaemons
Ordner hat die erwarteten 700
Berechtigungen, und das Ausführen launchctl load
mit meiner plist sorgt dafür, dass die Dinge einwandfrei funktionieren. Es ist nur so, dass es nicht geladen wird, wenn ich neu starte.
Ich hatte den Eindruck, dass alles automatisch von launchd geladen ~/Library/LaunchDaemons
und ~/Library/LaunchAgents
geladen wurde. Ist dies nicht der Fall? Wenn dies der Fall ist (und ich denke, das ist es), warum wird meine Plist dann nicht geladen?
~/Library/LaunchDaemons
ist kein gültiger Speicherort für Startagenten oder Startdämonen. Du missverstehst die Terminologie. LaunchDaemons sind systemweite Prozesse, während LaunchAgents pro Benutzer ausgeführt werden. Von der Launchd-Manpage:
~/Library/LaunchAgents Per-user agents provided by the user.
/Library/LaunchAgents Per-user agents provided by the administrator.
/Library/LaunchDaemons System-wide daemons provided by the administrator.
/System/Library/LaunchAgents Per-user agents provided by Mac OS X.
/System/Library/LaunchDaemons System-wide daemons provided by Mac OS X.
Verschieben Sie Ihre plist nach ~/Library/LaunchAgents
, und es sollte einfach funktionieren.
David DeLong