Pesquisa de site

Cron Vs Anacron: como agendar trabalhos usando Anacron no Linux


Neste artigo, explicaremos cron e anacron e também mostraremos como configurar o anacron no Linux. Também cobriremos uma comparação desses dois utilitários.

Para agendar uma tarefa em um horário determinado ou posterior, você pode usar os comandos 'at' ou 'batch' e para configurar comandos para serem executados repetidamente, você pode empregar o < recursoscron e anacron.

Cron – é um daemon usado para executar tarefas agendadas, como backups de sistema, atualizações e muito mais. É adequado para executar tarefas agendadas em máquinas que funcionarão continuamente 24 horas por dia, 7 dias por semana, como servidores.

Os comandos/tarefas são programados em tarefas cron que são agendadas em arquivos crontab. O arquivo crontab padrão do sistema é /etc/crontab, mas cada usuário também pode criar seu próprio arquivo crontab que pode iniciar comandos nos horários definidos pelo usuário.

Para criar um arquivo crontab pessoal, basta digitar o seguinte:

crontab -e

Como configurar o Anacron no Linux

Anacron é usado para executar comandos periodicamente com frequência definida em dias. Funciona um pouco diferente do cron; assume que uma máquina não estará ligada o tempo todo.

É apropriado para executar tarefas agendadas diárias, semanais e mensais, normalmente executadas pelo cron, em máquinas que não funcionam 24 horas por dia, 7 dias por semana, como laptops e desktops.

Supondo que você tenha uma tarefa agendada (como um script de backup) para ser executada usando o cron toda meia-noite, possivelmente quando você estiver dormindo, e seu desktop/laptop estiver desligado nesse horário. Seu script de backup não será executado.

No entanto, se você usar o anacron, poderá ter certeza de que na próxima vez que ligar o desktop/laptop novamente, o script de backup será executado.

Como funciona o Anacron no Linux

Os trabalhos do anacron estão listados em /etc/anacrontab e os trabalhos podem ser agendados usando o formato abaixo (comentários dentro do arquivo anacrontab devem começar com #).

period   delay   job-identifier   command

Do formato acima:

  • período – esta é a frequência de execução do trabalho especificada em dias ou como @diariamente, @semanalmente ou @mensalmente uma vez por dia, semana ou mês. Você também pode usar números: 1 – diariamente, 7 – semanalmente, 30 – mensalmente e N – número de dias.
  • atraso – é o número de minutos de espera antes de executar um trabalho.
  • job-id – é o nome distintivo do trabalho escrito nos arquivos de log.

Para visualizar arquivos de exemplo, digite:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • comando – é o comando ou shell script a ser executado.
Isto é o que acontece na prática:
  • O Anacron verificará se um trabalho foi executado dentro do período especificado no campo período. Caso contrário, ele executa o comando especificado no campo de comando após aguardar o número de minutos especificado no campo de atraso.
  • Depois que o trabalho for executado, ele registra a data em um arquivo de carimbo de data/hora no diretório /var/spool/anacron com o nome especificado no campo job-id (nome do arquivo de carimbo de data/hora).

Vejamos agora um exemplo. Isso executará o script /home/aaronkilik/bin/backup.sh todos os dias:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

Se a máquina estiver desligada quando a tarefa backup.sh for executada, o anacron irá executá-la 10 minutos após a máquina ser ligada, sem ter que esperar mais 7 dias.

Existem duas variáveis importantes no arquivo anacrontab que você deve entender:

  • START_HOURS_RANGE – define o intervalo de tempo em que os trabalhos serão iniciados (ou seja, executar trabalhos apenas durante as horas seguintes).
  • RANDOM_DELAY – define o atraso aleatório máximo adicionado ao atraso definido pelo usuário de um trabalho (por padrão é 45).

Esta é a aparência do seu arquivo anacrontab.

/etc/anacrontab: configuration file for anacron

See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

A seguir está uma comparação entre cron e anacron para ajudá-lo a entender quando usar qualquer um deles.

It’s a daemon

Não é um daemon

Appropriate for server machines

Apropriado para máquinas desktop/laptop

Enables you to run scheduled jobs every minute

Permite apenas que você execute trabalhos agendados diariamente

Doesn’t executed a scheduled job when the machine if off

Se a máquina estiver desligada quando um trabalho agendado for devido, ela executará um trabalho agendado quando a máquina for ligada na próxima vez

Can be used by both normal users and root

Só pode ser usado pelo root, a menos que seja diferente (habilitado para usuários normais com configurações específicas)

A principal diferença entre cron e anacron é que cron funciona efetivamente em máquinas que funcionarão continuamente enquanto o anacron é planejado. para máquinas que serão desligadas em um dia ou semana.

Se você conhece alguma outra forma, compartilhe conosco usando o formulário de comentários abaixo.