Devo usar cron.hourly ou crontab?

9

Parece que todas as sugestões para usar / programar o awstats são via crontab, como tal: 0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null(executando o awstats a cada hora).

No entanto, se eu verificar crontab -l, ele diz que o crontab está vazio para o meu usuário.

No entanto, quando verifico /etc/cron.hourly, tenho um arquivo awstats com o seguinte:

#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now         -configdir="/etc/awstats"           -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

Só para que você saiba, meu awstats é atualizado corretamente, ele cria seus relatórios e tudo é bom.

A execução de um comando crontab cria uma entrada na pasta cron especificada? (ou seja, cron.hourly ou cron.daily, etc)? Ou eles não estão relacionados? Se eles estão relacionados, por que meu usuário não possui uma entrada crontab?

bebida com gás
fonte

Respostas:

13

crontab -eé a maneira tradicional de criar um crontab. Eu acho estranho e antiquado, mas as pessoas ainda o usam.

/etc/cron.hourly, incluindo cron.daily, cron.weekly& /etc/cron.d, etc. são fornecidos pela maioria das distribuições Linux, porque são convenientes e funcionam bem com ferramentas de automação, como gerenciadores de pacotes e sistemas de gerenciamento de configurações. É muito fácil para um gerenciador de pacotes colocar um arquivo em /etc/cron.hourly/foocomparação com o script e editar um crontab existente. Editar um arquivo por meio de programação através de um gerente pode pacote de corromper o arquivo, adicione entradas duplicadas, apagar a linha errada, estragar comentários, etc. Veja Editfiles considerada prejudicial para alguma discussão, como este problema tem sido em torno de um tempo.

A execução de um comando crontab cria uma entrada na pasta cron especificada?

No. /etc/cron.daily/fooé criado pelo gerenciador de pacotes ou criado manualmente. Não é criado quando você executa o comando crontab. crontab -ecriará o crontab abaixo /var, como /var/spool/cron/root.

Eu prefiro /etc/cron.$period/fooe /etc/cron.dporque essa hierarquia é organizada e organizada, e é fácil criar scripts para o meu sistema de Gerenciamento de Configuração. /etc/crontabtambém está disponível no Linux, mas é um pouco monolítico e difícil de editar programaticamente. Sistemas como suporte ao FreeBSD /etc/crontabe /etc/periodic.

Stefan Lasiewski
fonte
1
Obrigado pela sua resposta, eu também prefiro, pois estou acostumado a soltar arquivos de configuração em pastas .d (por exemplo, conf.d, etc)!
bebida com gás
Só posso concordar com isso. Eu também prefiro usar os sistemas /etc/crontabquando se trata de executar tarefas do sistema em vez de usar o crontab do root. Dessa forma, é possível saber facilmente o que o sistema está fazendo sem se aprofundar no crontab de cada usuário.
Spack
1
Eu concordo com esta resposta. Talvez mencione algumas outras diferenças: /etc/cron.$period/ contém scripts auto-suficientes que são executados pelo usuário root. OTOH /etc/cron.d/ contém arquivos de inclusão no crontab -eformato. Por fim, o / etc / cron * destina-se a scripts de execução raiz, enquanto crontab -eestá disponível para todos os usuários.
Nils Toedtmann
O crontab -ecomando é estranho por padrão. Então, eu criei um script chamado cteque executa dois comandos: export EDITOR=gedite então crontab -eé mais fácil trabalhar com o editor.
SDsolar