我编写了一个 Python 脚本,需要在另一个脚本运行后的某个时间执行该脚本。我找到了该at
命令,经过一番挖掘后,我尝试了以下命令(为了便于阅读,分成多行):
/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
这立即运行了脚本。所以我尝试了
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
但时间来了又去,脚本并没有执行。经过上述处理后,at -l
输出如下:
13 Mon Nov 27 02:53:00 2017
12 Mon Nov 27 14:52:00 2017
这是在 macOS High Sierra 上。at
这是正确的实用程序吗?如果是这样,我怎样才能让它在这里做我想做的事?
答案1
让我们看看,在 Mac OS X 上(因为这个硬件太旧了,无法运行 macOS)加上myat
因为我永远不记得日期格式at
想要...
$ 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
$
...为什么还有 2016 年的工作?
$ 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
$
呃……也许手册页at
会有帮助?
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.
与此同时,atrun(8)
我们发现...
Execute the following command as root to enable atrun:
launchctl load -w
/System/Library/LaunchDaemons/com.apple.atrun.plist
天哪。让我们尝试一下...
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
然后我们等一两分钟......
$ atq
$ ls *atran
nananananananananananananananana-atran
$
打开后看起来不错(警告可能会耗尽电池或宝贵的 CPU 片......)