Chcę, aby skrypt (bash / zsh / ruby / ...) działał w czasie uruchamiania systemu OS X. Jaki jest najprostszy sposób, aby to zrobić, bez bałaganu w plikach xml / plist i najlepiej bez potrzeby tworzenia meta AppleScript .
Chcę, aby skrypt (bash / zsh / ruby / ...) działał w czasie uruchamiania systemu OS X. Jaki jest najprostszy sposób, aby to zrobić, bez bałaganu w plikach xml / plist i najlepiej bez potrzeby tworzenia meta AppleScript .
Odpowiedzi:
MacOS X używa Vixie cron, który ma specjalne metatagi do uruchamiania w czasie ponownego uruchamiania. Zobacz stronę podręcznika dla formatu pliku.
coś jak:
@reboot /path/to/script.sh
w twoim crontabie by działało. Nie jestem pewien, czy jest to lepsze rozwiązanie niż uruchomione, prawdopodobnie masz więcej narzędzi meta, które wyglądają na uruchomione niż cron.
W przypadku zmiany opinii:
<?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>
Przechowuj jak com.superuser.245713.plist
w /Library/LaunchAgents/
i określ root:wheel
właściciela / grupę.
/Library/LaunchAgents
niż /System/Library/LaunchDaemons
ponieważ /System
jest to coś specyficznego dla systemu operacyjnego, a ten poniżej /Library
jest używany bardziej do rzeczy innych firm. Ponadto LaunchDaemons
„powinien zawierać elementy, które będą działały jako root, ogólnie procesy w tle”, gdzie LaunchAgents
„jako użytkownik lub w kontekście użytkownika”. Źródłem tych cytatów jest świetny artykuł o wydaniu, z którym konsultuję się w sprawie pytań.
Istnieją również haki logowania, jeśli wolisz, aby skrypt był uruchamiany (jako root), gdy użytkownik loguje się zamiast podczas uruchamiania komputera.
cron
w OS X domyślnie nie jest tak świetnie z logowaniem (kilka dni temu był na ten temat).