Cron.hourly não será executado

46

Ok, então eu fiz o meu script, eu coloquei em /etc/cron.hourly , então eu chmod 777 o arquivo, mas ele não será executado (automaticamente). Se eu executar manualmente, funciona bem. Preciso fazer mais alguma coisa?

    
por Switchkick 20.10.2010 / 09:55

5 respostas

12

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
    
por oli206 20.10.2010 / 13:44
132

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

Por exemplo, dar uma extensão ao seu script tornará isso inválido e fará com que o trabalho não seja executado. [a-zA-Z0-9_-] são os caracteres válidos, então o '.' torna isso inválido.

Ao adicionar um trabalho a /etc/cron.hourly (ou .daily , .weekly , etc), sempre teste depois que run-parts irá executá-lo emitindo o comando:

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

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

Qual foi o nome do seu roteiro?

    
por DaithiF 03.05.2011 / 18:12
4

Seu problema provavelmente está nas permissões excessivamente abertas, que permitem que qualquer pessoa edite seu arquivo. Experimente 755 .

Examinar as entradas do cron na sua saída do syslog deve confirmar isso.

    
por Cry Havok 20.10.2010 / 10:24
4

A resposta de DaithiF deve ser a resposta correta.

Além disso, meu script não tinha #!/bin/bash na primeira linha. Mesmo que o script possa ser executado com a linha de comando, run-parts rejeitou dizendo "Exec format error".

Alterar o nome do arquivo de scriptname.sh para scriptname e adicionar a #!/bin/bash na primeira linha ativou meu script para ser executado a cada hora.

    
por Ben Lin 07.08.2014 / 23:10
0

Quando você corre

crontab -l

esta tarefa está na lista?

se não, adicione-o

crontab -e

adicione esta linha

0 * * * * yourScript

se estiver nesta lista, tente adicionar o caminho da linguagem de programação ao topo do seu script

Exemplo:

bash: #!/bin/bash

Essas duas coisas sempre resolveram meus problemas:)

    
por Wolfy 20.10.2010 / 10:08