(無償) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

投げ銭

★投げ銭をしてくださるなら、下記のPayPal専用リンクからできます。m(_ _)m ★

2017年6月26日月曜日

【Linux CentOS6.9 64bit】HylafaxとIAXmodemを再起動する順序について【IAXmodem 1.2.0】【Hylafax+ 5.5.9】

Asterisk + IAXmodem + hylafax+ で、ファックスサーバを構築し動作させていたところ、
2ヶ月ほど連続稼動させたところで、急にファックスが受信できなくなってしまった。

とりあえず、IAXmodemと、hylafax+と、Asterisk の再起動を行った。

ところで、IAXmodemと、hylafax+の再起動において、その順序に注意が必要だったのでメモを残しておく。


<使用したバージョンについて>
hylafax+(5.5.9) は、CentOSにおいてyum(epelリポジトリ利用)で導入したものである。
IAXmodem(1.2.0)は、ソースから導入した。



■まず、Hylafax IAXmodemの関係について、faxgettyというプログラムと共に整理した。

IAXmodemは、動作中、/dev/IAXmodem のように、設定に応じたデバイスファイルを存在させる。
hylafaxは、faxgettyというプログラムでそれらのデバイスファイルとの関係を得る。

(例)
# /usr/sbin/faxgetty /dev/IAXmodem &

だから、IAXmodemを起動して、その後、hylafax+を起動し、そしてfaxgettyを実行する必要がある



■以下では、Hylafax+と、IAXmodemの再起動時の挙動を調べた。

○IAXmodemを再起動する場合 (Hylafaxは起動したままである。)

最初の状態である。faxgettyが動作している。
#  ps -aef | grep faxgetty
uucp     18305     1  0 04:15 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem

サービスを停止する。
# service iaxmodem stop

すでに実行中のfaxgettyは動作したままになってしまった。
#  ps -aef | grep faxgetty
uucp     18305     1  0 04:15 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem

しかし、2分ほど待ってから、調べてみると、動作していたfaxgettyのプロセスは消滅した。
#  ps -aef | grep faxgetty
root     18844  9964  0 04:17 pts/21   00:00:00 grep faxgetty

このとき、Hylafaxから以下のメールを受け取った。
Hylafaxが、faxgettyの引数に渡していたIAXmodemデバイスが利用できないことを検知したようである。
そのために、対応のfaxgettyプロセスはHylafaxによって消滅させられたのだと思う。

# tail /var/spool/mail/root
The HylaFAX software thinks that there is a problem with the modem
on device /dev/IAXmodem that needs attention; repeated attempts to
initialize the modem have failed.

Consult the server trace logs for more information on what is happening.

You will be notified again after 5 minutes if the problem persists.

サービスを再び起動した。
# service iaxmodem start



○Hylafax+を再起動する場合 (IAXmodemは起動したままである。)

#  ps -aef | grep faxgetty
uucp     18094     1  0 04:00 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem

サービスを停止する。
# service hylafax+ stop

しかし、これだけでは、すでに実行中のfaxgettyは動作したままになってしまった。
5分ほど放置してみたが、状況には変化がなかった。
faxgettyを監督しているHylafax本体が起動していないため、faxgettyは終了しないのだろうと思う。
#  ps -aef | grep faxgetty
uucp     18094     1  0 04:08 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem
そして、サービスを再び起動した。
# service hylafax+ start

サービスを再び起動した時に、動作していたfaxgettyのプロセスはただちに消滅した。
hylafaxは起動時には、動作しているfaxgettyプロセスを一掃するのではないかと思う。



■Hylafaxと、IAXmodemを再起動するためのスクリプトを作成した。

Hylafaxと、IAXmodemの再起動には、上記の性質を考慮して行う必要がある。
以下の手順で、Hylafaxと、IAXmodemを再起動すると良いだろう。

(1)Hylafaxの再起動(これによって、古いfaxgettyプロセスが消滅する。)
# service hylafax+ restart

古いfaxgettyプロセスはただちに一掃された。
#  ps -aef | grep faxgetty
root     20339  9964  0 04:34 pts/21   00:00:00 grep faxgetty

(2)IAXmodemの再起動
# service iaxmodem restart

(3)faxgettyをIAXmodemを引数につけて実行する。
# /usr/sbin/faxgetty /dev/IAXmodem &

#  ps -aef | grep faxgetty
uucp     20417     1  0 04:37 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem



(スクリプトにまとめた)

次のような再起動用スクリプトを作成したところ、うまく動作した。
念のため、待機時間を5秒挿入している。
例ではモデム数は一個だけだが、テスト環境においては20個程度存在していた。

(Asteriskは再起動に時間を要する場合があるので、一番最後が良いかもしれない。あるいは充分なウェイトを置いて最初に行う。)
/sbin/service hylafax+ restart
/bin/sleep 5s
/sbin/service iaxmodem restart
/bin/sleep 5s
/usr/sbin/faxgetty /dev/IAXmodem &

(注意)
逆の手順でIAXmodemから先に再起動させた場合、正しく動作しなかった
モデムが全て、waiting 状態のままになってしまった。



■ところで、defunctってなんだろうか。

uucp     20419     1  0 04:37 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem1
uucp     20420     1  0 04:37 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem2
uucp     20421     1  0 04:37 pts/21   00:00:00 /usr/sbin/faxgetty /dev/IAXmodem3
uucp     20446 20419  0 04:37 ?        00:00:00 [faxgetty] <defunct>
uucp     20447 20420  0 04:37 ?        00:00:00 [faxgetty] <defunct>
uucp     20484 20420  0 04:49 ?        00:00:00 [faxgetty] <defunct>
uucp     20485 20419  0 04:49 ?        00:00:00 [faxgetty] <defunct>
root     20528  9964  0 04:58 pts/21   00:00:00 grep faxgetty

着信を受けたIAXmodemに対応するfaxgettyプロセスについて、defunctとなった。
無害のようである。参考になるページを見つけた。



<参考>
・RE: [hylafax-users] "Waiting for modem to come ready" another
< http://www.hylafax.org/archive/2010-11/msg00128.php > 2017年6月24日

・Re: [hylafax-users] faxgetty <defunct> - 'Extra' FaxGetty
< http://www.hylafax.org/archive/2006-01/msg00322.php > 2017年6月24日

投げ銭

★投げ銭をしてくださるなら、下記のPayPal専用リンクからできます。m(_ _)m ★