cron
cronとは?
cronとは指定した時間にジョブを自動実行してくれる機能。(Windowsのタスクスケジューラみたいなもの)
ジョブが実行されなくても再実行してくれない。
crondプロセスが常駐してジョブを実行する。
設定方法がいくつかある
/etc/crontab
システム向け
root権限で実行される
編集方法はviで直接編集
「分 時 日 月 曜日 ユーザ コマンド」の形式で記入
反映にはcrondの再起動が必要
RedHat系では非推奨な模様
/etc/cron.d/*
サービス向け
root権限がないとディレクトリにファイルを作成できない
フォルダにファイルを配置する(もしくはファイルをviで直接編集)
「分 時 日 月 曜日 ユーザ コマンド」の形式で記入
各ユーザーのcrontabファイル(/var/spool/cron/**** ※****はユーザ名。rootユーザーならroot)
ユーザー向け
ユーザーごとに作成されるので誰でも使える。
編集方法はcrontab [-u user] -e
または crontab [-u user] ファイル名 ※上書きされるので注意
「分 時 日 月 曜日 コマンド」形式で記入
自動的に反映される
「分 時 日 月 曜日 コマンド」形式
分 :0-59
時間:0-23
日 :1-31
月 :1-12 または jan-dec
曜日:0-7 (日曜日が0と7)または sun-sat
指定方法
固定指定
0 15 * * * echo "foo"
間隔指定
*/5 * * * * echo "foo"
複数指定
0,30 15 * * * echo "foo"
範囲指定 2時5分、3時5分...5時5分
5 2-5 * * * echo "foo."
複合パターンも可能
例
1,2-3
1-10/2 1-10の範囲で2ごと
MAILTOについて
cron実行時にメールを送信する機能
cronで実行するジョブがstdout、stderrを出力しなければメール送信されない
設定方法
メール送信されないように設定する場合
MAILTO=""
メール送信されるように設定する場合 ※複数指定の場合は「,」で区切って設定。
MAILTO="tatsuhi10@example.com,tethuhi10@example.com"
/etc/sysconfig/crond
CRONDARGS="-m off"
再起動が必要
その他
cronで実行されるコマンドは、実行ユーザーのホームディレクトリで実行される
参考