Agendando Processos Futuros no Linux
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
nemcron.daily
para tarefas personalizadas. Basta apontar diretamente para o script desejado. Orun-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. Orun-parts
espera um diretório e ignora arquivos individuais. Usarrun-parts
com um script individual causará falha na execução.