Introdução
Embora cron seja ideal para tarefas recorrentes (diárias ou horárias), às vezes você precisa agendar uma tarefa para ser executada apenas uma vez, em um horário específico no futuro. Por exemplo, você pode querer reiniciar um serviço às 2h da manhã ou criar um snapshot de um banco de dados daqui a 30 minutos.
Para essas tarefas pontuais, o Linux oferece o utilitário at.
O comando at lê comandos da entrada padrão ou de um arquivo e os executa mais tarde. Ele é útil quando a tarefa deve ser adiada, mas não se repete. Isso é diferente do modelo de agendamento recorrente do cron.
A principal diferença conceitual é simples: cron descreve agendamentos recorrentes, enquanto at coloca na fila uma tarefa única para o futuro. As duas ferramentas automatizam tarefas, mas resolvem problemas de agendamento diferentes.
Neste laboratório, você aprenderá a:
- Instalar os pré-requisitos: garantir que o utilitário
atesteja instalado e que o daemon esteja em execução. - Agendar uma tarefa: usar
atpara colocar um comando na fila para execução futura. - Inspecionar a fila: usar
atqpara listar as tarefas pendentes. - Gerenciar tarefas: usar
atrmpara remover uma tarefa da fila.
Instalar o utilitário at
O comando at nem sempre vem instalado por padrão em todas as distribuições Linux. Primeiro, verifique se ele está disponível e se o serviço em segundo plano está em execução.
Assim como o cron, at depende de um daemon. O comando que você digita cria a definição de uma tarefa na fila, e o serviço em segundo plano é responsável por executar essa tarefa posteriormente.
- Instale o pacote:
sudo apt-get install -y at
- O sistema
atusa um daemon em segundo plano chamadoatdpara executar os comandos agendados. Inicie o serviço:
sudo service atd start
- Verifique se o serviço está ativo:
sudo service atd status
A saída deve indicar que atd está em execução.
Agendar uma tarefa
Agora que o sistema está pronto, verifique se at funciona agendando uma tarefa simples para criar um arquivo daqui a 5 minutos.
Para começar, execute o comando at seguido do horário desejado:
at now + 5 minutes
O prompt mudará para at>, indicando que o comando está aguardando sua entrada. Digite o comando que deseja executar:
Essa interface é diferente do cron porque at coleta interativamente o texto do comando da tarefa futura. Na prática, você está escrevendo o corpo de uma tarefa única e enviando-o para a fila.
echo "Hello LabEx" > /home/labex/project/hello.txt
Para salvar e sair:
- Pressione Ctrl + D.
Você verá <EOT> (End of Transmission) e uma mensagem de confirmação semelhante a job 1 at ....
Isso confirma que a tarefa foi enviada para a fila.
Listar tarefas pendentes (atq)
Depois de agendar uma tarefa, você pode verificar se ela está na fila ou consultar o ID da tarefa.
Use o comando atq para listar a fila:
atq
O formato da saída normalmente será semelhante a: 1 Mon Oct 23 10:05:00 2023 a labex
Detalhamento:
- 1: o ID da tarefa. Você precisará desse número para removê-la.
- Data/hora: quando a tarefa está agendada para ser executada.
- Usuário: o usuário proprietário da tarefa.
A visualização da fila é importante porque é fácil esquecer uma tarefa depois que ela foi enviada. O comando atq permite inspecionar as tarefas pendentes antes que sejam executadas.
Se a fila estiver vazia, a tarefa pode já ter sido executada ou pode não ter sido enviada corretamente.
Cancelar uma tarefa (atrm)
Se você mudar de ideia ou perceber que cometeu um erro, poderá remover uma tarefa da fila antes que ela seja executada.
Use o comando atrm seguido do ID da tarefa.
Primeiro, confirme o ID da tarefa usando atq (provavelmente 1 na etapa anterior). Em seguida, execute:
atrm 1
Agora confirme que a fila está vazia:
atq
A saída não deve mostrar nada. Isso confirma que a tarefa foi cancelada. Nenhum arquivo será criado.
Essa etapa de cancelamento reforça que as tarefas na fila são objetos gerenciáveis, e não apenas comandos executados sem possibilidade de controle. Você pode inspecioná-las, identificá-las pelo ID e removê-las antes da execução caso seus planos mudem.
Resumo
Neste laboratório, você aprendeu a gerenciar tarefas únicas:
- Instalação: configurar
ateatd. - Agendamento (
at): usar uma sintaxe comoat now + 5 minutespara colocar comandos futuros na fila. - Listagem (
atq): inspecionar a fila para consultar os IDs das tarefas pendentes e os horários de execução. - Remoção (
atrm): excluir tarefas específicas da fila usando seus IDs.
Use cron para agendamentos recorrentes e at para execuções únicas e atrasadas.



