foltiaをUbuntu12.04にインストールしようとやったのだが、
しょぼいカレンダーからデータを取って来てくれなかった。
どうもgetxml2db.plが正常に動いていないようだったので、
デバッグしてみると、以下の重複起動をチェックしていると思われるところで
なぜか1つしか起動していないのに重複起動していると判定して終了していた。
32 $processes = &processfind("getxml2db.pl");
33 if ($processes > 1 ){
34 #print "process found:$processes\n";
35 &writelog("getxml2db processes exist. exit:");
36 exit;
37 }else{
38 #print "process NOT found:$processes\n";
39 &writelog("getxml2db Normal launch.");
40 }
そこで、この重複起動チェックの部分をコメントアウトすると
すんなり、しょぼいカレンダーからデータを取得できた。
原因を探すために
32行目のfoltialib.plから呼び出す”processfind”という関数の中を見てみる。
210 sub processfind{
211 my $findprocess = $_[0];
212
213 my @processes ;
214 @processes = `ps ax | grep -i $findprocess `;
215 my $chkflag = 0;
216
217 foreach (@processes ){
218 if (/$findprocess/i){
219 unless (/grep/){
220 #print "process found:$_\n";
221 $chkflag++ ;
222 }else{
223 #print "process NOT found:$_\n";
224 }
225 }
226
227 }
228 return ($chkflag);
229 }#endsub
この関数を呼び出したgetxml2db.pl自身のプロセスと
"getxml2db.pl"を検索するgrepコマンドのプロセスの
2つをカウントして2を返していたよう。
このため、重複起動チェックでいつも終了して動いてなかった。
なので、とりあえずの対処法としてはgetxml2db.plの上であげた32行目から40行目をコメントアウトすればいい(と思う)。
ただし、重複起動チェックを切ることになるので他の部分で不具合が起きるかもしれない。