at 工作几乎立即终止

at 工作几乎立即终止

我有一个 bash 脚本/home/x/bin/asdf(它会启动一堆 JVM,通过管道连接在一起),当直接从命令行运行时,效果很好

/home/x/bin/asdf

但是,当尝试运行相同的

echo '/home/x/bin/asdf' | at SOME_TIME

然后我可以看到脚本和我的 JVM 启动,但它们在一秒左右后终止。这些 JVM 的初始输出确实会通过at标准输出通过电子邮件发送,因此它正在工作 - 短暂的。

那么为什么asdf脚本/JVM 会几乎立即终止呢?直接运行时,它会无限期地运行并输出内容。

注意:其中一个 JVM 建立 TCP 连接。我无法确认这是由 运行时完成的at。但如果有错误,它将被打印到 stderr。但在at邮件中并没有错误。

答案1

因此,直接启动脚本和运行脚本之间的关键区别at是:后一种情况缺少标准输入。

因此,我可以通过执行以下操作来重现立即关闭的脚本:

/home/x/bin/asdf </dev/null

为了解决这个问题,我必须更改其中一个 Java 程序,该程序在没有来自标准输入的输入时终止。

相关内容