Terminal: ¿cómo usar `at`?

¿ Alguien podría proporcionar algunos usos de ejemplo para el atcomando? Estoy encontrando lo mansúper confuso.

$ man at

Por ejemplo, si quisiéramos ejecutar un comando dentro de 10 minutos, ¿se puede hacer usando at? (y sin usar sleep)

A partir de macOS 12.2.1, el mejor artículo que he visto para responder esto está aquí: unix.stackexchange.com/a/478840/193772

Respuestas (2)

La especificación de tiempo para "Dentro de 10 minutos" es now +10 minutes. Por ejemplo,

echo 'open ~' | at now +10 minutes

Sin embargo, el atsistema está deshabilitado de forma predeterminada en macOS, como se menciona en la atpágina de manual:

IMPLEMENTATION NOTES
     Note that at is implemented through the launchd(8) daemon periodically
     invoking atrun(8), which is disabled by default.  See atrun(8) for infor-
     mation about enabling atrun.

La atrunpágina de manual dice que necesita ejecutar

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Uso el atcomando cuando necesito hacer un procesamiento pesado de los datos, que quiero ejecutar durante la noche, cuando no estoy detrás de mi computadora. Por supuesto, podría comenzar el proceso justo después de irme, pero esto es algo que tiendo a olvidar.

El resultado del comando no es diferente de la ejecución regular del script o comando.
@bernhard

Lo que hace
extracto de atla página del manual

NAME
       at, batch, atq, atrm - queue, examine or delete jobs for later execution

DESCRIPTION
       at  and  batch  read  commands  from  standard  input or a specified file
       which are to be executed at a later time, using /bin/sh.
    

Uso
El uso de las herramientas:

Usage: at [-V] [-q x] [-f file] [-mldbv] timespec ...
       at [-V] [-q x] [-f file] [-mldbv] -t time
       at -c job ...
       atq [-V] [-q x]
       atrm [-V] job ...
       batch    

atincluye 4 comandos ( at, atq, atrmy batch). Utiliza aty batchpara programar los trabajos, atqpara ver lo que está programado y atrmpara eliminar un trabajo antes de que se ejecute.

$ at -f <cmd> timspec

Timespec
El tiempo para ejecutar el trabajo at se puede especificar de diferentes maneras.

formulario de extracto en la página del manual

At permite especificaciones de tiempo bastante complejas, extendiendo el estándar POSIX.2. Acepta tiempos de la forma HH:MM para ejecutar un trabajo a una hora específica del día. (Si esa hora ya ha pasado, se asume el día siguiente). También puede especificar la medianoche, el mediodía o la hora del té (4 p. m.) y puede tener una hora del día con el sufijo AM o PM para correr por la mañana. o la tarde. También puede decir qué día se ejecutará el trabajo, dando una fecha en el formato mes-nombre día con un año opcional, o dando una fecha en el formato MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]AA o [CC]AA-MM-DD. La especificación de una fecha debe seguir la especificación de la hora del día. También puede dar tiempos como ahora + contar unidades de tiempo, donde las unidades de tiempo pueden ser minutos, horas, días,

Ejemplos
Digamos que tiene este script de shell.

$ cat mycrontest.sh

#!/bin/bash
 echo "It is now $(date +%T) on $(date +%A)"

Ejemplo de ejecución:

$ ./mycrontest.sh
It is now 18:37:42 on Friday

Muestra en envíos de trabajo:

$ at -f mycrontest.sh  10pm tomorrow
job 14 at Sun Jul  8 22:00:00 2007

$ at -f mycrontest.sh 2:00 tuesday
job 15 at Tue Jul 10 02:00:00 2007

$ at -f mycrontest.sh 2:00 july 11
job 16 at Wed Jul 11 02:00:00 2007

$ at -f mycrontest.sh 2:00 next week
job 17 at Sat Jul 14 02:00:00 2007

Créditos a @slm