Usando o "at" para agendamento de tarefas

Eu diria que o cron é ideal para agendamento de tarefas diárias e o at para agendamento de tarefas aleatórias. Neste artigo veremos como agendar tarefas com o at.

[ Hits: 5.225 ]

Por: Fábio Berbert de Paula em 24/06/2020 | Blog: https://www.instagram.com/alexabolada/


Introdução



Eu diria que o cron é ideal para agendamento de tarefas diárias e o at para agendamento de tarefas aleatórias.

Por exemplo, enquanto escrevo essa dica, tenho um frango assando no forno que ficará pronto daqui a 50 minutos. Como estou no PC, quero agendar um lembrete no meu Linux para quando o mesmo ficar pronto. Não faz muito sentido eu criar uma entrada no cron só para isso, pois ela ficará se repetindo ou então terei de retornar ao cron para remover a entrada.

Também não faz sentido eu executar o lembrete usando combinado com o comando "sleep 50m", pois ficarei com um terminal preso só para isso.

Então vamos ver como criar um lembrete usando o comando at!

Primeiro devemos verificar se o at está instalado, ele não vem mais como padrão no Debian por exemplo:

sudo apt install at

Formas de uso

Para exemplificar sua forma de uso, vamos à prática... quero que meu Linux me avise que o frango está pronto daqui a 50 minutos. Vou usar o espeak para isso (veja esse artigo sobre o espeak).

at now + 50 min

Será aberto um prompt do at onde será possível digitar o(s) comando(s) a ser(em) executado(s) daqui a 50 minutos:

at> espeak -vbrazil-mbrola-4 -s 130 "o frango está pronto"
at> ^D

O "^D" da segunda linha na verdade é a saída produzida pela combinação das teclas Ctrl + D, ou seja, após digitar os comandos desejados, tecla Ctrl + D para sair do prompt.

Também é possível usar o pipe para enviar os comandos ao at:

echo espeak -vbrazil-mbrola-4 -s 130 \"o frango está pronto\" | at now + 50 min

Para consultar todas as tarefas agendadas digite:

atq
2 Tue Jun 23 22:14:00 2020 a fabio

Onde:
  • 2 é o número da tarefa
  • Tue Jun 23 = data
  • 22:14:00 = hora
  • 2020 = ano
  • a = queue
  • fabio = usuário

Se quiser visualizar maiores detalhes sobre a tarefa, como por exemplo os comandos que serão executados, digite:

at -c 2
espeak -vbrazil-mbrola-4 "Frango pronto" -s 130

Substitua o "2" no comando acima pelo número do job em sua fila. Também suprimi a saída do comando, que antes da linha do espeak mostrou uma série de variáveis de ambiente para a execução do mesmo. Ele usa o /bin/sh para execução das tarefas.

Algumas formas de uso para definir as datas de agendamento:

noonmeio dia da presente data
midnightmeia noite da presente data
teatime16h da presente data
tomorrowhorário atual, amanhã
noon tomorrowmeio dia de amanhã
next weekdaqui a 1 semana
next mondayhorário atual na próxima segunda
frihorário atual na sexta-feira
novmesmo dia e horário atuais, só que em novembro
9:00 AMpróxima 9 horas da manhã
2:00 PMpróxima 2 horas da tarde
2:30 PM Jun 282 horas e 30 minutos do dia 28 de Junho
now + 30 minutesdaqui a 30 minutos
now + 1 hourdaqui a 1 hora
now + 2 daysdaqui a 2 dias
4 PM + 2 daysàs 4 da tarde daqui a 2 dias
now + 3 weeksdaqui a 3 semanas
now + 30 yearsdaqui a 30 anos (espero que ainda estejamos por aqui! :])


Para remover um agendamento:

atrm <JOB>

Onde JOB é o número do job, exemplo:

atrm 2

Só mais um detalhe que iria passar em branco, o comando "batch" é um atalho para o "at". Quer provas?

cat `which batch`

#! /bin/sh -e
if [ "$#" -gt 0 ]; then
	echo batch accepts no parameters
	exit 1
fi
prefix=/usr
exec_prefix=${prefix}
exec ${exec_prefix}/bin/at -qb now

Para uma explicação mais detalhada, acesse meu vídeo para o canal Cotidiano Hackeado:
Bom, é isso!

echo shutdown -h now | at now

Fonte de pesquisa: Linux at, batch, atq, atrm command help and examples sdfsd

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Tags automáticas em URLs com a classe urlmatch da PHP

Sorteio de camisetas promovido pela GeekWorld

Criando Aplicativos Mobile com React Native

Instalando um sistema tradutor de línguas no seu Linux

OpenAI - Como usar uma Inteligência Artificial a seu favor

Leitura recomendada

Funcionamento de um cluster Linux: Parte II - A revanche

Repositórios, pacotes, o que são?

Distribuições GNU/Linux em computadores limitados ou antigos

LPIC 1 vs LPIC 2 - A nova batalha?!

Adicionando um atalho na área de trabalho a um compartilhamento de rede no Ubuntu

  
Comentários
[1] Comentário enviado por leoberbert em 25/06/2020 - 10:49h

Muito maneiro :)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts