我想在 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 分钟