Executando um trabalho Cron no Linux a cada seis horas

139

Como posso executar o comando a cada seis horas todos os dias?

Eu tentei o seguinte, mas não funcionou:

/6 * * * * *  mycommand
Tempestade de Gandalf
fonte
7
possível duplicata de Como executar o crontab a cada 2 horas
Cas
2
como sobre * * / 6 * * *
madalinivascu

Respostas:

323

Você esqueceu um *e possui muitos campos. É a hora em que você precisa se preocupar

0 */6 * * * /path/to/mycommand

Isso significa que a cada sexta hora começa em 0, ou seja, nas horas 0, 6, 12 e 18, que você pode escrever como

0 0,6,12,18 * * * /path/to/mycommand
n
fonte
obrigado pela resposta, isso é a cada 6 horas começando a que horas? a hora em que o cron é criado?
perfil completo de Gandalf StormCrow
obrigado, então se eu quisesse executá-lo a partir das 15:00 a cada 6 horas, seria 15 15,23,05,11 * * * /path/to/mycommand?
Gandalf Stormcrow
5
Sim, embora o primeiro campo seja o minuto, que você definiu como 15, então isso significa 15: 15,23: 15,05: 15 e 11:15. (que não é cada 6 horas btw, você poderia ter significado 0 15,21,3,9 * * *)
nºs
6

Você deve incluir um caminho para seu comando, pois o cron é executado com um ambiente extensivamente reduzido. Você não terá todas as variáveis ​​de ambiente que possui em sua sessão de shell interativa.

É uma boa idéia especificar um caminho absoluto para o seu script / binário ou definir PATH no próprio crontab. Para ajudar a depurar qualquer problema, eu também redirecionaria stdout / err para um arquivo de log.

Brian Agnew
fonte
1
obrigado pela resposta, mas se eu declarar variáveis ​​de ambiente dentro do meu arquivo sh como export variable=somethingeu ainda posso usá-las dentro desse mesmo script? e eu usar a data de comando monte dentro do script
Gandalf Stormcrow
@Gandalf - Sim. Você pode definir todas as suas variáveis ​​env dentro do script. Essa é uma boa idéia, pois significa que o script é autônomo e isolado de outras coisas que você pode querer executar dentro cron
Brian Agnew
5
0 */6 * * * command

Esta será a maneira perfeita de dizer 6 horas por dia.

Seu comando dura seis minutos!

rkoots
fonte
2
@ArsenArsen Tenho certeza de que foi porque realmente não adiciona nada à resposta aceita existente, escrita 4 anos antes.
Adinia 03/04
2

Por favor, mantenha a atenção nesta sintaxe :

* */6 * * *

Isso significa 60 vezes (a cada minuto) a cada 6 horas,

não

uma vez a cada 6 horas.

Andrea Bisello
fonte
0
0 */6 * * *

O crontab a cada 6 horas é uma programação cron comumente usada.

Nilesh Patil
fonte
4
O que essa resposta acrescenta que as outras respostas não? O @rkoots já mencionou esse comando exato.
Adeus StackExchange
"Comumente usado" ? Por quê? Você pode elaborar?
Peter Mortensen
0

Você precisa usar *

0 */6 * * * /path/to/mycommand

Além disso, você pode consultar https://crontab.guru/, que o ajudará a agendar melhor ...

rkoots
fonte
-2

Experimentar:

0 */6 * * * command

. * tem que

rkoots
fonte
1
A última linha aqui não faz muito sentido. Você consideraria expandi-lo?
halfer 3/09/18
1
parece que a resposta está incompleta
ajayramesh 20/01/19