ラベル

Server (108) work (77) Idea (68) Car (31) PC (29) DAW (28) other (19) MakingWEBsite (18) 趣味 (18) health (13) CentOS (11) drupal (11) (9) android (4) スマホ (4) communication (3) drupal7 (3) hint (3) meno (3) モバイル (3) 歯医者 (3) 第二種電気工事士 (3) 英語 (3) PC Server (2) drupal8 (2) ms access (2) uwp C# (2) めし (2) 整備 (2) 音楽 (2) MIDI (1) diy (1) 会計 (1) 動画再生 (1) 生活 (1) 郵便 (1) 食べ物 (1)

2017年7月22日土曜日

cron 設定 エラー出力

cronの設定で
下のようにしてメールを送らない設定にすると困る時がある。

vi /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=root
MAILTO=""
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

スクリプトをcronで実行して
/usr/local/bin/pekehoge.sh: line 135: iptables: コマンドが見つかりません
こんなエラーがメールで送られてくることがある。このエラーは、cronログには出てこない。自分で設定をしないとログに出てこない。
(logファイル全部の串刺し検索もしたけど見つからなかった。)
で、
上の/etc/crontabで、メール設定は有効にした状態でエラーをログに出したりエラーメールだけを送る方法。

エラーメールだけがほしい時、cronの設定の最後に
1> /dev/null
とする。標準出力を/dev/nullというゴミ箱に出力する(捨てる)という意味。
"1>"は標準出力、"2>"は標準エラー出力。1の場合は省略できるので
> /dev/null
とも書ける。
自分の設定はとりあえずこれにしておく。cronが見かけ上動いていても、スクリプトの一部のコマンドが機能していないときにメールがほしい。cronが動いているかどうかはcronログをみる。

同じように
 1> /dev/null 2>&1                   標準出力も標準エラー出力も捨てる
 1>> /var/log/pekehoge.log 2>&1    標準出力も標準エラー出力もログファイルに書き出す 
 >> /var/log/pekehoge.log              標準出力はログファイルに書き出し、標準エラー出力はメールする

ログファイルに書き出すときのローテートの設定。
# vi /etc/logrotate.d/pekehoge
/var/log/pekehoge.log
{
    monthly
    rotate 24
    compress
    missingok
}
月ごとにローテートして、24世代保管、gzipで圧縮して、ログファイルが存在しなくてもエラーを出さずに処理を続行









0 件のコメント:

コメントを投稿