Confuso sobre o relacionamento entre cron e anacron

19

Eu tenho pesquisado em vão no Google uma explicação geral de como cron e anacron trabalham juntos. As páginas de manual são muito profundas para mim neste momento.

Fico confuso porque adiciono tarefas ao crontab, e isso funciona, mas quando as excluo do crontab, elas ainda funcionam sob o anacron. Eu vejo as tarefas em /etc/cron.daily, mas não sei como elas chegaram lá. O cron está sempre sendo executado no meu sistema, mas não anacron. De fato, vejo que o anacron é iniciado pelo cron!

Basicamente, eu gostaria de uma introdução no nível do usuário sobre como adicionar e remover tarefas, já que as respostas fáceis de ler que dizem para você editar o crontab claramente não estão completas. Um link para um tutorial seria bom.

Mármore orgânico
fonte

Respostas:

19

Ambos crone anacronsão daemons que podem agendar a execução de tarefas recorrentes a um certo ponto no tempo definido pelo usuário.

A principal diferença entre crone anacroné que o primeiro assume que o sistema está funcionando continuamente. Se o seu sistema estiver desligado e você tiver um trabalho agendado durante esse período, o trabalho nunca será executado.

Por outro lado, anacroné 'anacrônico' e foi projetado para sistemas que não estão executando 24x7. Para isso, ele anacronusa arquivos com registro de data e hora para descobrir quando foi a última vez que seus comandos foram executados. Ele também mantém um arquivo /etc/anacrontabcomo cronfaz. Além disso, cron.dailyexecuta anacron todos os dias. Portanto, anacronsó pode executar um trabalho uma vez por dia, mas cronpode executar quantas vezes a cada minuto.

De man anacrontab:

Quando executado, o Anacron lê uma lista de trabalhos de um arquivo de configuração, normalmente / etc / anacrontab (consulte anacrontab (5)). Este arquivo contém a lista de trabalhos que a Anacron controla. Cada entrada de trabalho especifica um período em dias, um atraso em minutos, um identificador de trabalho exclusivo e um comando shell.

Para cada trabalho, a Anacron verifica se esse trabalho foi executado nos últimos n dias, em que n é o período especificado para esse trabalho. Caso contrário, o Anacron executa o comando shell do trabalho, depois de aguardar o número de minutos especificado como o parâmetro delay.

Após a saída do comando, o Anacron registra a data em um arquivo de carimbo de data / hora especial para esse trabalho, para que ele saiba quando executá-lo novamente. Somente a data é usada para os cálculos de tempo. A hora não é usada.

Isso significa que, se uma tarefa está programada para ser executada diariamente e o computador foi desligado durante esse período, quando o anacron é executado, é possível ver que a última foi executada há mais de 24 horas e executá-la corretamente.

Por exemplo, se você especificar o seguinte em /etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

e no dia em que a script.shtarefa deve ser executada, se o sistema não estiver em execução, anacronexecutará os script.sh15 minutos após a reinicialização do sistema.

Pouca referência:

Ron
fonte
Obrigado, esse tutorial do Digital Ocean é particularmente bom, como geralmente é. Não tenho certeza de como eu perdi, então aprecio o link.
Organic Marble
Obrigado. Por "cron.daily executa anacron a cada hora", você gerencia "cron.daily executa anacron diariamente"?
Tim
Obrigado por isso. - Eu removi anacrontodos os meus VPSs, pois eles estão sempre ativos. (Não faço ideia de como chegou lá, em primeiro lugar, eu nunca tinha ouvido falar.) Minhas crontabentradas (diárias, semanais, ...) agora são executadas nos horários esperados.
Adambean 19/10/19