【crontab】Linuxで処理の自動実行を設定するコマンド

Linuxのcrontabコマンドは、プログラムを指定した日時に自動実行するためのデーモンcrondの設定を行うコマンドです。

設定はユーザーごとに用意されたcrontabという設定ファイルに記述されます。

crontabコマンドの使い方

crontabコマンドの構文は以下の通りです。

$ crontab オプション

オプション

-e 環境変数EDITORで指定されているエディタを起動する
-l 登録されているcrontabを表示する
-r 登録されているcrontabを削除する
-u ユーザー 指定ユーザーのcron設定を行う

crontabの構文

定期実行の構文は以下の通りです。

# コメント
分 時 日 月 曜日 コマンド
分(0-59)、またはワイルドカード「*」を指定する
時(0-23)、またはワイルドカード「*」を指定する
日(1-31)、またはワイルドカード「*」を指定する
月(1-12)、「jan~dec」またはワイルドカード「*」を指定する
曜日 曜日(0-7)、「sun~sat」またはワイルドカード「*」を指定する(0は日曜)
コマンド 実行するコマンドまたはスクリプトを記述する

crontabを編集する

crontabを編集するには、オプション「-e」を指定します。

$ crontab -e

基本的にはこのコマンドを使用してエディタを開き、自動実行の設定を記述していきます。複数の自動実行を指定したい場合は、別の行に追加してください。

自動実行の指定方法

たとえば、1時間ごと(毎時0分)に処理を実行したい場合は以下のように設定します。

# 1時間ごとにcommandを実行
0 * * * * command

この場合、0:00, 1:00, 2:00 ... のように1時間ごとにコマンドが実行されます。

また、毎月1日の4:30に処理を実行したい場合は以下のように設定します。

# 毎月1日の4:30に処理を実行
30 4 1 * * command。

時間を範囲指定する

数値は範囲を指定することもできます。範囲は二つの数をハイフンでつなげます。たとえば「時」に 「8-11」 を指定すると、 8時, 9時, 10時, 11時に処理が実行されます。また「曜日」に 「1-5」 を指定すると、 月曜日から金曜日までを意味します。

# 月曜日から金曜日の間 8:00, 9:00, 10:00, 11:00 にcommandを実行
0 8-11 * * 1-5 command

時間を複数指定する

時間はリスト形式で複数指定することもできます。リストはコンマで区切られた数値のセットで、「1,2,5,9」「0-4,8-12」のように記述します。

たとえば「分」に 「10,20,30」 を指定すると、 10分, 20分, 30分 に実行されます。

# 毎日、毎時、10分,20分,30分 にcommandを実行
10,20,30 * * * * command

「月」や「曜日」には名前を使用することもできます。その日または月の最初の3文字を用います。ただし、上記の「範囲」や「リスト」を名前に対して用いることはできないので注意してください。

時間を一定間隔で指定する

時間を間隔で指定することもできます。「時間/間隔」と指定すると、指定した間隔おきに処理が実行されます。

2時間おきに処理を実行する場合は以下のように指定します。

# 毎日、2:00, 4:00, 6:00, ... , 24:00 にcommandを実行
0 */2 * * * command

登録されている自動実行を表示する

登録されている自動実行を表示するには、オプション「-l」を指定します。

$ crontab -l