読者です 読者をやめる 読者になる 読者になる

シェルスクリプト実行時のエラーを捨てる

邪道なのはわかっているが、オトナの都合で捨てるしかないエラーもあるものなの><。
で、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

っていうmysqlphpのはざまで苦しんでいるスクリプトの悶絶。

#! /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
を読んでください。