Como você cria um script ou aplicativo para executar ou parar a execução automaticamente quando o sistema é inicializado, quando um usuário faz logon, em um horário específico, quando um disco é anexado, etc.?
Como você cria um script ou aplicativo para executar ou parar a execução automaticamente quando o sistema é inicializado, quando um usuário faz logon, em um horário específico, quando um disco é anexado, etc.?
Respostas:
Se você deseja que algo seja executado quando um usuário efetua login, a maneira mais fácil é usar a GUI. Você pode
System Prefs > Accounts > Login Itemstela e adicione o item lá
+símbolo.appno painelOptionse selecioneOpen at LoginSe você deseja iniciar algo que não é um .app, ou deseja ter mais controle sobre o lançamento, como:
então você deseja usar a solução técnica que é launchd.
A maneira mais fácil de configurar um launchdarquivo de configuração é usar uma ferramenta para ajudar. No momento da redação, o método mais popular é o Lingon (que tem uma versão gratuita mais antiga disponível no SourceForge), ou a ferramenta PList Website .
Se você não quiser usar o Lingon ou o site PList e quiser usar apenas as ferramentas brutas disponíveis no sistema, poderá escrever suas próprias launchd plistmanualmente
Aqui está o meu script launchd para executar o SomeApp continuamente após a inicialização do sistema (independente do login de um usuário). Ele está em / System / Library / LaunchAgents / e é chamado SomeApp.restart.plist. Se for executado com base no login de um usuário, poderá ser armazenado em ~ / Library / LaunchAgents /
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Carregue uma vez com
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoadopção iniciará o aplicativo na primeira vez que o launchctl executar isso.KeepAliveopção reiniciará o aplicativo se ele falhar.StartCalendarIntervalexecutará em um determinado momento. Presumivelmente, isso é mutuamente exclusivo dos dois anteriores, mas está incluído para mostrar o que pode ser feito comlaunchdHá muitas opções adicionais que podem ser encontrados através da experimentação de Lingon ou lendo as páginas do manual para launchctl, launchd.plist, plist, launchd.conf, etc.
launchctl load -w ...para tornar a alteração persistente. Com base no seu feedback que eu atualizei meu roteiro PowerUser configurador OSX
Lingon ainda funciona. Eu apenas o usei na semana passada para criar uma "tarefa agendada". Depois de baixá-lo, tive que usar seu atualizador automático para obter a versão mais recente, mas funciona bem.
Se for necessário executar apenas quando o sistema for inicializado, use a guia Itens de login do painel de preferências Contas em Preferências do sistema.

Se for um script, use o AppleScript Editor para salvá-lo como um aplicativo. Se não for um script AppleScript, você ainda poderá usar o AppleScript para executar o script desta forma:
do shell script "your script here"
Não se esqueça do Loginhooks.
Embora eles sejam executados como root, você deve poder executar um script $ HOME / .loginhook usando algo como isto:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
Em seguida, basta adicionar os comandos que você deseja ao ~ / .loginhook
Além disso, embora 'launchd' seja "o caminho do Mac", o crontab ainda é uma opção perfeitamente viável e é muito mais fácil de editar manualmente do que os arquivos XML launchd.
Pessoalmente, paguei alegremente US $ 5 pelo Lingon .
/path/to/script, e sudo defaults write com.apple.loginwindow LoginHook /path/to/script? E o ponto de executar um script no diretório inicial é que cada usuário pode ter um costume (ou não) ~/.loginhook?
A execução de um aplicativo em um horário especificado pode ser feita facilmente no iCal, como acabei de descobrir graças a outro fórum!
Uma coisa a ter em atenção é que, se você tiver vários Macs compartilhando coisas pelo iCloud, esse evento também será executado nos aplicativos que você pode ou não desejar. Para que isso ocorra apenas em um único Mac, é necessário criar o evento em um calendário 'No meu Mac', que você pode fazer da seguinte maneira ...
Eu mesmo acabei de descobrir isso e fiquei agradavelmente surpreso com as duas dicas, então pensei em compartilhá-las aqui.
Eu recebi as informações dessas pessoas úteis por aqui ... então, obrigado!
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/