Tutoriel Linux

Anacron no Linux: retomar uma tarefa quando o computador estava desligado

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Você agenda um backup para as 2h da manhã, mas o laptop é desligado nesse horário. Com uma tarefa cron padrão, a execução simplesmente se perde. anacron Responde a esse caso específico: inicia a tarefa na próxima inicialização assim que percebe que seu período expirou.

Reservo esse recurso para tarefas diárias, semanais ou mensais que podem tolerar um atraso. Para horários específicos, execução a cada dez minutos ou monitoramento avançado por departamento, os temporizadores cron e systemd continuam sendo mais adequados.

O Anacron executa uma tarefa atrasada na próxima inicialização, quando seu período de tempo limite expirar.

Escolhendo entre cron, anacron e um temporizador systemd

A escolha depende principalmente da precisão exigida e do tempo de inicialização da máquina:

  • cron Adequado para máquinas ligadas no horário programado e com frequência inferior a uma vez por dia;
  • anacron Trabalha em dias e recupera as tarefas diárias, semanais ou mensais após um período de descanso;
  • UM temporizador do sistema fornece um cronograma mais preciso Persistente=verdadeiroDependências e registros diretamente relacionados a um serviço.

O Anacron não substitui o cron em todos os lugares. Ele não tenta executar um comando exatamente às 8h30. Ele verifica se o número especificado de dias se passou, aguarda o atraso configurado, executa o comando e, em seguida, registra a data. O horário da última execução não é usado no cálculo.

Em uma estação de trabalho ou um servidor pequeno que não esteja em execução contínua, isso geralmente é suficiente. Em um servidor já gerenciado com systemd, o guia sobre o temporizadores do sistema Oferece uma solução mais flexível para uma nova tarefa.

Instale o Anacron e leia a configuração existente.

No Debian ou Ubuntu, instale o pacote e verifique a versão disponível:

sudo apt update
sudo apt install anacron
anacron -V

No Fedora, Rocky Linux ou AlmaLinux, a implementação geralmente é fornecida pela família de pacotes Cronie. Verifique o pacote instalado antes de modificar qualquer coisa:

rpm -q cronie cronie-anacron
comando -v anacron

Em seguida, exiba o arquivo principal sem editá-lo:

sudo cat /etc/anacrontab
sudo ls -l /var/spool/anacron

O primeiro arquivo descreve as tarefas. O segundo local contém seus registros de data e hora. Dependendo da distribuição, o anacron pode ser acionado pelo cron, por um serviço do systemd ou na inicialização do sistema. Verifique o que existe de fato:

systemctl status anacron.service --no-pager
systemctl list-timers --all | grep -i anacron

/etc/anacrontab pode impedir que as seguintes tarefas sejam levadas em consideração.

sudo cp /etc/anacrontab /etc/anacrontab.bak-$(date +%F-%H%M)
sudo nano /etc/anacrontab

Por exemplo, adicione esta linha para chamar um script de backup que já foi testado:

1 15 backup-home /usr/local/sbin/backup-home.sh >> /var/log/backup-home.log 2>&1

  • um define um período de um dia;
  • quinze Adiciona quinze minutos de atraso após o Anacron iniciar;
  • backup-home é o identificador único usado para registro de data e hora e para registro de logs;

Use caminhos absolutos no script. O ambiente de uma tarefa agendada não é o mesmo que o da sua sessão interativa. Além disso, verifique se o disco de destino está montado antes de qualquer cópia. Um backup que, por engano, grava em uma pasta local simples pode preencher a partição raiz sem proteger nenhum dado.

Primeiro, teste o próprio script. Ele deve ser executável, produzir o resultado esperado e retornar um código diferente de zero em caso de falha:

sudo test -x /usr/local/sbin/backup-home.sh
sudo /usr/local/sbin/backup-home.sh
eco $?

Em seguida, valide o arquivo anacrontab sem executar a tarefa:

sudo anacron -T

A ausência de saída com um código de retorno zero indica que a sintaxe é aceita. Para executar apenas a tarefa. backup-home Sem esperar pelo prazo ou período, utilize:

sudo anacron -f -n -d backup-home

Este comando executa o script. Não o teste com uma exclusão ou sincronização. --excluir ou uma operação irreversível. As opções forçam a tarefa, cancelam o atraso e mantêm o Anacron em primeiro plano para exibir sua atividade.

Encontre os detalhes da execução nos registros e no carimbo de data/hora.

Após o teste, verifique primeiro o resultado da operação, por exemplo, a presença e a data dos arquivos salvos. O registro de data e hora do anacron apenas confirma que o comando foi executado e concluído.

sudo stat /var/spool/anacron/backup-home
sudo tail -n 80 /var/log/backup-home.log

Em uma distribuição com uma unidade systemd, veja também:

sudo journalctl -u anacron.service -n 80 --no-pager
sudo journalctl -t anacron -n 80 --no-pager

Se esses comandos permanecerem vazios, verifique o log do cron da distribuição, frequentemente. /var/log/syslog no Debian ou Ubuntu e /var/log/cron Sobre a família RHEL. O guia sobre journalctl e registros de inicialização Ajuda a restaurar o processo de ativação após a inicialização.

Um detalhe importante a observar: o Anacron registra a data em que o comando termina, mesmo que seu script falhe. Ele não funciona como um sistema de recuperação de erros. O script deve registrar seu resultado, verificar seus pré-requisitos e enviar um alerta se a tarefa for crítica.

Limitações a serem consideradas antes de substituir uma tarefa cron

Não utilize o anacron para tarefas que precisam ser iniciadas em um minuto específico. Seu período é calculado em dias, e o atraso começa quando o anacron é acionado. Após vários dias de inatividade, cada ID atrasado é executado apenas uma vez, e não uma vez por dia de inatividade.

Não mova uma tarefa existente antes de identificar o usuário responsável. /etc/anacrontab Geralmente, o processo é executado com privilégios de root. Um comando copiado do crontab de um usuário pode, então, criar arquivos com o proprietário errado ou acessar dados que não deveria.

Página de manual do Anacron Documenta as opções de teste e execução. Manual do Anacrontab Especifique os campos para período, atraso, identificador e ordem. Mantenha a tarefa cron antiga comentada por um ciclo completo, verifique a saída real da tarefa e, em seguida, exclua-a somente quando o processo de recuperação estiver funcionando.

sudo apt update && sudo apt upgrade