Voglio uno script (bash / zsh / ruby / ...) da eseguire all'avvio in OS X. Qual è il modo più semplice per farlo, senza fare confusione con i file xml / plist e preferibilmente non è necessario creare un meta AppleScript .
Voglio uno script (bash / zsh / ruby / ...) da eseguire all'avvio in OS X. Qual è il modo più semplice per farlo, senza fare confusione con i file xml / plist e preferibilmente non è necessario creare un meta AppleScript .
Risposte:
MacOS X utilizza Vixie cron, che ha speciali metatag da avviare al riavvio. Vedi la pagina man per il formato del file.
qualcosa di simile a:
@reboot /path/to/script.sh
nel tuo crontab funzionerebbe. Non sono sicuro che questa sia una soluzione migliore di launchd, probabilmente hai più meta strumenti che guardano a launchd che a cron.
Nel caso in cui cambi opinione:
<?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>
Conservare come com.superuser.245713.plist
in /Library/LaunchAgents/
e creare root:wheel
il proprietario / gruppo.
/Library/LaunchAgents
piuttosto che /System/Library/LaunchDaemons
dal momento che /System
è roba specifica del sistema operativo e quello sotto /Library
è usato più per roba di terze parti. Inoltre, LaunchDaemons
"dovrebbe contenere elementi che verranno eseguiti come root, in genere processi in background" dove LaunchAgents
"esegui come utente o nel contesto di userland". La fonte di queste citazioni è un ottimo articolo su launchd che consulto per le domande di lancio.
Esistono anche hook di accesso se si preferisce eseguire lo script (come root) quando un utente accede anziché all'avvio del computer.
cron
su OS X non è eccezionale con la registrazione di default (c'era un argomento su questo solo pochi giorni fa).