Os cron
e anacron
são daemons que podem planejar a execução de tarefas recorrentes até um determinado momento definido pelo usuário.
A principal diferença entre cron
e anacron
é que o primeiro assume que o sistema está sendo executado 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 é projetado para sistemas que não estão em execução 24x7. Para que funcione anacron
usa arquivos com registro de data e hora para descobrir quando a última vez que seus comandos foram executados. Ele também mantém um arquivo /etc/anacrontab
como cron
. Além disso, cron.daily
executa anacron everyhour. Além disso, anacron
só pode executar um trabalho uma vez por dia, mas cron
pode ser executado com tanta frequência quanto a cada minuto.
De man anacrontab
:
Quando executado, o Anacron lê uma lista de jobs de um arquivo de configuração, normalmente / etc / anacrontab (veja anacrontab (5)). Este arquivo contém a lista de tarefas que Controles Anacron. 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 este trabalho foi executado em o último n dias, em que n é o período especificado para esse trabalho. Se não, Anacron executa o comando shell do job, após aguardar o número de minutos especificado como o parâmetro de atraso.
Após o comando sair, a Anacron registra a data em um especial arquivo de timestamp para esse trabalho, para saber quando executá-lo novamente. Apenas 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 tempo, quando o anacron é executado, ele pode ver que a tarefa foi executada pela última vez há mais de 24 horas e executar a tarefa 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 o trabalho script.sh
deve ser executado, se o sistema não estiver em execução, anacron
executará script.sh
15 minutos depois que o sistema voltar a funcionar.
Pouca referência:
Documentação do RedHat sobre cron e anacron