Osx如何使用
如何使用 at
安排腳本在 macOS 上執行?
我編寫了一個 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
是正確的實用程序嗎?如果是這樣,我怎樣才能讓它在這裡做我想做的事情?
讓我們看看,在 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 片…)