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.