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 Items
tela e adicione o item lá
+
símbolo.app
no painelOptions
e selecioneOpen at Login
Se 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 launchd
arquivo 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
plist
manualmente
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
RunAtLoad
opção iniciará o aplicativo na primeira vez que o launchctl executar isso.KeepAlive
opção reiniciará o aplicativo se ele falhar.StartCalendarInterval
executará em um determinado momento. Presumivelmente, isso é mutuamente exclusivo dos dois anteriores, mas está incluído para mostrar o que pode ser feito comlaunchd
Há 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/