シェルスクリプト実行時のエラーを捨てる
邪道なのはわかっているが、オトナの都合で捨てるしかないエラーもあるものなの><。
で、cronで定期実行させているスクリプトからエラー出力がある場合に、noticeがメールで届くのが厭っていうの。
よく遭遇するのは、
aFile 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2) aCharacter set '#33' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file
っていうmysqlとphpのはざまで苦しんでいるスクリプトの悶絶。
#! /bin/sh cd $1 tool_send_schedule_mail.php > /dev/null 2>&1
こんげにしてやっと、エラー出力も /dev/nullに捨てられる。
(略) > /dev/null 2>&1
の部分を
(略) 2>/dev/null
としてやると、エラー出力のみを/dev/nullに捨てるんだと思ったよ確か。
[説明してくれてる人]
http://oshiete1.goo.ne.jp/qa1109301.html
標準出力だけでなく、標準エラー出力もリダイレクトするための指示で す。 例えば、 コマンド > /dev/null とかだけだと、動作しているコマンドからの出力は/dev/nullへリダイレクト できますが、エラーに関する出力はリダイレクトできずに画面に表示されて しまいます。で、 コマンド > /dev/null 2>&1 とすることで、エラー出力も/dev/nullに向けられて、画面に不必要な表示 が出なくなるわけです。 標準出力、標準エラー出力、リダイレクトなどの用語の解説は参考URL を読んでください。