「設定 - Cron」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == <br><br> == Cronの設定 == 以下のCronのフォーマットに従って、自動実行するコマンドまたはプログラムを記述する。<br>…」)
 
編集の要約なし
1行目: 1行目:
== 概要 ==
== 概要 ==
 
crontabを設定する方法は下記の2種類が存在するので、それぞれの方法について記載する。<br>
<br><br>
設定ファイル(crontabファイル)を読み込む方法は、誤って内容を削除することがないので推奨する。<br>
 
* コマンドで設定(crontab -e)
== Cronの設定 ==
* 設定ファイルを読み込む(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 * * * 実行コマンド