バックグラウンドでコマンドを実行し、画面に印刷せずにファイルに出力を印刷する

バックグラウンドでコマンドを実行し、画面に印刷せずにファイルに出力を印刷する

バックグラウンドで何かを実行し、ファイルとして印刷したいとしましょう。ただし、次の操作を行っても画面に印刷されます。理由を知っている人はいますか?私は何をすべきですか?ありがとうございます。

./mc.x & 2>&1 > test.out  
wait

答え1

次のように背景を最後に配置します。

./mc.x 2>&1 > test.out &

注: 2>&1 を使用すると、stderr が stdout のある位置 (つまり、ディスプレイととにかく移動する位置) に移動するため、リダイレクトは効果がありません。その後、stdoutはtest.outファイルに移動します。順序を変更すると、すべてのstderr + stdoutがtest.outファイルに移動します。

答え2

最初に使用する構文は次のようにする必要があります。

./mc.x > test.out 2>&1

&使用したいコマンドの追加をメモしてください。はい、これを行うと、プログラムをバックグラウンドで送信できなくなります。

nohup欲しいものを達成するための簡単な要約:

nohup 2>&1 ./mx.c &

これにより、プログラムが端末を中断することなく、両方のstdout端末stderrnohup.out

関連情報