「設定 - Cron」の版間の差分
(ページの作成:「== 概要 == <br><br> == Cronの設定 == 以下のCronのフォーマットに従って、自動実行するコマンドまたはプログラムを記述する。<br>…」) |
編集の要約なし |
||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
crontabを設定する方法は下記の2種類が存在するので、それぞれの方法について記載する。<br> | |||
<br><br> | 設定ファイル(crontabファイル)を読み込む方法は、誤って内容を削除することがないので推奨する。<br> | ||
* コマンドで設定(crontab -e) | |||
* 設定ファイルを読み込む(crontabファイル) | |||
<br> | |||
<br> | |||
以下のCronのフォーマットに従って、自動実行するコマンドまたはプログラムを記述する。<br> | 以下のCronのフォーマットに従って、自動実行するコマンドまたはプログラムを記述する。<br> | ||
# Example of job definition: | # Example of job definition: | ||
| 13行目: | 15行目: | ||
# | | | | | | # | | | | | | ||
# * * * * * username command-to-be-executed | # * * * * * username command-to-be-executed | ||
<br><br> | |||
== crontabの書式 == | |||
===== ファイルを読み込んで編集 ===== | |||
crontabの設定が記述されたファイルを読み込み、crontabの設定を行う。<br> | |||
こちらの方法では、誤って設定内容が全て削除されることが無いので、安心して設定変更を行うことが出来る。<br> | |||
crontab [-u ユーザ] -l > <ファイル名> | |||
<br> | <br> | ||
<u>'''設定例'''</u><br> | |||
まず、-lオプションで現在の設定を表示して、リダイレクトでファイルに書き込み、ファイルをバックアップする。<br> | |||
次に、crontabにファイルを読み込ませる。(設定変更により問題が発生した場合は、以前の設定を戻すことが出来る)<br> | |||
<br> | |||
以下に例を示す。<br> | |||
crontab -l > crontab-data | |||
cp -p crontab-data crontab-data_`date "+%Y%m%d-%H%M%S"` | |||
vi crontab-data | |||
crontab crontab-data | |||
<br> | |||
===== コマンドで設定 crontab -e ===== | |||
ターミナルにて、以下のコマンドを実行する。<br> | |||
ユーザを指定しない場合、実行したユーザのcrontabが操作対象となる。<br> | |||
rootユーザの場合、-uオプションで指定したユーザのcrontabを設定したり、内容を確認することが出来る。<br> | |||
crontab [-u ユーザ] -e | |||
<br> | |||
<u>'''設定例'''</u><br> | |||
毎時00分にtest.shスクリプトを実行させる設定である。<br> | |||
設定内容は、/var/spool/cron/<ユーザ名>ファイルに保存される。(パーミッションの関係でrootユーザのみ内容を確認できる)<br> | |||
00 * * * * /usr/local/bin/test.sh | |||
<br> | |||
<u>'''オプション'''</u><br> | |||
crontabを操作する際によく使用されるオプションを記載する。<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! オプション !! 説明 !! コマンド実行例 | |||
|- | |||
| -u <ユーザ名> || ユーザを指定してcrontabを実行する。(rootユーザのみ使用可能)<br>省略した場合、crontabコマンドを実行したユーザで設定される。 || crontab -u <ユーザ名> -l | |||
|- | |||
| -l || crontabの設定内容を表示する。 || crontab -l | |||
|- | |||
| -e || crontabの設定を行う。<br><u>'''設定を削除する[r]キーと隣り合わせなので注意すること。'''</u> || crontab -e | |||
|- | |||
| -r || crontabの設定を削除する。<br>削除の確認メッセージは無く、全ての設定が削除されるので注意すること。 || crontab -r | |||
|- | |||
| -i || -rオプションと一緒に使用するとき、設定削除の確認メッセージが表示がされ、[y]または[Y]キーを押下することで設定が削除される。 || crontab -ir | |||
|} | |||
</center> | |||
<br> | |||
<u>'''注意事項'''</u><br> | |||
間違ってcrotab -rをしないためには、-iオプションを.bashrcファイルにエイリアスとして設定することで、-rオプションで設定を削除する際に確認を表示させる。<br> | |||
vi ~/.bashrc | |||
# .bashrcファイル | |||
alias crontab='crontab -i' | |||
<br><br> | |||
== スケジュールの書式 == | |||
crontabで設定するスケジュールの書式は下記の通りであり、空白またはタブで区切られた5つのフィールドで構成される。<br> | |||
フィールドは左から、分・時・日・月・曜日を指定することができる。<br> | |||
※システム上で設定する/etc/crontabファイルや/etc/cron.dディレクトリ内の設定ファイルの記述方法は、下記の書式とは異なる。(実行ユーザを指定する項目が増える)<br> | |||
* * * * * [実行コマンド] | |||
<br> | |||
===== 各フィールドで設定可能な数値 ===== | |||
分・時・日・月・曜日のフィールドに指定できる数値は下記の通りであり、リスト、範囲、間隔といった設定方法と組み合わせてスケジュールを設定する。<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! 設定項目 !! 数値 | |||
|- | |||
| 分 || 0 - 59 | |||
|- | |||
| 時 || 0 - 23 | |||
|- | |||
| 日 || 1 - 31 | |||
|- | |||
| 月 || 1 - 12 | |||
|- | |||
| 週 || 0-7 (0または7は日曜日)<br>0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日 | |||
|} | |||
</center> | |||
<br> | |||
===== *は全ての値となる ===== | |||
スケジュールの設定は数値以外にも、アスタリスク*が設定できる。<br> | |||
<br> | |||
アスタリスク*は、各項目で設定できる全ての値を設定していることになる。<br> | |||
例えば、下記の設定では毎分コマンドが実行される。<br> | |||
* * * * * [実行コマンド] | |||
<br> | |||
===== スケジュール指定方法 ===== | |||
スケジュールの設定は、下記の指定方法を使用することで、より柔軟に実行する時間を設定することが出来る。<br> | |||
リストや範囲を併せて指定することも可能であり、時間フィールドで「1,6,9-11」と指定した場合、1時、6時、9時、10時、11時に処理を実行する。<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! 指定方法 !! 設定例 !! 説明 | |||
|- | |||
| リスト指定 || 0,10,20,30 || カンマで区切ることで複数指定ができる。<br>分フィールド指定した場合は、0,10,20,30分に実行する。 | |||
|- | |||
| 範囲指定 || 1-5 || ハイフンで範囲指定ができる。<br>月フィールドで指定した場合は、1,2,3,4,5月に処理を実行する。 | |||
|- | |||
| 間隔指定 || */10 || "*/数値"で間隔を設定することができる。<br>分フィールドで指定した場合は、10分間隔で処理を実行する。<br>/の後ろに指定した値の間隔で処理を実行する。 | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||
== スケジュールの設定例 == | |||
下記に、crontabでのスケジュールの設定例を示す。<br> | |||
<br> | |||
===== 分単位の設定例 ===== | |||
毎時15分になると実行する。<br> | |||
15 * * * * 実行コマンド | |||
<br> | |||
===== 時間単位の設定例 ===== | |||
毎日AM 4:02 に実行する。<br> | |||
02 4 * * * 実行コマンド | |||
<br> | |||
===== 日にち単位の設定 ===== | |||
毎月10日のAM 6:15 に実行する。<br> | |||
15 6 10 * * 実行コマンド | |||
<br> | |||
===== 月単位の設定 ===== | |||
7月1日 AM 3:00に実行する。<br> | |||
00 3 1 7 * 実行コマンド | |||
<br> | |||
===== 曜日単位の設定 ===== | |||
毎週月曜日のAM 10:00に実行する。<br> | |||
日:0 or 7、月:1、火:2、水:3、木:4、金:5、土:6 | |||
00 10 * * 1 実行コマンド | |||
<br> | |||
===== 書式応用設定 ===== | |||
リスト指定、範囲指定、間隔指定の設定例である。<br> | |||
<br> | |||
'''リスト設定'''<br> | |||
カンマで区切ることで、複数の値を設定することが出来る。<br> | |||
<br> | |||
毎日AM 4:30とAM 9:30に実行する。<br> | |||
30 4,9 * * * 実行コマンド | |||
<br> | |||
毎週月、金曜日のAM 3:00に実行する。<br> | |||
00 3 * * 1,5 実行コマンド | |||
<br> | |||
'''範囲設定'''<br> | |||
-で指定することで、実行範囲を指定することが出来る。<br> | |||
<br> | |||
毎日AM 3:00 4:00 5:00 6:00 7:00 9:00 に実行する。<br> | |||
00 3-9 * * * 実行コマンド | |||
<br> | |||
毎月10日のAM 3:15 4:15 5:15 6:15 に実行する。<br> | |||
15 3-6 10 * * 実行コマンド | |||
<br> | |||
'''間隔設定'''<br> | |||
/の後に実行したい間隔の値を設定することで、その間隔で実行することが出来る。<br> | |||
<br> | |||
10分ごとに実行する場合<br> | |||
*/10 * * * * | |||
<br> | |||
3時間ごとに実行する場合<br> | |||
00 0-23/3 * * * 実行コマンド | |||
<br> | |||
'''複合'''<br> | |||
リストや範囲をあわせた記述も出来る。<br> | |||
<br> | |||
AM 1:00 6:00 9:00 10:00 11:00に実行する。<br> | |||
00 1,6,9-11 * * * 実行コマンド | |||
<br><br> | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]] | [[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]] | ||
2020年4月29日 (水) 17:14時点における版
概要
crontabを設定する方法は下記の2種類が存在するので、それぞれの方法について記載する。
設定ファイル(crontabファイル)を読み込む方法は、誤って内容を削除することがないので推奨する。
- コマンドで設定(crontab -e)
- 設定ファイルを読み込む(crontabファイル)
以下のCronのフォーマットに従って、自動実行するコマンドまたはプログラムを記述する。
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) or (jan, feb, mar, apr, ...) # | | | | .---- day of week (1 - 7) (Sunday = 0, Monday = 1, ...) or (sun, mon, ...) # | | | | | # * * * * * username command-to-be-executed
crontabの書式
ファイルを読み込んで編集
crontabの設定が記述されたファイルを読み込み、crontabの設定を行う。
こちらの方法では、誤って設定内容が全て削除されることが無いので、安心して設定変更を行うことが出来る。
crontab [-u ユーザ] -l > <ファイル名>
設定例
まず、-lオプションで現在の設定を表示して、リダイレクトでファイルに書き込み、ファイルをバックアップする。
次に、crontabにファイルを読み込ませる。(設定変更により問題が発生した場合は、以前の設定を戻すことが出来る)
以下に例を示す。
crontab -l > crontab-data cp -p crontab-data crontab-data_`date "+%Y%m%d-%H%M%S"` vi crontab-data crontab crontab-data
コマンドで設定 crontab -e
ターミナルにて、以下のコマンドを実行する。
ユーザを指定しない場合、実行したユーザのcrontabが操作対象となる。
rootユーザの場合、-uオプションで指定したユーザのcrontabを設定したり、内容を確認することが出来る。
crontab [-u ユーザ] -e
設定例
毎時00分にtest.shスクリプトを実行させる設定である。
設定内容は、/var/spool/cron/<ユーザ名>ファイルに保存される。(パーミッションの関係でrootユーザのみ内容を確認できる)
00 * * * * /usr/local/bin/test.sh
オプション
crontabを操作する際によく使用されるオプションを記載する。
| オプション | 説明 | コマンド実行例 |
|---|---|---|
| -u <ユーザ名> | ユーザを指定してcrontabを実行する。(rootユーザのみ使用可能) 省略した場合、crontabコマンドを実行したユーザで設定される。 |
crontab -u <ユーザ名> -l |
| -l | crontabの設定内容を表示する。 | crontab -l |
| -e | crontabの設定を行う。 設定を削除する[r]キーと隣り合わせなので注意すること。 |
crontab -e |
| -r | crontabの設定を削除する。 削除の確認メッセージは無く、全ての設定が削除されるので注意すること。 |
crontab -r |
| -i | -rオプションと一緒に使用するとき、設定削除の確認メッセージが表示がされ、[y]または[Y]キーを押下することで設定が削除される。 | crontab -ir |
注意事項
間違ってcrotab -rをしないためには、-iオプションを.bashrcファイルにエイリアスとして設定することで、-rオプションで設定を削除する際に確認を表示させる。
vi ~/.bashrc # .bashrcファイル alias crontab='crontab -i'
スケジュールの書式
crontabで設定するスケジュールの書式は下記の通りであり、空白またはタブで区切られた5つのフィールドで構成される。
フィールドは左から、分・時・日・月・曜日を指定することができる。
※システム上で設定する/etc/crontabファイルや/etc/cron.dディレクトリ内の設定ファイルの記述方法は、下記の書式とは異なる。(実行ユーザを指定する項目が増える)
* * * * * [実行コマンド]
各フィールドで設定可能な数値
分・時・日・月・曜日のフィールドに指定できる数値は下記の通りであり、リスト、範囲、間隔といった設定方法と組み合わせてスケジュールを設定する。
| 設定項目 | 数値 |
|---|---|
| 分 | 0 - 59 |
| 時 | 0 - 23 |
| 日 | 1 - 31 |
| 月 | 1 - 12 |
| 週 | 0-7 (0または7は日曜日) 0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日 |
*は全ての値となる
スケジュールの設定は数値以外にも、アスタリスク*が設定できる。
アスタリスク*は、各項目で設定できる全ての値を設定していることになる。
例えば、下記の設定では毎分コマンドが実行される。
* * * * * [実行コマンド]
スケジュール指定方法
スケジュールの設定は、下記の指定方法を使用することで、より柔軟に実行する時間を設定することが出来る。
リストや範囲を併せて指定することも可能であり、時間フィールドで「1,6,9-11」と指定した場合、1時、6時、9時、10時、11時に処理を実行する。
| 指定方法 | 設定例 | 説明 |
|---|---|---|
| リスト指定 | 0,10,20,30 | カンマで区切ることで複数指定ができる。 分フィールド指定した場合は、0,10,20,30分に実行する。 |
| 範囲指定 | 1-5 | ハイフンで範囲指定ができる。 月フィールドで指定した場合は、1,2,3,4,5月に処理を実行する。 |
| 間隔指定 | */10 | "*/数値"で間隔を設定することができる。 分フィールドで指定した場合は、10分間隔で処理を実行する。 /の後ろに指定した値の間隔で処理を実行する。 |
スケジュールの設定例
下記に、crontabでのスケジュールの設定例を示す。
分単位の設定例
毎時15分になると実行する。
15 * * * * 実行コマンド
時間単位の設定例
毎日AM 4:02 に実行する。
02 4 * * * 実行コマンド
日にち単位の設定
毎月10日のAM 6:15 に実行する。
15 6 10 * * 実行コマンド
月単位の設定
7月1日 AM 3:00に実行する。
00 3 1 7 * 実行コマンド
曜日単位の設定
毎週月曜日のAM 10:00に実行する。
日:0 or 7、月:1、火:2、水:3、木:4、金:5、土:6
00 10 * * 1 実行コマンド
書式応用設定
リスト指定、範囲指定、間隔指定の設定例である。
リスト設定
カンマで区切ることで、複数の値を設定することが出来る。
毎日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 * * 実行コマンド
間隔設定
/の後に実行したい間隔の値を設定することで、その間隔で実行することが出来る。
10分ごとに実行する場合
*/10 * * * *
3時間ごとに実行する場合
00 0-23/3 * * * 実行コマンド
複合
リストや範囲をあわせた記述も出来る。
AM 1:00 6:00 9:00 10:00 11:00に実行する。
00 1,6,9-11 * * * 実行コマンド