cronの設定 - プログラムを指定した時間に定期的に自動的に実行する方法

更新:

cronを使ってプログラムを定期的に自動実行、日時やコマンドの表記について説明する。

cron

cronを使うと、サーバー上にあるプログラムを指定した時間に定期的に自動的に実行できる。 Windowsで言うとタスクスケジューラのようなもの。 用途としては、ウェブサイトでの定期的なAPIの実行、集計処理、バックアップなどがある。

コマンド

ターミナル上で以下のコマンドを実行すると cron の編集などができる。

cronのリストを表示
crontab -l

cronの編集
編集方法は vi と同じ。
crontab -e

cronをすべて削除
crontab -r

記述例

cronの書式は以下のようになっている。

分(0-59) 時(1-24) 日(1-31) 月(1-12) 曜日(0-7,0=7=日曜日) コマンド

数字を書くとその数字のときに実行、* を書くと毎回、*/6 のように書くとその数値毎の実行になる。

9時30分に実行
30 9 * * * cd /htdocs/example/test.pl

3分おきに実行
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57, * * * * /htdocs/example/test.sh
数字を羅列しても良いが、/(スラッシュ)を使って以下のようにシンプルに書ける。
*/3 * * * * /htdocs/example/test.sh

1時間おきに実行
0 */1 * * * /htdocs/example/test.sh

3時間おき、0~30分の間の10分おきに実行
0-30/10 */3 * * * /htdocs/example/test.sh

毎分実行(1分おき)
* * * * * /htdocs/example/test.sh

7時~8時に10分おきに実行
*/10 7-8 * * * /htdocs/example/test.sh

テキストファイルに実行結果を出力
* * * * * /htdocs/example/test.sh > /htdocs/example/test.txt

いろいろなプログラムを実行する例
0 */1 * * * /usr/local/bin/php /home/test/example.php
0 3 * * * /usr/local/pgsql/bin/vacuumdb -d DB名 -U ユーザ名
30 9 * * * cd /htdocs/example/; ./test.pl

cron の末尾に書くコマンドは、単にプログラムの実行ファイルのパスを指定するだけでなく、通常の Linux のコマンドと同様に記述でき、PHP や Perl などのパスを指定できる。

/usr/bin/php7.1 /home/username/example.com/public_html/test.php

レンタルサーバーでは通常コントロールパネルからcronを実行する時間を指定する。 1時間おきの場合は、分は 0、時間は */1、それ以外(日、月、曜日)は * といった具合に、上述の記法で各テキストボックスに入力すれば良い。

関連

cron で require(): Failed opening required というエラーが出る