nohup出力をnohup.out以外のログファイルにリダイレクトする方法はありますか?

nohup出力をnohup.out以外のログファイルにリダイレクトする方法はありますか?

nohup私はプロセスが中断されないようにこのプログラムを頻繁に使用します。したがって、programプログラムが中断されないようにするには、次のコマンドを使用します。

nohup program &

&プロセスをバックグラウンドに置く場所です。

始めるためにnohup私にメッセージを送ってください:

nohup: "nohup.out"に出力を追加します。

出力を別のファイルに送信する方法はありますかnohup.out?通常、私は同じディレクトリで多くのプロセスを実行したいのですが、これを行うと、すべての出力が1nohupつのnohup.outファイルに集中します。

マニュアルページ(例:ここ)ログファイルを指定するオプションがないようです。これを確認できますか?また、この問題をどのように解決できるかについてのアイデアはありますか?

答え1

GNU coreutils のnohupマニュアルページは、一般的なリダイレクトが利用可能であることを示します。

標準入力が端末の場合にリダイレクトします/dev/null。標準出力が端末の場合は、可能であればnohup.out出力を端末に追加し、$HOME/nohup.outそれ以外の場合は出力を追加します。標準エラーが端末の場合は標準出力にリダイレクトします。出力をFILEに保存するにはnohup COMMAND > FILE

編集:最初はあなたのリンクを読んでいません。異なるバージョンがある可能性がありますnohup。ただし、このセクションではまだ一般的なリダイレクトを使用できることを示唆しています。

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

標準出力と標準エラーを別のファイルにリダイレクトできます。

nohup myprogram > myprogram.out 2> myprogram.err &

または同じファイル:

nohup myprogram > myprogram.out 2>&1 &

(最後の&を背景に入れることを忘れないでください)

答え2

次へ追加ジムより多くの可視性を得るには、ここに答えを付けてください。

代わりにnohup program > program.out &出力を書き込むprogram.outnohup.out

答え3

まあ、もしあなたがPythonを使っていて長い間検索をしてきたが、うまくいくことができないならば。ここにあります:

nohup python -u my_script.py > program.out 2>&1 &

原因:Pythonは出力を書き込む前にバッファリングするため、-uこの動作を無効にします。

アップデート:環境を設定することもできます。PYTHONUNBUFFERED=1 同じ動作に対するバリアントです。

答え4

誰かがこのコマンドを説明できますか?象形文字2>&1が何を意味し、何をするのかを説明できますか?

  • このnohupコマンドは SIGHUP を無視し、与えられたコマンドを実行します。
  • SIGHUPは「電話を切る」を意味し、通常はシステムが切断されたとき(ネットワークの中断)プログラムに送信されます。
  • 標準出力が端末の場合、デフォルトはnohup.out現在のディレクトリに書き込むことです。
  • これにより、2>&1「ターミナルに接続」部分が無効になります。
  • 標準出力と同じ意味を持つ2>標準エラーに書き込むことを示します。&1
  • 次に、> program.out標準出力をファイルに書き込むようにシェルに指示しますprogram.out

関連情報