Cron.hourly não será executado

55

Ok, então eu fiz o meu script, /etc/cron.hourlycoloquei chmod 777o arquivo no arquivo, mas ele não será executado automaticamente. Se eu executá-lo manualmente, ele funciona bem. Preciso fazer mais alguma coisa?

Switchkick
fonte
Esta resposta não deveria ter recebido tantas votações sem o nome do arquivo e do conteúdo.
usuário desconhecido

Respostas:

13

Por que não usar o crontab (/ etc / crontab) e usar * / 1 no campo hora. Eu usei isso para executar um script a cada 5 minutos e funciona bem:

# m h dom mon dow user  command
* */1  * * *   user    command
oli206
fonte
6
Usar cron.dailye amigos funciona um pouco melhor se a máquina não estiver funcionando o tempo todo, porque o anacron tenta aproximar o cronograma correto, enquanto o cron simples simplesmente não os executará se a máquina não estiver ligada a noite toda. Para trabalhos horários, isso provavelmente não importa tanto.
poolie
9
Eu realmente aprecio a próxima resposta, pois ela resolve o problema com o cron.hourly, em vez de encontrar uma solução alternativa.
Tishma
4
Esta não é uma resposta para a pergunta
josh123a123
@poolie Como pode ser visto em/etc/crontab : cron.daily, cron.weeklye cron.monthly correr com anacron (se disponível), mas por hora run-parts --report /etc/cron.hourly.
Pablo #
144

As entradas em cron.hourlysão executadas pelo mecanismo de peças de execução ( man run-partspara obter mais informações). E run-partsé exigente quanto aos nomes de arquivos que considera válidos.

Por exemplo, atribuir uma extensão ao seu script o tornará inválido e resultará na execução da tarefa. [a-zA-Z0-9_-]são os caracteres válidos, então o '.' torna inválido.

Ao adicionar um trabalho a /etc/cron.hourly(ou .daily, .weeklyetc), sempre teste depois que run-partsrealmente o executará emitindo o comando:

run-parts --test /etc/cron.hourly

Se executando este comando, ele mostra seu arquivo, significa que funcionou. Caso contrário, se não mostrar nada, seu nome de arquivo não será válido.

Qual era o nome do seu script?

DaithiF
fonte
Existem dois: cerebro_random_response.sh e Cerebro Temperature.sh não é bom?
Switchkick 14/05
21
correto, não é bom :) [a-zA-Z0-9_-] são os caracteres válidos, então o '.' torna inválido. Isto é o que eu quis dizer acima por 'dar o seu script uma extensão irá torná-lo inválido'
DaithiF
11
OMG, isso acabou de salvar uma enorme dor de cabeça. OBRIGADO! giving your script an extension will make it invalid and result in the job not being run
Jonathan S. Fisher
Você também pode usar --reportpara realmente executar os scripts.
Pablo A
5

Seu problema provavelmente se deve às permissões excessivamente abertas, que permitem que qualquer pessoa edite seu arquivo. Tente em 755vez disso.

A consulta das entradas cron na saída do syslog deve confirmar isso.

Cry Havok
fonte
4

A resposta do DaithiF deve ser a resposta certa.

Além disso, meu script não tinha #!/bin/bashna primeira linha. Mesmo que o script pudesse ser executado com a linha de comando, o run-partsrejeitou dizendo "Erro de formato Exec".

Alterar o nome do arquivo de scriptname.shpara scriptnamee adicionar a #!/bin/bashprimeira linha permitiu que meu script fosse executado a cada hora.

Ben Lin
fonte
-1

Quando você corre

crontab -l

esta tarefa está na lista?

caso contrário, adicione-o

crontab -e

adicione esta linha

0 * * * * yourScript

se estiver nesta lista, tente adicionar o caminho da linguagem de programação na parte superior do seu script

Exemplo:

bash: #!/bin/bash

Essas 2 coisas sempre resolviam meus problemas :)

Wolfy
fonte
Feito tudo e o script é bom, funciona como um encanto. Também está na lista de crontab, mas nenhuma tarefa horária é executada. Obrigado mesmo assim :(
Switchkick