0

假设我有一个脚本来启动一些 java 的东西

启动.sh

myStuff=10.0.0.13
port=11212
servers=(10.0.0.9 10.0.0.10 10.0.0.11 10.0.0.12 10.0.0.14)
T=$1
R=$2

nohup java -jar myJar.jar -l ${myStuff} -p ${port} -t $T -r $R -m "${servers[@]/%/:11212}" &

如果我手动启动脚本

./start.sh 64 1

例如,一切正常

现在

echo "nohup ./start.sh 64 1" | at now

但是,什么都不做。

为什么?

我之前已经启动过类似的脚本(虽然没有一个调用 java),但我似乎无法弄清楚它们有何不同。

编辑

atq好吧,不是什么都没有,工作确实被安排了,并且确实从nohup.out.

编辑 2

注意

echo "nohup ./start.sh 64 1 > help &" | at now

确实创建了一个help文件(虽然不是nohup.out文件),但它是空的。

编辑 3

请注意,更改 start.sh 以使 java 二进制文件的路径是硬编码的:

nohup /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar myJar.jar -l ${myStuff} -p ${port} -t $T -r $R  -m "${servers[@]/%/:11212}" &

也无济于事。

编辑 4

echo "nohup java -version > help &" | at now

创建一个空help文件(但没有nohup.out)。

然而

echo "nohup java -version > help 2>&1 &" | at now

将打印

java version "1.7.0_111"
OpenJDK Runtime Environment (IcedTea 2.6.7) (7u111-2.6.7-0ubuntu0.14.04.3)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)

help文件中(也不创建nohup.out文件)。

编辑 5

摆脱nohup,即

java -jar myJar.jar ...

接着

echo "./start.sh 64 1" | at now

不会改变任何东西。

4

0 回答 0