plaggerからMixiのメールが来ない。
cronで1時間に一回実行しているのだけれど、プロセスががんがん溜まっている。
で、原因を調べてみたらBbsのところで無限ループしている。
とりあえず、Mixiのページを見ながら正規表現を見直し。本当は、Mixi側が変わった場合でも無限ループしないように直すべきなんだろうけど。
あと、本家(?)のWWW::Mixiは0.50-pre2とかまで上がっているらしく、そちらでも対策されているようだ。
私の手元にあるのは0.48と0.49で、そこだけでも結構差分があって面倒なので、今回も0.48からの差分。
時間を取って最新ベースにしたほうが良いんだろうけどな~。
と言うわけでパッチ
今回の件で、plaggerが無限ループしたりすると、cronから毎時起動されてどんどんプロセスが増えてしまうことがわかったので、対策を入れる。
FreeBSDには/usr/bin/lockf と言うコマンドがあり、これを使うとファイルのロックを獲得できたときだけコマンドを実行する、と言うことができるのでcronに仕込むことにした。
cronで1時間に一回実行しているのだけれど、プロセスががんがん溜まっている。
で、原因を調べてみたらBbsのところで無限ループしている。
とりあえず、Mixiのページを見ながら正規表現を見直し。本当は、Mixi側が変わった場合でも無限ループしないように直すべきなんだろうけど。
あと、本家(?)のWWW::Mixiは0.50-pre2とかまで上がっているらしく、そちらでも対策されているようだ。
私の手元にあるのは0.48と0.49で、そこだけでも結構差分があって面倒なので、今回も0.48からの差分。
時間を取って最新ベースにしたほうが良いんだろうけどな~。
と言うわけでパッチ
今回の件で、plaggerが無限ループしたりすると、cronから毎時起動されてどんどんプロセスが増えてしまうことがわかったので、対策を入れる。
FreeBSDには/usr/bin/lockf と言うコマンドがあり、これを使うとファイルのロックを獲得できたときだけコマンドを実行する、と言うことができるのでcronに仕込むことにした。
55 * * * * /usr/bin/lockf -t 0 -s /tmp/plagger.$USER /usr/local/bin/plagger -c $HOME/plagger/config.yaml > /dev/null 2>&1みたいな感じ。最初、-tオプション(ロックのタイムアウト)を付け忘れてしまい、plaggerは一つしか起動しなかったものの、lockfがたくさん起動してしまった。-t 0をつけることで、ロックを獲得できなければその場で諦めてくれる。
WWW::Mixiの更新(その2)の続きを読む