假设我有一个脚本来启动一些 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
不会改变任何东西。