Eu quero que um script (bash / zsh / ruby / ...) seja executado no momento da inicialização no OS X. Qual é a maneira mais simples de fazer isso, sem mexer com arquivos xml / plist e, de preferência, sem precisar criar um meta AppleScript .
Eu quero que um script (bash / zsh / ruby / ...) seja executado no momento da inicialização no OS X. Qual é a maneira mais simples de fazer isso, sem mexer com arquivos xml / plist e, de preferência, sem precisar criar um meta AppleScript .
Respostas:
O MacOS X usa o Vixie cron, que possui metatags especiais para iniciar no momento da reinicialização. Consulte a página do manual para o formato do arquivo.
algo como:
@reboot /path/to/script.sh
no seu crontab funcionaria. Não tenho certeza de que essa seja uma solução melhor que o launchd, você provavelmente tem mais meta-ferramentas que olham para launchd do que o cron.
Caso você mude de opinião:
<?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>
Armazene como com.superuser.245713.plist
em /Library/LaunchAgents/
e faça root:wheel
o proprietário / grupo.
/Library/LaunchAgents
vez de /System/Library/LaunchDaemons
uma vez /System
é coisa OS-específico e aquela sob /Library
é usado mais para o material de terceiros. Além disso, LaunchDaemons
"deve conter itens que serão executados como raiz, geralmente processos em segundo plano", onde LaunchAgents
"executados como usuário ou no contexto da área do usuário". A fonte dessas citações é um ótimo artigo sobre o launchd que eu consulte para perguntas do launchd.
Também existem ganchos de login, se você preferir que o script seja executado (como root) quando um usuário efetuar login em vez de quando a máquina for inicializada.
cron
no OS X não seja tão bom com o registro por padrão (havia um tópico sobre isso há apenas alguns dias).