バリューサーバーのcronでMovabletypeの再構築を自動化できない
昨日はバリューサーバーでMovabletypeの再構築を行うスクリプトの動作を確認できたので、)あとはcronにそのスクリプトを登録し、毎日自動的に再構築をしようとコントロールパネルの「CRONジョブの設定・編集」に登録しました。
ところが実行されていない!?あれ??なんで??
ヘテムルの時は実行が成功したのか、エラーが出ているのかメールが届いていたのですが、メールも届かず、cronが動いているのかどうなのか、さっぱりわかりません。サポートも期待できないので、自己解決するためにいろいろ調べました。
crondの動作状況を調べる
cronを使用するためにcrondというやつが動いていないといけないみたいで、Tera Termを使ってレンタルサーバーにSSHで接続し、以下のコマンドで調べます。(SSHはTeraTermなどのSSHクライアントでバリューサーバーの場合、ホスト名:**.valueserver.jp、ユーザーID、FTPパスワードで接続します。)
# /etc/rc.d/init.d/crond status
すると、
crond (pid *****) is running...
と返ってきたので、どうやらcronは動いているみたいです。
もし、cronが動いていなかったら
/etc/rc.d/init.d/crond start再起動の場合は
/etc/rc.d/init.d/crond restart
crontab -lでcronジョブの登録状況を調べる
SSHで以下のコマンドを打つ
crontab -l
すると「CRONジョブの設定・編集」に登録した内容が表示されました。
ちゃんと登録されているみたいです。
じゃあなんで動かない!?
昨日はSSHからcronで登録したファイルでちゃんとrebuild-pagesを実行することができたのになんで?まだ何かエラーがあるの?
とういうことで、cronで登録のファイルが実行されたときにどうなっているのかを知るために、今度はエラーメールが届くような方法がないか探したところcrontab -eでcrontab -lで表示されたリストにMAILTO="user@example.com"と宛先を入れればいいようです。(※contab -rと打つとジョブが削除されますので隣同志のeとrを打ち間違えないように注意)
crontab -eでMAILTOを追加する
crontab -e
と打つとviエディタが起動し、crontab -lで表示された内容が出てくるので、一番上の行にメールの宛先を入力します。
ただし、Linuxに慣れている方はご存知だとおもいますが、viエディタの操作は普通に文字を入力するようにできませんので注意。
ちなみにTera Termでは以下できました。
- iを押し入力モードにする
- カーソルで移動して最初の行を改行し、そこにMAILTO="user@example.com"と入力
- ESCを押して入力モードから出る
- :wq と打つと保存して終了
そして、ちゃんと保存できているかはcrontab -lで確認できます。
cronを実行してみる
バリューサーバーのコントロールパネルの「CRONジョブの設定・編集」に2分後の時刻を設定してみましたが、設定の反映に1時間程度かかるようで、待っていられないので、SSHからcrontab -eで2~3分後の時間を設定してみました。
すると、メールキター!!でもエラー!!
BEGIN failed--compilation aborted at /virtual/user-dir/bin/lib/perl5/Web/Scraper.pm line 10.
Compilation failed in require at ./tools/rebuild-pages line 14.
BEGIN failed--compilation aborted at ./tools/rebuild-pages line 14.
/Web/Scraperの10行目を見る
use HTML::TreeBuilder::XPath;とある。ですが、HTML::TreeBuilder::XPathはインストールしてやったはず...。もしかして、HTML::TreeBuilder::XPathがどこにあるかわからないよいう意味でパスを入れてやればいいのかな?ということで、パスを挿入。
use lib ("/virtual/user-dir/perl5/lib/perl5"); use HTML::TreeBuilder::XPath;
rebuild-pagesの14行目を見る
/mt/tools/の中にあるrebuild-pagesを開くと
use Web::Scraper;
とある。前回、これもパスを追加して対策したはず...。Web::ScraperはHTML::TreeBuilder::XPathがないと動かない。ここにもHTML::TreeBuilder::XPathのパスがいるのかな?何故かWeb::ScraperとHTML::TreeBuilder::XPathの保存されている場所がそれぞれ違う(多分インストールをミスった)。
ということで、rebuild-pagesにHTML::TreeBuilder::XPathのパスを追加。
#追加前 use lib ("$FindBin::Bin/../lib", "$FindBin::Bin/../extlib", "/virtual/user-dir/bin/lib/perl5"); #追加後 use lib ("$FindBin::Bin/../lib", "$FindBin::Bin/../extlib", "/virtual/user-dir/bin/lib/perl5", "/virtual/user-dir/perl5/lib/perl5");
そしてもう一度cron実行
キター!!メールにsuccessの文字
rebuilding (QWERTY.WORKブログ ...
Individual built success.
無事、毎日cronでMovabletypeの再構築が自動化されました。
ただ、バリューサーバー