ビジネス羅針盤 ステップメール

メールセミナー(ステップメール)をcronで自動実行

2007年07月13日
UNIXにはcronというサービスがあり、指定したプログラムを指定した日時に自動実行してくれるようです。

ネットでcronをいろいろ調べてみました。どうやら、crontabというファイルにスケジュールを登録しておけばいいようです。でも、登録の仕方も、どこにそのファイルを置けばいいのかもさっぱりわかりません。

契約しているサーバーのヘルプを調べたのですが、何も載っていません。

更に色々調べました。どうやら、telnetでログイン後、crontab -e でエディタが立ち上がり、そこへスケジュールを書き込めばいいらしいのです。UNIXということは、おそらく立ち上がるエディタはviエディタ・・・(このエディタはすこぶる使いにくい)。viエディタの使い方も調べておきます。

共有サーバーを契約しているので、cron本体に関する設定は要らないと予想できます。逆に全体の設定は変更できると困るので、そこはブロックしてないとおかしいですよね。

おそらく、crontab -e で自分のスケジュールが編集できるようになっているはずです。


telnetでログインします。
crontab -e でエンター。
なにやらエディタが立ち上がった模様。
viエディタと見て、編集モードに移る【i】を入力。
スケジュールを書き込みます。
書き込んで終了は【:wq】。
きちんと書き込まれたか調べるには
crontab -l
です。

書き込めてます。

テストなので、5分おきに実行されるようにスケジュールを設定。メールセミナーが配信されるかどうかドキドキしながら待っていましたが、結局配信されません。

さらにネットでスケジュールの書き方を調べると、
MAILTO=結果配信先アドレス
スケジュール プログラムのパス



MAILTO=結果配信先アドレス
スケジュール phpのパス プログラムのパス

MAILTO=結果配信先アドレス
スケジュール ユーザー名 プログラムのパス

の3つがあるようなのです。で、3つとも設定してみました。

でも動きません。もしかして、phpをCGIとして動かす設定が必要かと思いつき、契約サーバーのヘルプの通りに設定します。

今度は動きました。やれやれです。

結局私が契約しているサーバーでは、crontabは

MAILTO=結果配信先アドレス
スケジュール ユーザー名 プログラムのパス

と設定するようです。

スケジュールの部分は、
分(0-59)
時(1-24)
日(1-31)
月(1-12)
曜日(0-7,0=7=日曜日)
の順にスペースで区切って記述します。

例えば、
0 5 * * *
とすると、毎日5時に自動実行されます。

5分おきに実行の場合、
0,5,10,15,20,25,30,35,40,45,50,55 * * * *

毎週月曜12時に実行の場合、
0 12 1 * *

などです。phpのパスはもちろんサーバーによって違いますが、
/usr/local/bin/php
が一般的なようです。

MAILTOはしていしなければ、crontabの所有者にメールを送信、空文字を設置すると送信しないそうです。
今回は独自にログをメールするので、送信はなくてもかまいません。なので、
MAILTO=""

まとめると、crontabは
MAILTO=""
0 5 * * * /usr/local/bin/php プログラムのパス