
私は、UbuntuまたはRed Hat環境でjarファイルを実行するためのbashスクリプトを書きました。これが私のbashスクリプトです。
#!/bin/bash
JAVA_HOME=/usr/lib/java/jdk1.8.0_131
$nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
私の bash スクリプトは、私が開発した jar を実行します。jar ファイルからの出力をnohup.out
txt ファイルに出力して、問題を簡単に追跡できるようにしたいのですが、スクリプトを実行しても何も出力されず、すべての出力がターミナルに出力されます。ただし、 nohup java -jar /home/chikin/Downloads/hardcoded.jar &
ターミナルから直接実行すると、すべての jar 出力を nohup.out に出力できます。スクリプトが機能しない理由を教えていただけますか? Ubuntu マシンを再起動するたびにスクリプトをトリガーすることもできません。多くの解決策をテストしましたが、どれもうまく機能しません。
答え1
の値をnohup
スクリプトの環境(例export nohup=/usr/bin/nohup
:)にエクスポートしない限り、は$nohup
空の文字列として評価されます。したがって、コマンド
$nohup java -jar /home/chikin/Downloads/hardcoded.jar
平凡になる
java -jar /home/chikin/Downloads/hardcoded.jar
まったくnohup
呼び出されません。おそらく
nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
( なし$
)。
おそらく、出力ファイルを明示的に指定した方が良いでしょう:
nohup java -jar /home/chikin/Downloads/hardcoded.jar > nohup.out & tail -f nohup.out
マニュアルページに記載されているように、出力ファイルのルールは標準出力が端末であるかどうかによって異なります。
If standard output is a terminal, append output to 'nohup.out' if pos‐
sible, '$HOME/nohup.out' otherwise. If standard error is a terminal,
redirect it to standard output. To save output to FILE, use 'nohup
COMMAND > FILE'.