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.560 ]

Por: Fábio Berbert de Paula em 24/06/2020 | Blog: https://fabio.automatizando.dev


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

Formatando Disquetes

Como criar VIEWS no MySQL

Filtros do Instagram no Gimp

Como isolar seus projetos Python com virtualenv (ambiente virtual)

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

Leitura recomendada

Linux Básico - Parte II

Se preparando para obter certificação LPI

SuSE Linux 9.1 - O poderoso e versátil Linux da Novell

Pós Instalação do Kubuntu 20.10

O papel do GNU/Linux na atualidade

  
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