cronの設定

cronを設定することにより、定期的にコマンドを発行することができます。

cronを利用するためには、crondデーモンが稼働していることが必要です。

 

 

システムのデフォルトcron設定

cronは多くのディストビューションでインストール直後からなんらかの設定がされています。
この設定は/etc/crontabファイルに記述されており、それぞれ

/etc/cron.daily,/etc/cron.hourly,/etc/cron.monthly,/etc/cron.weekly

ディレクトリ内にあるコマンド(スクリプト)を/etc/crontabに設定された日時に実行します。

 

参考までにこの設定をのぞいてみるのも良いでしょう。夜中の4時に勝手になにかが動いている理由がわかります。

ただし、この/etc/crontabを編集することは通常はないと思います。(意図して変更する場合もあります)

 

 

cronの設定書式

cronの書式は、[分 時 日 月 曜日 (実行ユーザ) コマンド]のような設定書式になっています。

例えば、/etc/crontabには以下のような設定がされています。

02	4  *  *  *  root  run-parts  /etc/cron.daily

この設定は、毎日4時2分に/etc/cron.dailyディレクトリ内のコマンド(スクリプト)を実行する設定になります。

*run-partsを指定してある場合は、該当ディレクトリ内のコマンド(スクリプト)が全て実行されます。

各フィールドの指定書式

フィールド 書式
0から59で指定。*(ワイルドカード)は毎分になる。
0から23で指定。*(ワイルドカード)は毎時になる。
1から31で指定。*(ワイルドカード)は毎日になる。
1から12で指定。*(ワイルドカード)は毎月になる。
曜日 0から7で指定。0と7は日曜日で、1=月,2=火,以降…。
(実行ユーザ) cronは設定したユーザの権限で実行されます。指定したい場合のみ記述します。
コマンド 実行コマンドやシェルスクリプトを指定します。

日付けや時間は範囲指定はが可能になっています。例えば、1時,2時,3時,4時に実行したい場合は、時間指定の所に、1-4と記述します。

また、1時間置きに実行したい場合は、時間指定の所に、*/1と記述します。(2時間置きは、*/2)

 

 

cronの書式例

コメントを記述する(#で始まる行はコメントになります)

# My Cron settings

10月1日の2時0分にhoge.shを実行する。

0  2  1  10  *  /usr/local/bin/hoge.sh

毎日2時0分にhoge.shを実行する。

0  2  *  *  *  /usr/local/bin/hoge.sh

毎月1日の5時0分にhoge.shを実行する。

0  5  1  *  *  /usr/local/sbin/hoge.sh

2時間ごとの0分にhoge.shを実行する。

0  */2  *  *  *  /usr/local/bin/hoge.sh

 

 

cronの実行通知

cronが実行された場合は、通常、実行結果が実行ユーザ宛にメールが送信されます。

この設定は、MAILTO=”メールアドレス”で任意に変更することができます。

 

cronの実行通知メールの設定例

メール送信しない

MAILTO=""

メールを指定アドレスに送信する

MAILTO="hoge@example.com"

メールを複数指定して送信する

MAILTO="hoge@example.com,heat@example.com"

 

 

cronの設定

cronの設定は、実行したいユーザで、crontabコマンドを利用し設定します。

 

crontabコマンドの主なオプション

新規設定や編集

$crontab -e

現在の設定内容を参照

$crontab -l

全ての設定を削除

$crontab -r

 

標準出力と標準エラー出力を捨てる

cronで設定する場合は、設定コマンドの実行結果(標準出力と標準エラー出力)を捨てる場合が多いと思います。

その場合は、以下のように設定します。

hoge.sh 実行時の、標準出力と標準エラー出力を捨てる。

0  2  1  10  *  /usr/local/bin/hoge.sh >/dev/null 2>&1

 

実際の設定例

crontabコマンドで開くエディタはユーザのデフォルトエディタで編集します。

(通常’vi’が多いと思います。)

なお、ユーザが設定したcronは、/var/spool/cron/ユーザ、rootの設定したcronは、/var/spool/cron/rootに保存されます。

以下は、実際にcrontabコマンドを利用して設定した例です。

新規設定や編集用コマンドを発行

$crontab -e

毎日2時30分にhoge.shを実行

#!/bin/sh
MAILTO=""
#minute hour  day  month  week  command
30      2     *    *      *     /usr/local/bin/hoge.sh >/dev/null 2>&1

保存して終了(viなら’:wq’)すると、書式のチェックが行われ問題なければ、crontab: installing new crontabと表示され終了します。

書式上問題があれば、再度編集するようメッセージが表示されます。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">