Escribí un script de Python que necesito ejecutar en un momento determinado después de que se ejecute otro script. Encontré el at
comando 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 -l
genera 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 at
la 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 conmyat
porque nunca puedo recordar el formato de fecha at
que 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 at
ayude?
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...)