Ok, então eu fiz o meu script, /etc/cron.hourly
coloquei chmod 777
o arquivo no arquivo, mas ele não será executado automaticamente. Se eu executá-lo manualmente, ele funciona bem. Preciso fazer mais alguma coisa?
Ok, então eu fiz o meu script, /etc/cron.hourly
coloquei chmod 777
o arquivo no arquivo, mas ele não será executado automaticamente. Se eu executá-lo manualmente, ele funciona bem. Preciso fazer mais alguma coisa?
Respostas:
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
cron.daily
e 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.
/etc/crontab
: cron.daily
, cron.weekly
e cron.monthly
correr com anacron (se disponível), mas por hora run-parts --report /etc/cron.hourly
.
As entradas em cron.hourly
são executadas pelo mecanismo de peças 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, 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
, .weekly
etc), sempre teste depois que run-parts
realmente 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?
giving your script an extension will make it invalid and result in the job not being run
--report
para realmente executar os scripts.
A resposta do DaithiF deve ser a resposta certa.
Além disso, meu script não tinha #!/bin/bash
na primeira linha. Mesmo que o script pudesse ser executado com a linha de comando, o run-parts
rejeitou dizendo "Erro de formato Exec".
Alterar o nome do arquivo de scriptname.sh
para scriptname
e adicionar a #!/bin/bash
primeira linha permitiu que meu script fosse executado a cada hora.
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 :)