Sirius -旧ブログ、更新されません-

2011年1月3日(月) 10:35

BonCasServer の自動起動

玄箱が起動した後でカードリーダを刺すと自動で動きますが、刺した状態で玄箱を起動すると BonCasServer が動きませんでした。どうやら起動順序が udev -> pcscd の順のようで、動かないようです。

そこで BonCasServer の起動を遅らせてみました。

udev のルールで直接起動するのではなく、起動用のシェルスクリプトを作成しました。udev のルールではこのシェルスクリプトを呼び出します。

bcs-start.sh

---------------------ここから---------------------

#!/bin/sh

PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin

N=`ps ax|grep bcs-perl|grep \.pl`

pid=`expr "$N" : '\\([0-9]*\\)'`

if [ "$pid"x != x ]; then

    kill -KILL $pid

fi



 /usr/local/bin/bcs-start2.sh &

---------------------ここまで---------------------

一応、bcs-perl.pl のプロセスが残っていたら強制終了させます。(udev の remove で終了させようとしたのですがうまくいきませんでした。)

また、udev のルールで実行するコマンドはできるだけ短い時間で終了させる必要があるので、実際に bcs-perl.pl を起動するシェルスクリプトをバックグラウンドで呼び出します。



bcs-start2.sh

---------------------ここから---------------------

#!/bin/sh

PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin

sleep 60

perl /usr/local/bin/bcs-perl.pl > /dev/null 2>&1 &

---------------------ここまで---------------------

待ち時間がどのくらい必要かわからなかったので 60 秒 sleep させました。

これで玄箱起動時にカードリーダが刺さっていても BoCasServer が動くようになりました。

written by sirius [玄箱] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨