nohup コマンドは出力を nohup.out に印刷できません

nohup コマンドは出力を nohup.out に印刷できません

私は、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.outtxt ファイルに出力して、問題を簡単に追跡できるようにしたいのですが、スクリプトを実行しても何も出力されず、すべての出力がターミナルに出力されます。ただし、 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'.

関連情報