我正在 CentOS 服务器上工作并使用命令安排任务 at
# echo "touch a_long_file_name_file.txt" | at now + 1 minute
job 2 at Wed Oct 31 13:52:00 2018
Run Code Online (Sandbox Code Playgroud)
一分钟后,
# ls | grep a_long_file_name_file.tx
a_long_file_name_file.txt
Run Code Online (Sandbox Code Playgroud)
文件创建成功。
但是,如果我在 macOS 上本地运行它,
$ echo "touch a_long_file_name_file.txt" | at now + 1 minute
job 31 at Wed Oct 31 13:58:00 2018
Run Code Online (Sandbox Code Playgroud)
几分钟后,如果它无法制作这样的文件。
我检查at
了 CentOS 服务器上的版本
AUTHOR:
At was mostly written by Thomas Koenig, ig25@rz.uni-karlsruhe.de.
2009-11-14
Run Code Online (Sandbox Code Playgroud)
相比之下,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
Run Code Online (Sandbox Code Playgroud)
我发现at
,atq
,atrm
是GNU的coreutils没有。
$ ls /usr/local/opt/coreutils/libexec/gnubin/ | grep at
cat
date
pathchk
realpath
stat
truncate
Run Code Online (Sandbox Code Playgroud)
如何at
在 macOS 上安装最新版本并使其正常工作?
Kus*_*nda 21
与其更新at
macOS 上的相关工具,不如尝试使at
macOS 上的默认设置正常工作。
at
macOS 上的手册说(我的重点):
实施说明
请注意,
at
通过实施launchd(8)
守护进程定期调用atrun(8)
,默认情况下是禁用的。请参阅atrun(8)
有关启用信息atrun
。
检查atrun
手册:
描述
该
atrun
实用程序运行由 排队的命令at(1)
。它由属性列表中launchd(8)
指定的定期调用com.apple.atrun.plist
。默认情况下,属性列表包含设置为 true 的 Disabled 键,因此atrun
永远不会调用。以 root 身份执行以下命令以启用
atrun
:Run Code Online (Sandbox Code Playgroud)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 上测试过了。
归档时间: |
|
查看次数: |
1485 次 |
最近记录: |