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:
anacron
todos 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.) Minhascrontab
entradas (diárias, semanais, ...) agora são executadas nos horários esperados.