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マシンを再起動するたびにトリガーすることもできません。多くのソリューションをテストしましたが、どれもうまく機能しません
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'.