Ambos cron
e anacron
sã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 cron
e 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 anacron
usa 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/anacrontab
como cron
faz. Além disso, cron.daily
executa anacron todos os dias. Portanto, anacron
só pode executar um trabalho uma vez por dia, mas cron
pode 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.sh
tarefa deve ser executada, se o sistema não estiver em execução, anacron
executará os script.sh
15 minutos após a reinicialização do sistema.
Pouca referência: