Categories
Linux Tutoriais

Use o comando at para agendar tarefas no Linux

Como agendar comandos simples ou tarefas mais complexas, para execução, no Linux com o comando at.

O Cron não é a única maneira de agendar atividades no Linux.
O comando at permite agendar rapidamente uma tarefa, sem a necessidade de editar a tabela do crontab.


Se tiver interesse, leia mais sobre o cron.
Se precisa definir rapidamente um momento para o sistema realizar uma tarefa, o comando at é uma boa alternativa.
Infelizmente, em alguns sistemas, o comando não vem instalado por padrão — o que pode impossibilitar seu uso em servidores aos quais você não tem acesso com privilégios administrativos, para fazer novas instalações (como o seu provedor de hospedagem, por exemplo).
Para instalar no Debian (ou em outras distribuições baseadas nela), use o apt:

sudo apt install at

O pacote inclui os utilitarios at, batch, atq, atrm — para enfileirar comandos, examinar e/ou apagar tarefas agendadas etc.
Veja um exemplo simples de execução, com o uso do comando history:


at now

warning: commands will be executed using /bin/sh
at> history
at> 
job 4 at Thu Sep 14 10:44:00 2017

Neste caso, o comando será executado imediatamente (now), tão logo termine a edição do at.
Você pode inserir vários comandos Linux, um a cada linha.
Quando terminar de enfileirar linhas de comando, tecle Ctrl + D (^D), para finalizar.
Para agendar um comando para execução daqui a dois minutos:


at now + 2 min

warning: commands will be executed using /bin/sh
at> espeak -v pt "O tempo de dois minutos acabou de expirar, capitão!"
at> ^D 
job 9 at Thu Sep 14 10:54:00 2017

Veja como agendar backup de um diretório para daqui a 3 minutos:


at now + 3 min

warning: commands will be executed using /bin/sh
at> espeak -v pt "Iniciando o backup do diretório de scripts"
at> tar cvzf backup.tz scripts/
at> espeak -v pt "o backup foi finalizado."
at> 
job 12 at Thu Sep 14 11:01:00 2017

Outras formas de agendamento de tarefas com o comando at, no Linux

Há outras maneiras de agendar tarefas com o comando at, que permitem maior flexibilidade na escolha do momento da execução.
Veja alguns exemplos, que podem ser readequados ao seu caso:

  • at 11:08 AM September 14 2017 — Agende a execução da tarefa para uma data e hora específicas. Neste caso: 11:08, 14 de Setembro de 2017.
  • at now + 1 hours — Execução agendada para daqui a duas horas.
  • at now +24 hours — agendamento para o dia seguinte, nesta mesma hora.
  • at 8:00 PM tomorrow — agendamento para amanhã (tomorrow), 8h da noite.
  • at now + 2 years — agendamento para daqui a 2 anos.

Quando o comando não consegue “entender” a hora/data oferecida, ele vai retornar a mensagem “Garbled time!“.
Há outras formas de especificar hora e data, para falantes da língua inglesa. Veja alguns exemplos:

  • noon — meio dia.
  • midnight — meia noite.
  • tomorrow — se especificado sozinho, o at já sabe que você se refere a hora atual, sé que amanhã.
  • noon tomorrow — amanhã, meio dia.
  • next week — próxima semana.
  • next month — próximo mês.
  • next friday — próxima sexta-feira.
  • now + 3 weeks — daqui a 3 semanas, neste mesmo horário.
  • AUG — em Agosto, nesta mesma data e hora.

Como verificar as tarefas agendadas no sistema

Você verificar os trabalhos enfileirados com a opção ‘-l’ ou com o comando atq:


at -l

14  Thu Sep 14 13:09:00 2017 a justincase
16  Thu Sep 14 11:17:00 2017 a justincase

O número exibido na primeira coluna é a ID de cada tarefa agendada.
O comando atq e suas variantes, só irá listar as tarefas do seu usuário.
Para obter informações sobre todos os usuários no sistema, rode o comando com privilégios de superusuário.

Como cancelar uma tarefa

Você pode indicar a ID de um item, que ainda não foi executado, para cancelamento, com o comando atrm ou com uma das opções ‘-r’ ou ‘-d’:


at -r 14

Como agendar uma lista de comandos dentro de um arquivo

Você pode listar todas as tarefas que deseja executar, uma por linha, dentro de um arquivo texto.
Em seguida, por entregar o arquivo para o at.
Veja o meu arquivo:


cat comandos.txt 

whiptail --backtitle "Importante!"  --title "mensagem" --msgbox "minha linda mensagem" 7 30

espeak -v pt "Por favor, dê atenção a esta importante mensagem."

Para fazer com que o at execute estas tarefas, use a opção ‘-f’:


at -f comandos.txt now

Referências

https://unix.stackexchange.com/questions/97882/why-do-we-need-the-at-command-in-linux.

https://www.computerhope.com/unix/uat.htm.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.