nohup
下記のようにバックグラウンドでアプリケーションを起動します。
root@phx5qa01c:/bezook# nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out &
[1] 30781
root@phx5qa01c:/bezook# nohup: ignoring input and redirecting stderr to stdout
ところで、このメッセージを見るたびに——
nohup: ignoring input and redirecting stderr to stdout
このメッセージを見ると問題ないでしょうか?これは何を意味し、どのように防ぐことができますか?
答え1
アプリケーションがターミナルから切断され、フォアグラウンドコマンドを中断せずにログアウトしても実行を継続するには、nohup
stdin、stdout、およびstderrがターミナルに似たデバイスではないことを確認してください。これ文書実行した操作について説明します。
標準出力が端末の場合、指定されたユーティリティーがその標準出力に作成したすべての出力は、現在のディレクトリのnohup.outファイルの末尾に追加する必要があります。追加のためにnohup.outを作成または開くことができない場合、出力はHOME環境変数で指定されたディレクトリにあるnohup.outファイルの末尾に追加する必要があります。追加のためにファイルを作成または開くことができない場合は、ユーティリティを呼び出さないでください。
標準エラーが端末の場合、指定されたユーティリティーがその標準エラーに書き込んだすべての出力は、標準出力と同じファイル記述子にリダイレクトする必要があります。
> exhibitor.out
コマンドラインを入力すると、stdoutをファイルにリダイレクトします。アプリケーションの stderr を stdout と同じファイルとして指定することに同意すると、他の操作を実行する必要はありません。または、パラメータを追加することでこれを行うことができます(たとえば、2> exhibitor.err
この選択肢を含めることを提案した未知のユーザーに感謝します。私の通知に名前が表示されませんでした)。
答え2
stdエラーをstd出力にリダイレクトすると、メッセージを削除できます。
nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1 &
答え3
私の場合はstdoutとstderrをリダイレクトしましたが、ログファイルには次の内容も表示されました。
nohup: ignoring input
その警告を削除するには、次のようにstdinをリダイレクトする必要があります。
nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1 </dev/null &
私はこの答えがあなたに間違いなく遅れていることを知っていますが、おそらく他の人に役立ちます。