Você precisa agendar um comando uma única vez esta noite, amanhã de manhã ou após uma janela de manutenção? at evita criar uma linha cron que você esquecerá depois. No entanto, ele mantém uma restrição: o serviço atd deve estar em execução, e o comando será executado por /bin/sh, não necessariamente pelo seu shell interativo.
A metodologia abaixo permite agendar, controlar e depois remover um job antes de sua execução. Use um caminho absoluto para os scripts e os arquivos de log. Um job at não se beneficia do seu terminal nem de todas as suas configurações Bash.

Instalar at e verificar o serviço
No Debian, Ubuntu e seus derivados, instale o pacote e depois ative o daemon. No Fedora, RHEL ou Rocky Linux, substitua apt por dnf.
sudo apt update
sudo apt install at
sudo systemctl enable --now atd
systemctl status atd --no-pager
O status deve indicar active (running). Se sua conta receber um recuso, verifique /etc/at.allow e /etc/at.deny. Esses arquivos determinam quais usuários têm permissão para enviar tarefas.
Agendar um comando sem deixar um cron
Para testar sem afetar o sistema, crie um pequeno arquivo no seu diretório pessoal em cinco minutos. Digite o comando e finalize a entrada com Ctrl + D.
at now + 5 minutes
mkdir -p "$HOME/at-test"
date > "$HOME/at-test/executed-at.txt"
# então pressione Ctrl+D
Para uma intervenção real, evite caminhos relativos. O job seguinte reinicia um serviço amanhã às 02:30 e mantém stdout e stderr em um log conhecido:
at 02:30 tomorrow
/usr/bin/systemctl restart meu-serviço.service >> /var/log/meu-serviço-at.log 2>&1
# então pressione Ctrl+D
Não agende um reinício ou uma mudança remota sem ter verificado o comando manualmente. Se você estiver trabalhando via SSH, mantenha uma segunda sessão aberta antes de uma mudança que possa cortar a rede ou o serviço.
Revisar o job e verificar a hora da máquina
atq exibe os jobs pendentes com seu identificador. at -c permite ver o script realmente registrado. Esta leitura é útil quando uma variável, um diretório atual ou uma redireção conta para seu comando.
atq
at -c 7
timedatectl status
Substitua 7 pelo número exibido por atq. Verifique também o fuso horário com timedatectl status. A data inserida no at é interpretada pela máquina que executa o daemon. Um servidor configurado para UTC não iniciará necessariamente o job na hora exibida na sua estação.
Cancelar um job antes de sua execução
A remoção é imediata. Pegue o identificador, remova o job e depois relance atq para confirmar que ele desapareceu.
atrm 7
atq
Use at para uma ação pontual: uma purga após migração, um reinício único ou um teste adiado. Para uma tarefa repetida, prefira cron e crontab ou um timer systemd. Você evitará principalmente transformar um comando programado uma vez em uma automação esquecida.