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.out
nohup.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
。