- 設定書式
- 設定項目は左から「分」「時」「日」「月」「曜日」となっている。
* * * * * [実行コマンド]
- 設定可能な数値
分 0-59
時 0-23
日 1-31
月 1-12
曜日 0-7 (0または7は日曜日)
- 実行時間指定方法
リスト 0,10,20,30 分フィールド指定した場合は0,10,20,30分に実行します。
範囲 1-5 月フィールドで指定した場合、1,2,3,4,5月に処理を実行します。
共存 1,6,9-11 時間フィールドで指定した場合、1時、6時、9時、10時、11時に処理を実行します。
間隔 */10 分フィールドで指定した場合、10分間隔で処理を実行します。「/」の後ろに指定した値の間隔で処理を実行します。
- 毎時15分になると実行
15 * * * *
- 時間単位の設定例
- 設定できる値 0-23
- 毎日AM 4:02 に実行
02 4 * * *
- 日にち単位の設定
- 設定できる値 1-31
- 毎月10日のAM 6:15 に実行
15 6 10 * *
- 月単位の設定
- 設定できる値 1-12
- 7月1日 AM 3:00に実行
00 3 1 7 *
- 曜日単位の設定
- 設定可能な値 0-7
- 各値に対応する曜日
月曜日 1
火曜日 2
水曜日 3
木曜日 4
金曜日 5
土曜日 6
日曜日 7 または 0
- 毎週月曜日のAM 10:00に実行
00 10 * * 1
- 間隔設定
- 「/」の後に実行したい間隔の値を設定することで、その間隔で実行することができます。
- 10分ごとに実行する場合
*/10 * * * *
- 3時間ごとに実行する場合
00 0-23/3 * * *
- リスト設定
- 「,」で区切ることで、複数の値を設定することが出来ます
- 毎日AM 4:30とAM 9:30に実行
30 4,9 * * *
- 毎週月、金曜日のAM 3:00に実行
00 3 * * 1,5
- 範囲設定
- 「-」で指定することで、実行範囲を指定することができます。
- 毎日AM 3:00 4:00 5:00 6:00 7:00 9:00 に実行
00 3-9 * * *
- 毎月10日のAM 3:15 4:15 5:15 6:15 に実行
15 3-6 10 * *
- 複合
- リストや範囲をあわせた記述も可能です。
- AM 1:00 6:00 9:00 10:00 11:00に実行
00 1,6,9-11 * * *
- 「crontab -e」コマンドでcronの設定を行います。
$ crontab -e
no crontab for tamo - using an empty one
crontab: installing new crontab
- 毎時00分に「disk-space.sh」というスクリプトを実行させる設定です。
00 * * * * /root/disk-space.sh
- 設定内容は/var/spool/cron/[user]に保存されますが、パーミッションの関係でrootユーザでしか中身は確認できないはずです。
# ls -l /var/spool/cron/
合計 8
-rw------- 1 root root 22 4月 2 11:39 root
-rw------- 1 root tamo 20 4月 2 12:53 tamo
crontabのTips
cronで月末を指定
- 情報元cron(crontab)で月末で指定する方法
- 毎月28~31日の間にtestコマンドで月末かどうかをチェックしているようです
55 23 28-31 * * /usr/bin/test $( date -d '+1 day' +%d ) -eq 1 && 実行したいコマンド
- 最終金曜日のみ実行
- cron的には毎週金曜日testコマンドで判別をしている、最終金曜日の判定はtestコマンドにて行っています。賢いですねぇ~
0 0 * * 5 /usr/bin/test $( date '+\%m' ) -ne $( date -v+7d '+\%m' ) && echo 'Go Ahead!'
dateコマンドの種類によっては下記のように設定する必要があるそうです。
0 0 * * 5 /usr/bin/test $( date +\%m ) -ne $( date --date '7 day' +\%m ) && echo 'Go Ahead!'
- メールを出したくない場合
- cron設定の前に以下の行を入力
MAILTO=””
-
これでメールは飛ばなくなります。逆に、複数のアドレスに飛ばしたいときは、カンマ区切りで複数メールアドレスを指定する
-
この$MAILTO変数は、デフォルトのメールアドレスを上書き
-
特定の設定のみメールを変更
ただし、上記は/etc/crontab自体を変更した場合と同じく、実行するアカウントのcron設定すべての宛先に反映される。特定のスケジュールのみを宛先変更させたい場合には、次のように指定すればよい。
# crontab -e
0 2 * * * /bin/sh /etc/hogehoge 2>&1 | Mail [送信先メールアドレス]