Cron? Launchd? iCal ??
Se sim, como?
Cron? Launchd? iCal ??
Se sim, como?
Respostas:
Para referência, todas as três opções funcionariam. A opção iCal, no entanto, tem mais limitações que as outras.
(Existem GUIs para editar cron e launchd conforme mencionado em outras respostas)
Cron é o mais direto e conhecido, e há muitos tutoriais disponíveis. O Coles Notes é adicionar a última linha abaixo ao seu crontab (editando /etc/crontab
ou usando crontab
na linha de comando):
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
No Mac OS X, cron
ele foi substituído por, launchd
mas launchd
é compatível com o cron
significado que você ainda pode usar, cron
mas na verdade está launchd
fazendo todo o trabalho.
Se você quiser usar, launchd
também deverá consultar outras perguntas aqui no Superusuário: (por exemplo, como executo um comando launchd como root? ) Para onde você deseja salvar seu arquivo de configuração (o arquivo plist) como quando é executado depende do diretório em que está armazenado e de como é carregado (por exemplo, se você usou o sudo ou não) - semelhante ao cron.
Uma amostra é executada diariamente plist launchd (verifique se o arquivo e o rótulo são os mesmos - menos o plist para o rótulo) a seguir - esse script é executado todos os dias às 3 minutos após a meia-noite:
<?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>local.IDENTIFIER_HERE.SOMETHING</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<false/>
<key>UserName</key>
<string>USERNAME HERE</string>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>ProgramArguments</key>
<array>
<string>Argument_1</string>
<string>Argument_2</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>03</integer>
</dict>
</dict>
</plist>
Também é importante notar que as tarefas iniciadas, se elas foram agendadas para quando o computador está em suspensão ou desligado, serão executadas quando o computador ficar disponível novamente (ligando ou ativando) - embora apenas uma vez, não importando quantos dias houver fui. Edit: Eu estava em um documento da Apple que dizia que, se a máquina estiver desligada, você perderá todos os eventos de inicialização durante esse período (seu script não será iniciado na inicialização), (o sono inicia o script ao acordar)
Outra opção é usar " at " (consulte a página de manual com "man at"). O script pode se reagendar com, por exemplo:
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(use "+ 10 minutos" em vez de "amanhã" para executá-lo a cada 10 minutos; para interromper o agendamento, basta "at -l" para listar os IDs de trabalho agendados e depois "at -r id " para remover o trabalho)
Pode ser necessário iniciar o daemon correspondente (atrun) primeiro com (consulte https://superuser.com/a/43680 ):
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Vantagens: correção rápida, sem necessidade de acesso ao sudo / root, padrões de agendamento complicados e fáceis de fazer Desvantagem: método de agendamento não padrão para OS X (que é iniciado)
launchd
é o caminho a percorrer sob OS X.
crontab -e
, ele o levará a um editor de texto baseado em terminal em um arquivo que se tornará seu crontab pessoal quando você o salvar.
LaunchControl é outra GUI para launchd / launchctl. Embora as alternativas mencionadas por outros sejam perfeitamente capazes de iniciar um script diariamente, com o LaunchControl você pode configurar agendas complexas (como "uma vez por dia da semana, nos fins de semana a cada hora, entre as 14:00 e as 20:00"). Também é (AFAIK) a única ferramenta que realmente valida o trabalho. Se um trabalho não funcionar como o esperado, ele mostrará o motivo.
É grátis para experimentar pelo tempo que você quiser.
cron
Google.Depende do que você deseja: os scripts do iCal só serão executados se você estiver logado, cron
executa o script sem estar logado. Não sei se o iCal executa um script se o Mac foi desligado no momento em que o script deveria ter. foi executado. cron
está fazendo isso.
Uma atualização: você pode conferir alguns aplicativos na Mac OS X App Store que fazem isso:
O Lingon também parece estar disponível, dependendo do SO que você está executando.
Se você quiser experimentar o GRATUITO, sugiro Tarefa até o amanhecer
Aqui está um utilitário simples e gratuito para gerar o XML básico:
http://www.gieson.com/Library/projects/utilities/launcha/
Com este utilitário, não há necessidade de instalar um programa, basta salvar os resultados na sua pasta Library / LaunchAgents.
RunAtStart
está definida como falsa (a menos que você queira que seja verdadeira). Passei uma hora descobrindo por que meu Finder congelaria e impediria o carregamento da área de trabalho na inicialização. Desabilitar RunAtStart
não interfere com a programação fixa.
Eu sempre uso o Lingon para isso, mas parece que está fora de desenvolvimento. Você poderia experimentar o Crontooie , mas nunca o usei pessoalmente. Ou apenas edite o arquivo crontab no terminal.
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $
... quaisquer linhas de comando que você usar para ".... cortar ...." serão executadas a cada cinco minutos.
30 anos de progresso, e 'cron' ainda é meu agendador favorito.
-C
Se um evento do calendário atender às suas necessidades, o aplicativo Automator interno também permitirá criar alarmes de calendário que são acionados por eventos do calendário. Você pode usar algumas das ações internas da interface do usuário para fazer o que deseja, ou também executar um aplicativo ou um script personalizado AppleScript, JavaScript ou shell.