Ich möchte, dass ein Skript (bash / zsh / ruby / ...) beim Booten unter OS X ausgeführt wird. Was ist der einfachste Weg, dies zu tun, ohne mit XML- / Plist-Dateien herumzuspielen und vorzugsweise kein Meta-AppleScript zu erstellen .
Ich möchte, dass ein Skript (bash / zsh / ruby / ...) beim Booten unter OS X ausgeführt wird. Was ist der einfachste Weg, dies zu tun, ohne mit XML- / Plist-Dateien herumzuspielen und vorzugsweise kein Meta-AppleScript zu erstellen .
Antworten:
MacOS X verwendet Vixie cron, das über spezielle Meta-Tags zum Starten beim Neustart verfügt. Das Dateiformat finden Sie in der Manpage .
etwas wie:
@reboot /path/to/script.sh
in Ihrem crontab würde funktionieren. Ich bin mir nicht sicher, ob dies eine bessere Lösung als Launchd ist. Sie haben wahrscheinlich mehr Meta-Tools, die Launchd als Cron betrachten.
Falls Sie Ihre Meinung ändern:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.245713</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/script.sh</string>
</array>
<key>UserName</key>
<string>someuser</string>
</dict>
</plist>
Speichern Sie wie com.superuser.245713.plist
in /Library/LaunchAgents/
und machen Sie root:wheel
den Eigentümer / die Gruppe.
/Library/LaunchAgents
einzubauen, als /System/Library/LaunchDaemons
da /System
es sich um betriebssystemspezifische Dinge handelt, und das unter /Library
wird eher für Dinge von Drittanbietern verwendet. Außerdem sollte LaunchDaemons
"Elemente enthalten, die als Root ausgeführt werden, im Allgemeinen Hintergrundprozesse", wobei LaunchAgents
"als Benutzer oder im Kontext von Userland ausgeführt werden". Die Quelle für diese Zitate ist ein großartiger Artikel über launchd , den ich bei Fragen zu launchd konsultiere.
Es gibt auch Anmelde-Hooks, wenn Sie möchten, dass das Skript (als Root) ausgeführt wird, wenn sich ein Benutzer anmeldet, anstatt wenn der Computer gestartet wird.
cron
unter OS X nicht so gut ist, standardmäßig zu protokollieren (es gab erst vor ein paar Tagen ein Thema dazu).