Agendando Processos Futuros no Linux

Linux May 27, 2025

At

at é uma ferramenta de agendamento de tarefas em Linux usada para executar comandos únicos em um horário e data específicos. Diferente do cron, que serve para tarefas recorrentes, o at executa uma única vez.

Como usar o at

1. Verifique se o at está instalado

which at

Se não estiver instalado:

sudo apt install at

E inicie o serviço (caso necessário):

sudo systemctl enable --now atd

2. Agendar um comando

at 10:00 AM tomorrow

Você será levado a um prompt interativo. Digite o comando desejado e finalize com Ctrl + D.

Exemplo 1:

at 09:00 AM next Monday

(Entrada do usuário no prompt do at)

echo "Relatório pronto" >> ~/relatorio.txt
Ctrl + D

Resultado: O trecho "relatório pronto" será incluído no documento relatorio.txt.

Exemplo 2:

at 21:00 Apr 15

Entrada no prompt:

notify-send "Hora de fazer backup!"
Ctrl + D

Resultado: Às 21h do dia 15 de abril, o sistema exibirá uma notificação.

Formatos de Data e Hora Válidos

  • now + 1 minute

  • midnight

  • tomorrow

  • 5pm

  • 08:30

  • 7:00am next friday

  • noon + 2 days

Visualizar tarefas agendadas

atq

Remover uma tarefa agendada

atrm <número_da_tarefa>

Você encontra o número da tarefa com atq.


cron

O cron é um utilitário de agendamento de tarefas baseado no tempo. Permite executar comandos ou scripts automaticamente em horários específicos. Ele depende do daemon crond, que deve estar ativo e em execução contínua no sistema.

Arquivo de configuração:

  • Cada usuário pode editar seu próprio agendador com:

    crontab -e
    
  • O formato padrão de uma linha no crontab:

    m h dom mon dow comando
    
Campo Descrição Valores possíveis
m Minuto 0–59
h Hora 0–23
dom Dia do mês 1–31
mon Mês 1–12
dow Dia da semana 0–6 (0 = Domingo)
comando Comando a executar Qualquer comando shell válido

Exemplos:

  • Executar um script a cada minuto:

    * * * * * /usr/local/bin/execute/this/script.sh
    
  • Fazer backup no dia 10 de junho às 08:30:

    30 08 10 06 * /home/sysadmin/full-backup
    
  • Backup todo domingo às 5h da manhã:

    0 5 * * 0 tar -zcf /var/backups/home.tgz /home/
    

Limitações:

Tarefas agendadas com cron não são executadas se o computador estiver desligado ou suspenso no horário programado. O comando é simplesmente ignorado.
Use cron para tarefas com data/hora exatas.


anacron

O anacron é uma alternativa ao cron voltada para sistemas que não ficam ligados o tempo todo, como notebooks e desktops. Ele garante a execução de tarefas periódicas (diárias, semanais, mensais) assim que possível após o sistema ser ligado, caso tenham sido perdidas. Use anacron para tarefas periódicas tolerantes a atrasos.

Verificação da instalação:

anacron -V

Instalação (caso necessário):

sudo apt update
sudo apt install anacron

Arquivo de configuração:

/etc/anacrontab

Acessado com:

sudo nano /etc/anacrontab

Formato de cada linha:

PERIOD  DELAY  IDENT  COMMAND
Campo Descrição
PERIOD Intervalo em dias (1 = diário, 7 = semanal)
DELAY Minutos a esperar após o boot
IDENT Nome identificador da tarefa
COMMAND Comando ou script a ser executado

Exemplo:

1 3 limpeza-temporarios /home/usuario/scripts/limpar_tmp.sh

Executa o script uma vez por dia, 3 minutos após o sistema ser ligado.

Nota: Não é necessário usar run-parts nem cron.daily para tarefas personalizadas. Basta apontar diretamente para o script desejado. O run-parts só deve ser usado quando se deseja executar todos os scripts de um diretório.

Ativação do serviço:

sudo systemctl enable --now anacron

Verificação de status:

systemctl status anacron

Logs de execução:

grep anacron /var/log/syslog

/etc/anacrontab: Arquivo de Configuração do anacron

O arquivo /etc/anacrontab define tarefas periódicas a serem executadas pelo anacron, garantindo que comandos sejam executados mesmo que o computador esteja desligado no horário originalmente programado.

Cabeçalho Padrão

SHELL=/bin/sh
HOME=/root
LOGNAME=root
  • SHELL: Shell padrão utilizado para executar os comandos.

  • HOME: Diretório home usado durante a execução.

  • LOGNAME: Usuário associado à execução das tarefas.

Entradas Padrão do Sistema

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
Campo Significado
1 Executa a tarefa diariamente (a cada 1 dia)
5 Espera 5 minutos após o boot
cron.daily Identificador da tarefa (usado nos logs)
run-parts Executa todos os scripts dentro do diretório

Diretórios utilizados:

  • /etc/cron.daily: scripts executados uma vez por dia

  • /etc/cron.weekly: scripts semanais

  • /etc/cron.monthly: scripts mensais

O comando run-parts executa automaticamente todos os scripts executáveis localizados nesses diretórios.

Personalização

Para adicionar tarefas personalizadas ao anacron, basta adicionar novas linhas com o formato:

PERIOD  DELAY  IDENT  COMMAND

Exemplo:

1 3 limpeza-temporarios /home/usuario/scripts/limpar_tmp.sh

Executa o script limpar_tmp.sh diariamente, com 3 minutos de atraso após o boot.

Importante: Não é necessário — nem recomendado — usar run-parts quando a intenção é executar um script individual. O run-parts espera um diretório e ignora arquivos individuais. Usar run-parts com um script individual causará falha na execução.

This post and comments are published on Nostr.

Tags

ΜΟΛΩΝ ΛΑΒΕ

Life, liberty and property. PGP key ID: E8B3 FA2D EC0B 62A0