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.plistem /Library/LaunchAgents/e faça root:wheelo proprietário / grupo.
/Library/LaunchAgentsvez de /System/Library/LaunchDaemonsuma 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.
cronno OS X não seja tão bom com o registro por padrão (havia um tópico sobre isso há apenas alguns dias).