燈明ブログ

現状は小池啓仁の応援ブログ

cron設定メモ

Linuxのcronとは、指定した時間に任意のコマンドを実行してくれる、そうWindowsで云うタスクスケジューラのような機能です。
指定した時間に任意のコマンドを実行するように設定するには、シェルプロンプトから『crontab -e』と入力し、以下のように記述します。

* * * * * /usr/bin/hoge.sh

コマンドまでに5のフィールドがあり、左からそれぞれ、分、時、日、月、週になっています。
設定する値は、以下の表の通りです。
尚、各々のフィールドに『*』を指定すると、すべてを意味するワイルドカードとなり、5のフィールドに『*』を指定すると結果的に1分間隔のコマンド起動になります。
これは、cron設定の最少単位が分単位ということでもあります。
したがって、上記は、一分毎にhoge.shを起動します。

field allowed values
----- --------------
分(minute) 0-59
時(hour) 0-23
日(day) 1-31
月(month) 1-12 (or names, see below)
週(week) 0-7 (0 or 7 is Sun, or use names)


実は、一分毎にhoge.shを起動する記述は、他にも以下の2通りがあります。

0-59 * * * * /usr/bin/hoge.sh
*/1 * * * * /usr/bin/hoge.sh

補足:『*/1』と言う記述の『/1』は、範囲の「間隔値」で、たとえば、『1-9/2』とした時は『1,3,5,7,9』と同じになります。
補足の補足:各フィールドは、カンマで区切ってリスト値(『1,3,5,7,9』等)も指定ができます。


尚、cron設定の最少単位は分単位なのですが、sleepコマンドを組み合わせることにより、秒単位の指定が可能です。
以下は、30秒毎の起動される。

* * * * * /usr/bin/hoge.sh & sleep 30; /usr/bin/hoge.sh

また尚、実行結果はメールで自分自身に送られます。
メールを送ってほしくない場合は、標準出力を/dev/nullに捨てます。

* * * * * /usr/bin/hoge.sh 1> /dev/null

この場合はエラーが起こった時だけ (標準エラー出力に出力があった時だけ)メールが送られてきます。
エラーが起ころうと絶対にメールを送ってほしくない場合は以下のように指定します。

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