为什么我的 at 作业在 OS X 上立即运行?

为什么我的 at 作业在 OS X 上立即运行?

我想在 Mac OS X 中安排精确时间的事件。看来“at”命令是执行此操作的最简单的方法。

我已使用以下命令启用了 atrun:

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

为了进行测试,我使用以下单行 BASH 脚本:

echo 'foo' >> path/to/log.txt | at now + 2 minutes

当我运行脚本时,我得到如下输出:

job 17 at Sat May 15 12:57:00 2010

其中 '12:57:00' 确实是 2 分钟后。但 echo 命令会立即执行:行 'foo' 会立即添加到 log.txt 中。

我怎样才能在工作中获利?

答案1

你做错了。at从标准输入读取命令作为文本,它无法从管道中神奇地了解它们。

您的命令...

echo 'foo' >> path/to/log.txt | 现在 + 2 分钟

...运行两个都 echo同时at,在管道中。(想想cat somefile | grep sometext)因此at将在其标准输入上接收单词foo。但是,的输出echo被重定向到文件,因此at不会收到任何内容。


正确的命令是:

echo“echo'foo'>>path/to/log.txt”| 现在 + 2 分钟

相关内容