Aqui está o que eu fiz no Debian Jessie:
- instale o cron via
apt-get install cron
- coloque um
backup_crontab
arquivo/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 específico ou ativar o "serviço" do cron em si?
ls /etc/cron.d
é equivalente acd /etc/cron.d && ls
em termos de saída. A única diferença é que o diretório de trabalho não será alterado.Respostas:
Os arquivos
/etc/cron.d
também precisam listar o usuário em que o trabalho deve ser executado.ie
Você também deve garantir que as permissões e o proprietário: grupo estejam definidos corretamente (
-rw-r--r--
e sejam de propriedade deroot:root
)fonte
crontab -l
relatórios sobre entradas cron em/var/spool/cron/crontabs/
- ou seja, as crontabs por usuário ./etc/cron.d
arquivos são crontabs do sistema e não são relatados porcrontab -l
.root
no arquivo - bastacrontab -l
não mencioná-lo, como você explica por que - obrigado pela sua ajudaetc/cron.d
um arquivo com um ponto no meio do nome e o trabalho nunca foi executado até que eu renomeouOutra coisa que observei é que o arquivo
/etc/cron.d
não pode ter uma extensão. No meu caso particular, eu tinha um link simbólico:A restrição de nome de arquivo está documentada na página de manual da parte da execução: http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html , pode-se passar uma opção --regex para substituir o formato do arquivo.
No entanto, o comportamento padrão do cron ficou sem extensões. Consulte os comentários em: https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
fonte
Eu acho que você provavelmente está faltando 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 não havia quebra de linha após a última entrada no meu
/etc/cron.d/own_cron
e isso faz com que o arquivo inteiro seja ignorado.fonte
Se você é o único usuário deste computador, pode usar apenas
crontab -e
. Você será solicitado a selecionar um editor na primeira vez em que executar o comando. Então você pode adicionar isso a ele:Se você mudar para uma conta de usuário normal, precisará usar
sudo crontab -e
para configurar os scripts nos quais deseja agendar a execuçãoroot
.crontab -l
exibe apenas o crontab atual, depois de configurar um usandocrontab -e
. Se você tiver um arquivo cron em/etc/cron.d
/, ele não será exibido comcrontab -l
.Você também vai precisar para verificar se o script é executável com:
chmod +x /backup.sh
.fonte
Dockerfile
modo que não pode realmente fazercrontab -e
- mas é uma informação útil de qualquer maneiraPara Cron de distros * bian (como Raspbian), você precisa ativar o
-l
parâmetro do daemon Cron. É recomendável fazer isso usando o/etc/default/cron
arquivo de configuração, habilitando oEXTRA_OPTS
.fonte
-l
opção para o daemon cron autoriza um conjunto estendido de nomes de arquivos no/etc/cron.d
diretório irá corrigir o problema.Verifique sua versão de
cron
.Parece que se você estiver usando o crond de Dillon, não precisará do usuário em uma
/etc/cron.d
entrada.Eu descobri isso depois de quase arrancar meu cabelo restante.
Eu tenho um punhado de entradas que foram descartadas
/etc/cron.d
por várias instalações. Depois de alguma investigação, descobri que um deles estava funcionando. Não tinha o usuário. Então tirei o usuário dos outros. E eles começaram a trabalhar.fonte