Javaのものを開始するスクリプトがあるとしましょう
start.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
が、jar は開始されず、nohup.out
どこにもありません。
編集2
ご了承ください
echo "nohup ./start.sh 64 1 > help &" | at now
ファイルを作成しますがhelp
(nohup.out
ファイルではありません)、空です。
編集3
Java バイナリへのパスがハードコードされるように start.sh を変更することに注意してください。
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
何も変わりません。