!['at' 命令的预期行为?启动每个命令而不是调度](https://linux22.com/image/1569958/'at'%20%E5%91%BD%E4%BB%A4%E7%9A%84%E9%A2%84%E6%9C%9F%E8%A1%8C%E4%B8%BA%EF%BC%9F%E5%90%AF%E5%8A%A8%E6%AF%8F%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%80%8C%E4%B8%8D%E6%98%AF%E8%B0%83%E5%BA%A6.png)
我正在尝试安排一些程序的执行。我正在使用以下命令:
./tests.o | at 15:00&
如果我理解正确的话,预期的行为是延迟执行到 15:00。但是,如果我top
在启动上述命令后立即运行,我可以看到 tests.o 已经占用了 CPU 时间。
由于我需要在共享资源上启动多个测试,所以我想知道如何正确使用“at”?
我究竟做错了什么?
答案1
at
从标准输入读取命令。你正在做的是运行./tests.o
并输入它的输出字符串作为要at
调度的命令。此外,不需要尾随的&
,因为at
会立即返回。
你需要的是:
echo ./tests.o | at 15:00
或者:
at 15:00 <<< ./tests.o
如果您希望计划命令使用重定向或其他 shell 功能,则需要使用引号,例如:
at 15:00 <<< './tests.o > tests.log'