バックグラウンドで何かを実行し、ファイルとして印刷したいとしましょう。ただし、次の操作を行っても画面に印刷されます。理由を知っている人はいますか?私は何をすべきですか?ありがとうございます。
./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
端末stderr
をnohup.out
。