今さら知ったCronリダイレクトの誤り

Cronで、標準出力も標準エラー出力も抑制する。よく利用する処理だと思うが、正しいのは以下のどちらか。

1. command > /dev/null 2>&1
2. command 2>&1 /dev/null

正解は、1の方。2の記述だと、標準出力は/dev/nullへ吐き出されるが、標準エラー出力が端末に向いてしまう、とのことだ。

参考
シェルのリダイレクトにまつわる失敗

恐ろしいことに、今までこの違いを分からずに使っていた。
そう言えば、「おかしいな、エラー出力抑止しているはずなのに」ということもあったな・・・。

そして今も詳しい理屈は覚えようとしない自分。