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/crontabou usando crontabna 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, cronele foi substituído por, launchdmas launchdé compatível com o cronsignificado que você ainda pode usar, cronmas na verdade está launchdfazendo todo o trabalho.
Se você quiser usar, launchdtambé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:
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)
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)
Senhor, no seu exemplo de arquivo de configuração launchd, eu poderia te beijar . Mas eu não devo.
Paul D. Waite
5
launchdé o caminho a percorrer sob OS X.
zneak
Sim, essa foi a minha impressão. Parece que houve alguns problemas no Tiger, mas a Apple parece ter aprimorado desde então.
Paul D. Waite
No OS 10.7.4, não há arquivo / etc / crontab. ): Então fiz 'what crontab' e isso me deu / usr / bin / crontab, mas isso é um arquivo ilegível.
Hermann Ingjaldsson
@HermannIngjaldsson / usr / bin / crontab é um programa; se você executá-lo em um terminal com 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.
Re
8
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.
Absolutamente. A razão pela qual eu postei esta resposta em primeiro lugar foi apoiar o desenvolvedor.
Mark Hall
5
O CronniX é uma interface gráfica agradável para agendar tarefas do cron no mac ... Bastante decente se você não quiser ir e se aprofundar na documentação do cron.
Você deve encontrar tutoriais suficientes para pesquisar no cronGoogle.
Depende do que você deseja: os scripts do iCal só serão executados se você estiver logado, cronexecuta 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. cronestá fazendo isso.
Aviso: se você usar esta ferramenta, verifique se ela RunAtStartestá 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 RunAtStartnão interfere com a programação fixa.
Andrea Lazzarotto
1
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.
Parece-me que Lingon está em desenvolvimento ativo ; a versão atual 3 está disponível na AppStore junto com a versão anterior 2. Ambos custam alguns dólares e recebem críticas muito variadas. Eu pessoalmente uso o Lingon 3 com algum sucesso, mas não o recomendaria para o objetivo deste artigo em detrimento de outras ferramentas mencionadas em outras respostas (cron, at, etc.).
ssc 17/01
A última vez que usei o Lingon foi há mais de 2 anos. Na época, funcionou bem para mim, mas não usei os versons recentes. Pena que não é tão confiável como era antes.
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.
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 usandocrontab
na linha de comando):No Mac OS X,
cron
ele foi substituído por,launchd
maslaunchd
é compatível com ocron
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:
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:
(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 ):
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)
fonte
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.
fonte
O CronniX é uma interface gráfica agradável para agendar tarefas do cron no mac ... Bastante decente se você não quiser ir e se aprofundar na documentação do cron.
fonte
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.fonte
Uma atualização: você pode conferir alguns aplicativos na Mac OS X App Store que fazem isso:
Programador de tarefas LaunchD
Plisterine
O Lingon também parece estar disponível, dependendo do SO que você está executando.
fonte
Se você quiser experimentar o GRATUITO, sugiro Tarefa até o amanhecer
http://www.macupdate.com/app/mac/33283/task-till-dawn
fonte
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.
fonte
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. DesabilitarRunAtStart
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.
fonte
... 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
fonte
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.
fonte