CentOSにおいて、定期的にコマンドを実行するcronを使用する際、特に設定しない場合は、実行されたコマンドの出力が設定ユーザ宛にメールで送信される。
このコマンド実行結果の出力のメール送信先を変更したい場合はcrontab
にMAILTO
環境変数をすればよい。
$ crontab -e --------------------------------- MAILTO=user@example.com */5 * * * * /home/username/env.sh ---------------------------------
またcron実行環境(環境変数)は普通にユーザとしてログインした場合と違っているため、ログインして直接実行できてもcronを経由すると実行できないということがある。
例えば、cron実行環境では下記のような最低限のPATH
が設定された状態のため、後からインストールした/usr/local/bin
にあるコマンドなど、PATH
に含まれないコマンドはスクリプト内に記述しても実行できない。(もちろん、絶対PATHを指定したコマンドであれば実行される。)
PATH=/usr/bin:/bin
このように、cronでコマンドを実行できない理由がPATH
にある場合はPATH
環境変数をcrontab
に設定すれば解決する。
$ crontab -e --------------------------------- MAILTO=user@example.com PATH=/usr/bin:/bin:/usr/local/bin */5 * * * * /home/username/env.sh ---------------------------------
ちなみに、実行するのがシェルスクリプトならばスクリプト内にPATH
を書いても同様に解決する。スクリプト毎にPATH
を書くのが面倒な場合はcrontab
に書いてしまう方法がよいだろう。