さくらのレンタルサーバー(スタンダード)でCRONを作動させたい場合、以下の様に記述する。
設定具体例
「実行コマンド」の欄に
cd /home/アカウント名/www/CGI置いたディレクトリ/ ; ./xxxx.cgi 1> /dev/null
1.cdコマンドでカレントディレクトリを指定。
2.;で挟んで
3.実行したいCGIのパスを指定。
PHPを作動させたい場合は、
cd /home/アカウント名/ ; /usr/local/bin/php hoge.php > /dev/null
とPHPのパスを指定しないと上手く作動しない。
実行日時は上記設定だと「2時間おきに、毎時0分に起動」となる。
ちなみに1>/dev/nullはメールを送らないようするもの。
さくらのスタンダードでは設定できるCRONは5つまでだが、実行ファイルを一つのディレクトリに入れてコンマ区切りにすると、1つの登録で複数のCGIを実行可能。
CRON実行はメールでお知らせされる
CRONが実行されると、さくらのメールサーバ内のpostmaster宛に、上記の様なお知らせメールが届く。簡単な実行ログとprintコマンドの内容が書かれたメールになるので、CGI内部にエラーや警告文を準備しておくと便利。
ちなみに現在3個のCRONを走らせているけれど、1個だけ/dev/nullが効かない。謎。
ようやく色々解るようになってきた
今まではどれだけ解説サイトを読んでもCRONを理解できなかったけど、さくらのVPSを借りてサーバーの何たるかをイチから勉強してたら、自然とCRONも理解できるようになった。
今となっては、なんでこんな事が理解できない&怖くて試せなかったんだろうと(^_^;
あと、2007~2008年頃に一生懸命読んでいた| さくらのレンタルサーバ非公式FAQの内容が、今読むと凄い。あの頃は書いてある内容の10%程度しか理解できなかったけど、今は60~70%理解できる。
参考にしたサイト
CentOSでのcronの使い方。 - 今日も元気にlinux - mylinuxグループ
上記はさくらのVPSでCRON実行する場合の設定方法として覚える。
とりあえずcrontabというコマンドで設定するって事だけは覚えておく。
CRONで行った事
とりあえず、今までさくらのスタンダード側に設置してて結構サーバー負荷の高かったsimaccessをVPS側に移動。
CRON&LWP::Simple::getでランキングファイルをVPSからスタンダード側に読み込んで、サイト内にはphpincludeで表示。これで今まで以上にサクサク表示(´∀`)ノ
そして今さらの様にMTの予約投稿が可能なように設定。
CRONとLWP:の組み合わせ面白い。ちょっとした思い付きで面白いページが作れそう(´∀`)
追記:/dev/nullしてもメールが送りつけられる件
メール内にある
「Wide character in print at ./hogehoge.cgi 」
てのは、「出力する文字列にUTF-8フラグがついています」っていう警告だった。
のか!全く気が付かなかった!
原因が解っただけでもほっとした。
その内直す。