Jaki jest najłatwiejszy sposób uruchomienia skryptu podczas uruchamiania systemu w OS X?


12

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:


7

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.


Uwielbiam to, udowodniłeś, że się mylę :-) Chociaż cronw OS X domyślnie nie jest tak świetnie z logowaniem (kilka dni temu był na ten temat).
Daniel Beck

to jest doskonałe.
John Bachir

1
Zauważ, że cron, at i tak dalej są w pewnym stopniu przestarzałe w OS X. Nie mogę znaleźć wyraźnego stwierdzenia tego w różnych dokumentach, ani nie wiem, jak agresywnie są przestarzałe, ale uruchomienie wydaje się ogólnie preferowane. Zobacz wprowadzoną dokumentację dla wprowadzenia.
Norman Gray

Plist nie działa dla mnie - działa jak urok - dziękuję! :-D
BG Bruno

Szczerze mówiąc, nie byłem pewien, czy składnia będzie taka sama w systemie OS X.
NobleUplift,

6

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.plistw /Library/LaunchAgents/i określ root:wheelwłaściciela / grupę.


1
Prawdopodobnie lepiej jest w to włożyć, /Library/LaunchAgentsniż /System/Library/LaunchDaemonsponieważ /Systemjest to coś specyficznego dla systemu operacyjnego, a ten poniżej /Libraryjest 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ń.
Doug Harris

@DougHarris Dzięki za sugestie! Muszę przyznać, że właśnie pisałem ten ad-hoc - chociaż zwykle testuję swoje rozwiązania, nie byłem skłonny do ponownego uruchomienia komputera.
Daniel Beck

Jest to bardzo miłe, chociaż bardziej podoba mi się rozwiązanie Vixie cron :)
John Bachir

Właściwie należy go umieścić w / Library / LaunchDaemons. Agenty działają tylko w sesji użytkownika, tzn. Nie będą działać (a ściślej kwalifikują się do uruchomienia), dopóki ktoś się nie zaloguje, będą uruchamiane za każdym razem, gdy ktoś się zaloguje, i zawsze będą działać jako użytkownik aktualnie zalogowany. Demony działają (/ stają się uprawnione do uruchamiania) podczas rozruchu i podczas gdy normalnie działają jako root, mogą być uruchamiane jak każdy inny użytkownik z kluczem UserName.
Gordon Davisson,


2

Istnieją również haki logowania, jeśli wolisz, aby skrypt był uruchamiany (jako root), gdy użytkownik loguje się zamiast podczas uruchamiania komputera.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.