contents
- cronとは?オプションは?
- cronの設定
- cronのログを見よう
- cronコマンドの仕様を変更しよう
- cronのメール送信機能を停止しよう ⇦今ここ
cronのメール機能について
cronには実行時にメールを送信する機能がデフォルトで入ってます。
この機能にはちょっと難がありまして、メール送信に失敗すると/var/spool/mail/
配下にある各ユーザのファイルにガシガシ追記されます。
この追記が原因で過去に/var/spool/mail/
配下がいっぱいになることでディスクが圧迫され、監視のアラートで大騒ぎをしたことがあります。
ここでは、メール停止方法として2パターン紹介したいと思います。
次の2パターンが停止する方法です。
・crontab
のMAILTO
を空白にする。
・crond
の設定変更を行う。
crontab
のMAILTO
を空白にする。
まずは、「crontab
のMAILTO
を空白にする。」です。
crondの使用方法によって、MAILTOの設定箇所が変わりますので、注意が必要です。
MAILTOを設定する箇所は
/etc/crontab
/etc/cron.d/0hourly
/var/spool/cron/(各ユーザのcrontab)
になります。
SOOOTAの環境では、上記の3ファイルに設定が必要でしたので、一つ一つ見ていきます。
rootになるか、sudoで対応していきましょう。(コマンドはrootユーザになってます)
/etc/crontab
まずは大元を見ていきましょう。
cat /etc/crontab
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 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
ファイルの3行目に
MAILTO=root
があります。rootでcron実行された場合、このMAILTOの宛先に従ってメールが送信されます。
デフォルトのrootだとアドレスの形になっていないので、メールは送らずにファイルに出力されます。
なので、ここの部分を
MAILTO=""
に設定します。
ただし、今開いてる/etc/crontab
だと5行目以降がコメントアウトされており、cronで実行されるものがないため、現状あまり設定しても意味がないですね(^ ^;)
/etc/cron.d/0hourly
次は、/etc/cron.d/0hourly
です。
こちらは1時間毎に/etc/cron.hourly
を実行します。
cat 0hourly
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
ファイルの中身を見ると、01 * * * *
とあるため、1時間毎に/etc/cron.hourly
が実行されています。
そのため/etc/cron.hourly
が実行される度に、メールが送信されるようになってますので、MAILTO=""
を設定していきます。
/var/spool/cron/(各ユーザのcrontab)
最後は各ユーザで発行しているcrontabに対してメール送信をさせない方法になります。
このやり方は個別にcronからのメール送信を防ぎたいというやり方としても有効になります。
これは簡単で各ユーザで呼び出すcrontabの一番上の行にMAILTO=""
を記載します。
通常、crontab
には、MAILTO=""
がありません。
crontab -l
*/1 * * * * echo test
こんな風に表示されるのが普通かと思います。
ここの一番上にMAILTO=""
をセットします。
crontab -l
*/1 * * * * echo test
こんな感じですね。
これはcrontabが実行された時にMAILTOが空白に上書きされるため、設定が有効になります。
以上がMAILTO=""
を設定する方法です。
crond
の設定変更を行う
さて、2つ目のメール送信をやめさせる方法「crond
の設定変更を行う」についてです。
これは/etc/sysconfig/crond
の中にある
CRONDARGS=””
にオプションとして「-m off
」を設定する方法です。
cat /etc/sysconfig/crond
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS=”-m off”
こちらの設定後は、必ずcronデーモンの再起動が必要になります。
忘れると適用されないままなので、忘れずに再起動しましょう。
メールの停止方法としては、どちらを採用しても良いと思います。
ただ、MAILTOだと他のユーザがcrontabを設定したり、crontab -r
で設定を消してしまうと元も子もないため、
僕自身のオススメは/etc/sysconfig/crond
のオプションに追記する方が色々と安全なのかなと思います。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
人気ブログランキング
にほんブログ村