cronでログ出力とメール送信を同時にしたい – パイプ リダイレクト tee

 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)オプションを付けてやればいい。

 ほんとに単純なコマンドではあるが覚えていると便利である。

(1853)


カテゴリー: サーバ設定   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です