安排一项作业在后台运行(使用 at 进行一次任务调度)

安排一项作业在后台运行(使用 at 进行一次任务调度)

是否可以请求在稍后指定的时间在后台运行作业?

这就是我到目前为止所拥有的

 nohup nice MY_PROGRAM > foo.out 2> foo.err < /dev/null | at 05:23 PM Mon & echo $!

但是,它会回显一个进程 ID,例如 (18454) 该进程 ID 实际上并不存在,也就是说,如果运行

ps 

这是分配给该作业的进程 ID

 18453 pts/2    00:00:00 MY_PROGRAM

这就是 PID-1 = PID 吗?知道为什么会发生这种情况吗?或者我的命令有任何错误?

答案1

at从标准输入读取要执行的命令。

您没有发送要执行的命令到at。您正在执行命令并将命令的输出发送到at

尝试类似的方法:

echo 'nohup nice MY_PROGRAM > foo.out 2> foo.err < /dev/null' | at 05:23

echo命令将打印字符串'nohup nice MY_PROGRAM'并将|其传递给at.

我不知道你为什么使用它nohup,但可能你确实需要它,因为at工作是不互动

PS 请注意使用单引号 ( ') 将命令echo作为字符串传递。

相关内容