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