Como eu faria para que um trabalho cron fosse executado a cada 30 minutos?


224

Eu estou olhando para adicionar uma crontabentrada para executar um script a cada 30 minutos, na hora e 30 minutos após a hora ou algo próximo. Eu tenho o seguinte, mas não parece ser executado em 0.

*/30 * * * *

Qual string eu preciso usar?

O cron está sendo executado no OSX.


Você conseguiu fazer seu crontab funcionar? Seu problema pode não ser o crontab, mas fazê-lo ser usado.
— 25909 Eddie

Está executando outros 2 scripts, um a cada minuto.
— Darryl Hein

1
Estou esperando para ver se uma das respostas abaixo funciona, basta aguardar até os próximos 30 minutos ... em 3 minutos.
— Darryl Hein

2
... Você não pode simplesmente mudar de 0,30 para 0,5? Se 0,5 funciona, por que não 0,30?
— George Stocker

1
Você nunca nos disse se funcionou a uma hora!
— 25909 Eddie

Respostas:


487

Faz:

0,30 * * * * your_command

1
Funciona bem! No CentOS crontab, eu tinha que fazer algo como 0,30 * * * * root your_commandonde root seria o usuário que estou usando.
— prograhammer

@prograhammer - Essa linha fazia parte do crontab de uma raiz ou do crontab de outro usuário?
— Muhamed Huseinbašić

@ MuhamedHuseinbašić boa pergunta, já que existem 2 crontabs diferentes (o global e o usuário). Vou ter que verificar e ver ...
— prograhammer

100

O crontab não entende "intervalos", apenas entende "cronograma"

horas válidas: 0-23 - minutos válidos: 0-59

Exemplo 1

30 * * * * your_command

isso significa "executar quando o minuto de cada hora for 30 " (executaria em: 1:30, 2:30, 3:30, etc)

exemplo 2

*/30 * * * * your_command

isso significa "executar quando o minuto de cada hora é igualmente divisível por 30 " (executaria em: 1:30, 2:00, 2:30, 3:00, etc)

exemplo 3

0,30 * * * * your_command

isso significa "executar quando o minuto de cada hora for 0 ou 30 " (executaria em: 1:30, 2:00, 2:30, 3:00, etc)

é outra maneira de obter os mesmos resultados do exemplo nº 2

exemplo 4

19 * * * * your_command

isso significa "executar quando o minuto de cada hora for 19 " (executaria em: 1:19, 2:19, 3:19, etc)

exemplo 5

*/19 * * * * your_command

isso significa "executar quando o minuto de cada hora é igualmente divisível por 19 " (seria executado em: 1:19, 1:38, 1:57, 2:19, 2:38, 2:57 etc.)

nota: vários refinamentos foram feitos neste post por vários usuários, incluindo o autor


76

Tente o seguinte:

0,30 * * * * your command goes here

De acordo com a página de manual oficial do Mac OS X crontab (5) , a /sintaxe é suportada. Portanto, para descobrir por que não estava funcionando para você, será necessário olhar nos logs para ver o cron. Nesses logs, você deve encontrar uma mensagem clara de falha.

Nota: O Mac OS X parece usar o Vixie Cron, o mesmo que o Linux e os BSDs.


Eu sempre usei * / 30 com sucesso, mas não me lembro de um aplicativo meu em que era muito crítico se ele fosse executado apenas uma vez por hora, então acho que nunca verifiquei.
— 257 Adam Hawes

2
@ Adam Hawes: Eu também usei * / xx com sucesso no passado, mas no Linux e outros UNIXes. Eu pessoalmente não tentei o Mac OSX. A pergunta original não dizia qual sistema operacional. Alguns UNIXes mais antigos não suportam * / xx
— Eddie

Sua resposta também funcionou, mas Vlad tem menos representantes, então eu dei a ele os pontos.
— Darryl Hein

1
@DarrylHein lol, Hoje Eddie tem menos representantes :-p. Eu votei em Eddie.
— iniciante 17/11/14


5

Você mencionou que está usando o OS X- Eu usei o cronnix no passado. Não é tão nerd quanto editá-lo, mas me ajudou a aprender o que as colunas estão em um instante. Apenas um pensamento.


Caso contrário, isso também poderia ser útil.
— Darryl Hein

3

Você pode usar os símbolos ' , ' OR divide ' / '.
Mas ' / ' é melhor.
Suponha o caso de 'a cada 5 minutos'. Se você usar ' , ', precisará escrever o trabalho cron da seguinte maneira:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Isso significa executar o seu_command a cada hora em todos os minutos definidos: 0,5,10, ...

No entanto, se você usar '/', poderá escrever o seguinte trabalho simples e curto:

*/5  *  *  *  *  your_command

Significa executar o seu_comando nos minutos que são divisíveis por 5 ou nas palavras mais simples, '0,5,10, ...'

Portanto, o símbolo divisível '/' é a melhor opção sempre;

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.