Comando at no Linux (agendador de tarefas) [Guia Básico]

O comando at no Linux serve para agendar tarefas de forma semelhante ao cron, mas de maneira simplificada e não recorrente.

Sua principal aplicação é para disparar tarefas que devam ser executadas somente uma vez.

O seu formato para agendar as tarefas são mais amigáveis e mais próximos da notação humana.

Uma característica deste programa é que ele executa as tarefas mesmo que tenham passado do seu horário de execução. É útil em computadores que são desligados com frequência ou quando ocorre uma interrupção no fornecimento de energia. 

As notações de data e hora possíveis podem ser informadas nos formatos:

  • HH:MM: HH para hora e MM para minuto;
  • midnight: para meia-noite;
  • noon: para meio-dia;
  • teatime: para 16:00;
  • MMDDYY: MM para mês, DD para dia e YY para ano;
  • MM/DD/YY;
  • DD.MM.YY;
  • + num unidade: Onde num é o número de unidades de tempo. As unidades podem ser minutes (minutos), days (dias), hours (horas) e weeks (semanas).

As opções mais frequentes são:

  • -l: Lista todas as tarefas agendadas pelo at;
  • -d N: Apaga uma determinada tarefa identificada pelo número N;
  • -f arquivo: Indica o arquivo que contém os comandos a serem executados.

Veja os exemplos:

Executa os comandos especificados no arquivo comandos.txt no horário do café da tarde às 16:00 horas. 

# at -f comandos.txt teatime 

Executa os comandos especificados no arquivo comandos.txt em 3 minutos. 

# at -f comandos.txt +3 minutes 

Executa os comandos especificados no arquivo comandos.txt daqui a 3 horas no dia de amanhã. 

# at -f comandos.txt tomorrow +3 hours 

Outra forma de utilizar o at, é digitar diretamente os comandos que serão executados no seu prompt de comandos:

# at now + 2 minutes
at> w 
at> Ctrl D job 1 at Fri Oct 18 14:25:00 2019

Neste exemplo, o at irá abrir um prompt de comandos “at>” para digitar os comandos um por linha. O comando “w” que mostra os usuários conectados será executado dentro de 2 minutos pelo at.

Para sair do prompt do at, deve-se digitar Control-D.

O job recém-criado pode ser visto com o comando “atq”:

# atq
1 Fri Oct 18 14:25:00 2019 a root

O resultado dos comandos executados pelo at são enviados por e-mail para o usuário que agendou a tarefa:

From [email protected]  Fri Oct 18 14:33:00 2019
Subject: Output from your job        2
To: [email protected]
Date: Fri, 18 Oct 2019 14:33:00 +0000 (UTC)


 14:33:00 up 3 days, 11:49,  1 user,  load average: 0.04, 0.13, 0.11
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
uira      pts/0    ip-10-8-0-6       14:14    9.00s  0.08s  0.01s sshd: uira[priv]

atq

O comando atq lista os jobs pendentes do usuário, e no caso do root, lista todos os jobs. O comando fornece na saída o número do job, data, hora, fila e usuário. 

Exemplo:

$ atq
4 2015-05-11 19:00 uribeiro

atrm

O comando atrm remove um job da fila de tarefas, identificado pelo número do job.

Exemplo:

$ atrm 4

Todas as tarefas agendadas são armazenadas em arquivos dentro do diretório /var/spool/at/.

Permissões do at

O comando at também possui dois arquivos responsáveis pela segurança de acesso ao agendador:

  • /etc/at.allow
  • /etc/at.deny

Se o arquivo at.allow existir, um determinado usuário precisa ter seu login listado no seu conteúdo para ter permissões expressas para o uso do at.

Se at.deny existir, os logins listados em seu conteúdo são proibidos de utilizar o at, e todos os outros usuários estão liberados.

Se nenhum dos dois arquivos existirem, o uso do at será permitido somente para superusuário.

Se o arquivo at.deny estiver vazio, o uso do at será permitido por todos os usuários.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe