2008年11月21日金曜日

XREA で cron を設定し、定期的にコマンドを実行する

1. 定期的なコマンドの実行を管理する cron

XREA において、定期的にスクリプトを実行したい。そのためには、cron の設定を行う必要がある。

cron とは、crontab – Wikipedia によると、

crontabコマンドはUnixOSにおいて、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。

 

2. XREA における cron の設定

XREAサーバーのCRONTAB設定とシェルスクリプト記述方法を教えて下さい - 教えて!goo」によると、

XREA管理画面でのCRON設定で直接perlを動かすことは
できません。
そこには、まずshellを指定します。
例えば、/virtual/xxxxx/cron-1.sh
中身は
-----------------------------------------------
#!/bin/sh
#PERL
/usr/local/bin/perl /virtual/xxxxx/mi_mlpost.pl
exit
-----------------------------------------------
このようにshellからperlのプログラムを動かします。

つまり、設定する内容は、

  1. XXXXX.sh に「定期的に実行したいスクリプト」を、shell から実行するファイルを作成。
  2. crontab の設定。

 

3. 例

例えば、Drupal の cron.php を、定期的に実行したいとする。

  • 運用しているのは、XXXXX.xrea.jp というサブドメイン。
  • 定期的に実行したいのは /public_html/XXXXX.xrea.jp/cron.php ファイル。

 

4. shell の記述とアップロード

081121-001まず、 cron の設定をするページにある「シェルスクリプトの例」をコピーし、エディタで以下のように記述。実行したいのは PHP ファイルなので、PHP のところだけを利用。

#!/bin/sh

#PHP
/usr/local/bin/php /virtual/ユーザ名/public_html/XXXXX.xrea.jp/cron.php
exit

「※ 改行コードは必ず「LF」で指定して下さい。」とあるので、間違わないように保存。ファイル名は適当に cron1.sh とした。

これを FTP で `/’ 直下に置いた。

 

5. cronジョブズの設定

「cron ジョブズの例」として、1 時間ごとに実行する方法が、以下のように書かれている。

○毎時0分に/virtual/ユーザ名/cron1.shを実行する
0 * * * * cron1.sh

上記の通り実行されるようにするには、`分’ フィールドに `0’ を入力、残りのフィールドには `*’ が入っているのを確認して保存。

081121-003

後は、cron が実行されるとメールが届くので、実行されたか確認する。

 

6. cron のテストについて

crontab – Wikipedia によると、

テストの際には、少なくとも2分以上先の時刻を実行時刻として指定する必要がある。これはcrontabファイルの再読み込みは、編集後の次の分時にのみ行われるためである。

2コメント:

匿名 さんのコメント...

はじめまして。

素人なのでわかりませんが、以下の記述は合っていますでしょうか?

「「※ 改行コードは必ず「LF」で指定して下さい。」とあるので、間違わないように保存。ファイル名は適当に cron1.php とした。」

の「cron1.php」は、「cron1.sh」ではないでしょうか?

間違っていたらごめんなさい。

宜しくお願い申し上げます。

jutememo さんのコメント...

ご指摘ありがとうございます。
修正しました。