讓“at”在 macOS 上工作
我正在使用 CentOS 伺服器並使用命令安排任務
at
# echo "touch a_long_file_name_file.txt" | at now + 1 minute job 2 at Wed Oct 31 13:52:00 2018
一分鐘後,
# ls | grep a_long_file_name_file.tx a_long_file_name_file.txt
該文件已成功創建。
但是,如果我在我的 macOS 上本地執行它,
$ echo "touch a_long_file_name_file.txt" | at now + 1 minute job 31 at Wed Oct 31 13:58:00 2018
幾分鐘後,如果它無法製作這樣的文件。
我檢查了
at
CentOS 伺服器上的版本AUTHOR: At was mostly written by Thomas Koenig, ig25@rz.uni-karlsruhe.de. 2009-11-14
相比之下,macOS 版本
AUTHORS At was mostly written by Thomas Koenig <ig25@rz.uni-karlsruhe.de>. The time parsing routines are by David Parsons <orc@pell.chi.il.us>, with minor enhancements by Joe Halpin <joe.halpin@attbi.com>. BSD January 13, 2002
我發現 ,
at
,atq
不是atrm
GNU coreutils 的。$ ls /usr/local/opt/coreutils/libexec/gnubin/ | grep at cat date pathchk realpath stat truncate
如何
at
在 macOS 上安裝最新版本並使其正常工作?
at
讓我們嘗試在 macOS 上使用預設設置,而不是在 macOS 上更新和相關工具at
。macOS 上的
at
手冊說(我的重點):實施說明
請注意,這
at
是通過launchd(8)
守護程序定期呼叫來實現的atrun(8)
,預設情況下是禁用的。有關atrun(8)
啟用atrun
.檢查
atrun
手冊:描述
該
atrun
實用程序執行由 排隊的命令at(1)
。它由屬性列表launchd(8)
中指定的定期呼叫。com.apple.atrun.plist
預設情況下,屬性列表包含設置為 true 的 Disabled 鍵,因此atrun
永遠不會被呼叫。以 root 身份執行以下命令以啟用
atrun
:launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
我認為這裡可能發生的事情以及提示您其他
at
相關問題的是您尚未atrun
在 macOS 安裝上啟用。在 macOS Mojave 上,除了執行上述
launchctl
命令(使用sudo
)外,您還必須/usr/libexec/atrun
在系統的“安全和隱私”首選項中添加具有“全盤訪問”的命令/應用程序列表。請注意,我不知道這樣做的安全隱患。就個人而言,我還在/usr/sbin/cron
那裡添加了讓 cron 作業正常工作(下面的螢幕截圖中未顯示,因為這是來自另一台電腦)。要從
/usr
路徑添加命令(不會顯示在 macOS 的文件選擇對話框中),Cmd+Shift+G
請在文件選擇對話框打開時按(在按視窗底部的加號圖示/按鈕後)。在進行這些更改後,您無需重新啟動機器。我已經在 macOS Mojave 14.10.1 上對此進行了測試。