しらいです。 In Message-Id <20010601.174301.50044087.tshiozak _at_ astec.co.jp> "T.SHIOZAKI" <tshiozak _at_ astec.co.jp>さんwrites: > 塩崎です。 > > このあたりはケースバイケースですが、 > > - kill -HUP がきかないこともある > > - init.d スクリプトが独自に pid lock 管理してることもある signal(7) に SIGHUP の説明が出ていて、このような SIGHUP の 用法は本来の用法ではないことが判りますね。 例えば、kterm とか Tera Term とかの端末 emulator で login していて、logoff 処理をしないままいきなり端末 window を閉じ たような場合、SIGHUP という signal が各 process に送られます。 つまり、その process を制御している端末が無くなってしまっ たのでそれなりの処置をしてねという signal ですね。process 側 でどう扱うかはまちまちですが大概は終了させます。 どうして daemon の場合は SIGHUP で restart なのかというと、 daemon はこのような制御端末を持たない、と言うか Ctrl+C なん かで勝手に終わらせられないようにわざわざ端末を切り離している ために、本来の用途で SIGHUP が送られることがあり得ないからで す。 但し、このような動作は慣例的にそうなっているというだけで、 POSIX で規定されている訳でもどこかで保証されている訳でもあり ません。 という訳で、規定上は SIGHUP の役割は「制御端末を失った」と いう告知以外の何ものでもありません。 > もうちょい補足すると、 > - apache の場合は、たまたま kill -HUP を受け取ると再起動するように > 作られてるけど、すべてのデーモンが「kill -HUP で再起動」を > サポートしてるとは限らないから、init.d スクリプトが独自の方法で > restart を実装してることもある。 > ので、方法論的一般論として 因みに「再起動」ではなくて、大概は自分自身で初期化なり設定 ファイルの再読込みなりしているだけですね。同一 process のま ま動作を続行させます。 init.d script で restart をかけた時、どのような処理をさせ るかはその script 次第ですが、大概は既存 daemon を殺して新た に別 process として起動させているようです。 ですから、例えば netatalk のように起動に時間のかかるような daemon では、restart よりも SIGHUP の方が処理が速いこともあ ります。 > > ので、rc.d から起動したサービスは基本的に init.d スクリプトで > > stop したり restart したりしたほうが矛盾が発生する危険が少なくて無難です。 > > が成り立つ、ですね。 そんなややこしいこと考えなくても、daemon は init.d script のことなんか知らないけど init.d script の方は deamon のこと を知っているからより無難ってことで良いのでは? 仮にその daemon にとって SIGHUP が最適な restart 法であっ たとするなら、その init.d script では SIGHUP させるように作 られている筈です。と言うかそうすべき。 単純に agent の layer が違うとだけ考えればいいんじゃないで しょうか? 個々にメーカに問い合わせる場合はサポート窓口も問い合わせ手 順もまちまちなので、それぞれのケースに適した方法を知っておく 必要があるけど、代理店経由で問い合わせればそういう差異は代理 店側で吸収してくれるので悩まなくても済むという状況に似てます ね。 しらい たかし
References:
- Prev by Subject: [linux-users:84106] sendmailのmailqについて
- Next by Subject: [linux-users:84108] Re: dhcpd.leasesのabandoned
- Previous by thread: [linux-users:84026] Re: 「killall -HUPhttpd」と「/etc/rc.d/init.d/httpd restart」の違い
- Next by thread: [linux-users:84036] snmptrapd.confの設定方法が載っているマニュアルを探しています
- Indexes:[Main][Thread]