¿Cómo uso `at` para programar la ejecución de un script en macOS?

¿Cómo uso `at` para programar la ejecución de un script en macOS?

Escribí un script de Python que necesito ejecutar en un momento determinado después de que se ejecute otro script. Encontré el atcomando y, después de investigar un poco, probé lo siguiente (dividido en varias líneas para facilitar la lectura):

/private/var/folders/w9/6q0rjl6n4yv859fpxbg4123w0000gn/T/S10/fm-git.py
--filename chiv-lib --repository /Users/chuck/Projects/chivalry/chiv-lib/
--path Chivalry/ --comment "test" | at 2:52pm

Esto ejecutó el script inmediatamente. Así que lo intenté

at 2:53pm
> /private/var/folders/w9/6q0rjl6n4yv859fpxbg4123w0000gn/T/S10/fm-git.py
> --filename chiv-lib --repository /Users/chuck/Projects/chivalry/chiv-lib/
> --path Chivalry/ --comment "test"
> ^D

Pero llegó el momento y el guión no se ejecutó. Después de lo anterior, at -lgenera lo siguiente:

13  Mon Nov 27 02:53:00 2017
12  Mon Nov 27 14:52:00 2017

Esto está en macOS High Sierra. ¿Es atla utilidad adecuada para esto? Si es así, ¿cómo puedo hacer que haga lo que quiero aquí?

Respuesta1

Veamos, en Mac OS X (ya que este hardware es demasiado antiguo para ejecutar macOS) además conmyatporque nunca puedo recordar el formato de fecha atque quiere...

$ date
domingo, 26 de noviembre de 2017, 16:34:12 PST
$ myat 16:36
touch $HOME/nananananananananananananananana-atran
job 2 at Sun Nov 26 16:36:00 2017
$ atq
1       Wed Mar  9 08:00:00 2016
2       Sun Nov 26 16:36:00 2017
$ 

... ¿por qué hay un trabajo del 2016 rondando por ahí?

$ date
domingo, 26 de noviembre de 2017, 16:36:33 PST
$ atq
1       Wed Mar  9 08:00:00 2016
2       Sun Nov 26 16:36:00 2017
$ 

Uhhhh... ¿quizás la página de manual atayude?

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.

Mientras tanto, atrun(8)encontramos...

 Execute the following command as root to enable atrun:
       launchctl load -w
       /System/Library/LaunchDaemons/com.apple.atrun.plist

Dios mio. Intentemos eso...

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

Y luego esperamos como uno o dos minutos...

$ atq
$ ls *atran
nananananananananananananananana-atran
$ 

Se ve bien una vez que lo enciendes (la advertencia puede agotar la batería o valiosas porciones de CPU...)

información relacionada