Zephyr Cradle Diary


2012.02.14 (Tue)

[雑記] Macのcronに敗退した

Macとかやっぱり嫌いだ! というのはまあサブ的な話で、そもそもの話はそこではなく。

先日うちの契約しているCoreserver(Zephyr Cradleのあるレンタルサーバー)で障害があって以来、そのサーバー上で動かしてたTwitterのbotが動作しなくなってました。cron(決まった時間に決まった処理をするプログラム)が死んでるんだろうと思ってサポートに連絡するも、対応には時間がかかりますとのことで、仕方ないので重い腰を上げて自分で対応してみることになったというのが発端。

といってもレンタル鯖上のcronがそもそも動いてないんじゃしょうがないので、代替案として我が家の家庭内データサーバーとして使っているMac miniでbot(php)+cronを動かそうというプランを打ち立てて、色々やってました。その経過をここにメモしておきます。サーバー詳しくないのでへっぽこで結局Macに負けたのですが。

■その1。我が家のMac mini(Mac OS X Lion)はどうやらデフォでcronは稼働しているとのことなので、crontabを使って色々設定しました。まず設定の書き方からして調べながらだったのですが、まあそこはさほど難しくなく、なんとなく書けました。

動作を確認するために「echo hoge」とか書いてログを見ようと思ったのですが、さてログはどこに置かれるのか。調べるとsendmailでメールを送るとのことだったので「MAILTO="メアド"」にしたものの、メールは来ず。sendmailの設定を一切やってないことに気付いたので、このあたりのページを見て設定しました。

が、動かず。というのもこの過程にあるpostmapコマンドがエラーを吐いてしまい、もうなんか2重3重に面倒くさいことになってなんだかログとかどうでもいいんだけど動作だけ確認したいのになあと思い始める。

■その2。そこでようやく、ログなんてリダイレクトで吐けばいいんじゃないかということに気づく。ということでcronのコマンドを「echo hoge > /cron.log」とかにしたら、あっさりログを確認。初めからこうしてれば良かったというのは後の祭りでした。ということでもりもりとphpを動かそうと試みる。

というここで、わざわざbotのphpまでローカル上に持ってくる必要はないんじゃないかということにも思い至る。うちのbotはEasyBotterのコードを使っていて、実際にTwitterへ投稿するのはマスターのbot.phpを叩けば良いだけ。これはわざわざphpコマンドじゃなくても、bot.phpをpublic_html配下に置いて、wgetでURLを直叩きすればいいんじゃないかってことになる。

試しにやってみようとMacでwgetコマンドを調べた(whichした)ら、ないらしい。マジかと思ってぐぐったら、curlコマンドとかいうのがあるらしいので、そっちを使うことに。まあわざわざウェブページをDLする必要もないので簡単に使えるコマンドならなんでもいいやってことで、curlを使ってZephyr Cradle上のbot.phpにURLからアクセス。できた!

■その3。これで無事解決ということで、もしもレンタルサーバー上のcronがちゃんと動きだしたときに困るので、サーバー上のシェルスクリプトをリネームしてfile not found状態におく……と思ってサーバー上のログを見てみると、あれ、cronのログがある……。どうやら見てみると、過去のレンタルサーバー障害以降、ちゃんとcronは動いていた模様。そう、これまでのログがすべて残っている。cronが動いていないからTwitterのbotが動いていないと思ってここまでやってきたのに一転、ちゃんと動いているらしい。

ログを見てみると、どうやらphpコマンドがエラーを吐いていた。

php: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

なんか共有ライブラリがないとか言われてんぞ。

こうなるともはやサーバー管理者に問い合わせないとどうしようもない。そして取り敢えずcronが動いてることは判ってしまったので、先ほどMac上で構築したcronの設定と、curlコマンドを使ったシェルスクリプトをそのままサーバーへアップロード。はい、ちゃんと動きました。めでたしめでたし。

念のためにcurlコマンドに再試行オプション「--retry 5 --retry-delay 5」とか入れて、概ね取りこぼしなく実行できるようになりましたとさ。

■おしまい。

長い戦いだった……。もうMacなんて面倒くさいものでああだこうだやるのはよそう、あれは完全にiTunes専用機と割り切ろう……。

[Game] ソウルキャリバーV(2)

延々とOffline BattleのQuick Battleをやってます。

240人いるCPUのうち150人は打破しました。あと90人。まだあと90人も居るのかって感じですな。ここまでずっと、検索対象を「未勝利の相手」に設定して「初級者」「中級者」の順で全部倒してきた感じなので、あとは上級者しか残ってないわけで。取り敢えず適当にぶったたいてるだけなのでこの先はサクサク進められる、という感じがしないのですよね。相手のランクがCまでならまだパーフェクト勝ちが50%くらいで取れる感じなのですが、この先はそもそも勝てるかどうか……。

現状はカスタムキャラ(ピュラスタイル)で延々とやってます。縦斬り、横斬りともに使いやすいので良い感じです。GEBでもそうでしたが、スピードあるキャラでざくざく斬っていくスタイルが好きです。大ぶりキャラはどうしても使い慣れない。いずれナイトメアとかも使えるようになりたいのですが。今はピュラの横斬りから入る上段→下段→上段コンボでほぼまかなってる感じです。そろそろ他のコンボも習得したいですなあ。