Crontab nunca executando enquanto em /etc/cron.d

19

Aqui está o que eu fiz no Debian Jessie:

  • instale o cron via apt-get install cron
  • coloque um arquivo backup_crontab em /etc/cron.d/

No entanto, a tarefa nunca está em execução.

Aqui estão algumas saídas:

/# crontab -l
no crontab for root

/# cd /etc/cron.d && ls
backup_crontab

/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

Há algo a fazer para ativar um crontab em particular ou para ativar o "serviço" cron em si mesmo?

    
por Jivan 16.07.2016 / 20:43

6 respostas

35

Os arquivos em /etc/cron.d também precisam listar o usuário em que o trabalho deve ser executado.

ou seja,

0,15,30,45 * * * * root /backup.sh >/dev/null 2>&1

Você também deve garantir que as permissões e o proprietário: group estejam definidos corretamente ( -rw-r--r-- e de propriedade de root:root )

    
por 16.07.2016 / 21:03
2

Se você é o único usuário neste computador, talvez queira usar apenas crontab -e . Você será solicitado a selecionar um editor na primeira vez que executar o comando. Então você pode adicionar isso a ele:

0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

Se você mudar para uma conta de usuário normal, precisará usar sudo crontab -e para configurar os scripts que deseja agendar como root .

crontab -l exibe somente o crontab atual, depois que você configura um usando crontab -e . Se você tiver um arquivo cron em /etc/cron.d /, ele não será exibido com crontab -l .

Você também precisará verificar se o seu script é executável com: chmod +x /backup.sh .

    
por 16.07.2016 / 20:56
2

Acho que você provavelmente está perdendo uma linha em branco necessária no final do seu arquivo cron. Eu tive o mesmo problema, mas depois de verificar tudo listado aqui (permissões de usuário, nome do arquivo, versão do cron etc.), percebi que eu não tinha quebra de linha após a última entrada no meu /etc/cron.d/own_cron e isso faz com que todo o arquivo seja ignorado .

    
por 23.03.2018 / 11:01
1

Verifique sua versão de cron .

Parece que, se você estiver usando o crond do Dillon, não precisará do usuário em uma entrada /etc/cron.d .

Eu percebi isso depois de quase puxar meu cabelo restante.

Eu tenho um punhado de entradas que foram descartadas em /etc/cron.d por várias instalações. Depois de alguma investigação, descobri que um deles estava funcionando. Não tem o usuário. Então eu tirei o usuário dos outros. E eles começaram a trabalhar.

    
por 20.12.2016 / 19:15
1

Outra coisa que observei é que o arquivo em /etc/cron.d não pode ter uma extensão. No meu caso particular, eu tinha um link simbólico:

# my-job.crontab
* * * * * root echo "my job is running!" >> /tmp/my-job.log

$: ln -sf /home/me/my-job.crontab /etc/cron.d/
# This did not work -> job would not run

$: ln -sf /home/me/my-job.crontab /etc/cron.d/my-job
# This did work -> job ran fine
    
por 29.08.2018 / 17:19
-1

Para Cron de * bian distros (como Raspbian) você precisa ativar o parâmetro -l do daemon Cron. Isso é aconselhável fazer usando o arquivo /etc/default/cron config, habilitando o EXTRA_OPTS .

    
por 18.05.2017 / 09:43

Tags