是否可以请求在稍后指定的时间在后台运行作业?
这就是我到目前为止所拥有的
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
作为字符串传递。