我編寫了一個 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 片...)