このbashスクリプト行は何をしますか? [コピー]

このbashスクリプト行は何をしますか? [コピー]
nohup tensorflow_model_server \
  --rest_api_port=8501 \
  --model_name=fashion_model \
  --model_base_path="${MODEL_DIR}" >server.log 2>&1

テンソルフローサービングガイドで見た内容です。ここ。意味を知りたいです> server.log 2>&1。私はこれがstdoutファイルに保存してから別のファイルに保存することです。stderrそれが何なのかわかりません。

ベストアンサー1

このリダイレクトの目的は次のとおりです。返品stderr出力をサーバーログに記録します。

このようにリダイレクトを使用すると、

some command > file.txt

プログラムによって作成された出力は、通常stdoutコンソールに接続された標準出力ストリームにのみ保存されます。

ただし、ほとんどのプログラムはエラーメッセージを別の出力ストリームに書き込むためのベストプラクティスに従い、stderrこれらのエラーメッセージはコンソールにも印刷されますが、エラーメッセージが「詳細」にならないように個別に「キャッチして」リダイレクトできます。プログラムの正常な出力。

しかし、これは問題かもしれません。一部の長い(したがって、無人)コンパイルプロセスの「通常の」出力をファイルにリダイレクトすると、警告とエラーがコンソールに出力されます。後でもう一度結果を確認すると、ログファイルに標準の「すべてが正常です」出力が表示され、コンソールには見かけに関連しないエラー出力が表示されます。

したがって、すべてのメッセージが「コンテキスト」になるように、エラー出力をファイルに「リダイレクト」することが役に立ちます。

ここでのメカニズムは

  • まずstdoutファイルにリダイレクトします。 (この部分は、ストリームのファイル記述子を表すことでcommand > file明示的に作成できます。)command 1>file1stdout

  • stderrまた、「マージされた」方法でリダイレクトstdout(これが構文がファイル記述子を「コピー」するという意味)である理由であり、ファイルにリダイレクトされることが知られています2>&1&stdout

もっと読む良い場所は次のとおりです。

おすすめ記事