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?


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

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?


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.


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.


-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 :)


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
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.