これらの2行の間に違いはありますか?
/home/user/script.sh >> /home/user/stdout_and_error.log 2>&1
/home/user/script.sh 2>&1 >> /home/user/stdout_and_error.log
スクリプトの標準出力と実行エラーをログファイルに保存したいと思います。違いがなければ、ロギング自体を記録したい場合はどうすればよいですか?
ベストアンサー1
はい、少し違います。
/home/user/script.sh >> /home/user/stdout_and_error.log 2>&1
それからSTDOUTとSTDERRが/home/user/stdout_and_error.log
。
/home/user/script.sh 2>&1 >> /home/user/stdout_and_error.log
これにより、STDOUTが前のSTDOUTに送信され、/home/user/stdout_and_error.log
STDERRが以前のSTDOUTに送信されます。
シェルリダイレクトを実行すると、リダイレクトの左側が現在のリダイレクトの右側の位置に移動します。つまり2>&1
、現在 STDOUT(1) があるところに STDERR(2) を送ります。
ただし、STDOUTを別の場所にリダイレクトすると、STDERRはフォローしません。 STDOUT が以前にあったところから続く。そのため、最初の例ではSTDOUTとSTDERRの両方が同じ位置に移動しますが、2番目の例ではそうではありません。