cronを使ってプログラムを定期的に自動実行、日時やコマンドの表記について説明する。
cronを使うと、サーバー上にあるプログラムを指定した時間に定期的に自動的に実行できる。 Windowsで言うとタスクスケジューラのようなもの。 用途としては、ウェブサイトでの定期的なAPIの実行、集計処理、バックアップなどがある。
ターミナル上で以下のコマンドを実行すると cron の編集などができる。
cronのリストを表示crontab -l
crontab -e
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
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
0 */1 * * * /htdocs/example/test.sh
0-30/10 */3 * * * /htdocs/example/test.sh
* * * * * /htdocs/example/test.sh
*/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 というエラーが出る