cronでバッチを走らせた場合に良くやるのが、リダイレクトを利用したロギング
0 * * * * /root/test.sh >> /va/log/test.log
みたいにリダイレクトすればtest.shを実行して標準出力の内容をtest.logに追記できる(上書きなら>一個)
また、出力内容をメールしたい場合には、リダイレクト(>)の代わりにパイプ(|)を使って、
0 * * * * /root/test.sh | mail user@hoge.piyo
みたいにmailコマンドに入力してメールを飛ばす。
で、本題はロギング(リダイレクト)しつつ、メール送信(パイプ)もしたい場合。
プログラムの中に何かしら書いてしまえば出来るけど、手を入れずに済ませる場合に使えるのが tee と言うコマンド。
tee は、入力された情報をファイルに書き込みつつ標準出力にエコーするだけの単純なプログラムだ。
0 * * * * /root/test.sh | tee /var/log/test.log | mail user@hoge.piyo
のように使うと、/var/log/test.log に書き込んで、メールも飛ばせる。
デフォルトで上書きなので、追記したい場合は
0 * * * * /root/test.sh | tee -a /var/log/test.log | mail user@hoge.piyo
のように、-a(append)オプションを付けてやればいい。
ほんとに単純なコマンドではあるが覚えていると便利である。
(1906)