Por que a linha 'cron.hourly' em '/ etc / crontab' é a única sem 'test -x / usr / sbin / anacron'?

3

Ainda não alterei meu /etc/crontab . Ainda é o conteúdo padrão, que também é o conteúdo padrão para muitas distribuições do Linux:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the 'crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Por que a linha cron.hourly é a única sem test -x /usr/sbin/anacron ? Por que não há um cron.hourly em anacrontab também?

Atualização:

Como @JakeGould comentou, a resposta para "O que exatamente test -x /usr/sbin/anacron faz?" pode ser encontrado no link por exemplo. Mas a questão principal ainda permanece: por que o procedimento para cron.hourly difere das outras linhas?

    
por Jayjayyy 17.06.2018 / 22:12

1 resposta

4

Como o menor período que o Anacron foi projetado para trabalhar é diário, por isso não pode ser usado para gerenciar trabalhos cron cronicos.

O Anacron foi projetado para lidar com um caso de uso muito específico, certificando-se de que as tarefas agendadas com pouca frequência ainda sejam executadas em sistemas que nem sempre estão ligados. Realisticamente, não há quase nada que precise ser executado a cada hora, e precisam ser executados imediatamente se uma execução por hora for perdida. Diante disso, os desenvolvedores da Anacron decidiram permitir um código significativamente mais simples (e também mais confiável) que não presta atenção ao tempo que as tarefas anteriores executavam, apenas a data em que elas eram executadas. Por sua vez, isso significa que o Anacron foi projetado para operar em termos de dias, não horas ou minutos, como a maioria das implementações cron e, portanto, não pode ser usado para lidar com trabalhos por hora.

Na verdade, o Anacron também não faz nenhum agendamento, e é por isso que as entradas no seu /etc/crontab estão lá, sem elas, o anacron não é executado (ou pode ser executado apenas na inicialização), então elas re lá para se certificar de que funciona mesmo se o sistema estiver ligado por um longo tempo.

No que diz respeito a trabalhos por hora em geral, você provavelmente encontrará /etc/cron.hourly vazio em seu sistema. A maioria dos usos clássicos para isso (ou tarefas agendadas mais frequentes) eram casos em que você estava se certificando de que algo estava atualizado ou verificando o estado de algum hardware ou software por meio de pesquisa. Ambos os casos de uso são melhor atendidos usando modelos orientados a eventos em vez de modelos de pesquisa e, portanto, geralmente migrados para esses projetos.

    
por 18.06.2018 / 20:25