以下のように、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
このメッセージが表示されても問題はありませんか?それはどういう意味ですか、どうすれば回避できますか?
アプリケーションがターミナルから切り離されていることを確認するには-フォアグラウンドコマンドに干渉せず、ログアウト後も引き続き実行できるようにするには-Nohup
は、stdinもstdoutもstderrもターミナルのようなデバイスではないことを確認します。 documentation は、実行するアクションを説明します。
標準出力が端末の場合、指定されたユーティリティによってその標準出力に書き込まれるすべての出力は、現在のディレクトリのNohup.outファイルの末尾に追加されます。追加のためにNohup.outを作成または開くことができない場合、出力は、HOME環境変数で指定されたディレクトリー内のファイルNohup.outの末尾に追加されます。追加用にどちらのファイルも作成または開くことができない場合、ユーティリティは呼び出されません。
標準エラーが端末の場合、指定されたユーティリティによってその標準エラーに書き込まれるすべての出力は、標準出力と同じファイル記述子にリダイレクトされます。
コマンドラインで> exhibitor.out
と入力したときに、stdoutをファイルにリダイレクトしました。アプリケーションのstderrをそのstdoutと同じファイルに転送することに問題がなければ、他に何もする必要はありません。または、2> exhibitor.err
などの引数を追加して、stderrを別のファイルにリダイレクトできます。 (不明なユーザーのおかげで-私の通知には名前が表示されませんでした-この代替を含めることを提案してくれました。)
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 &
私の状況では、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 &
この答えは間違いなく遅いですが、他の人の役に立つかもしれません。