[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:84107] Re: 「killall -HUP httpd」と「/etc/rc.d/init.d/httpd restart 」の違い


 しらいです。

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 が違うとだけ考えればいいんじゃないで
しょうか?
 個々にメーカに問い合わせる場合はサポート窓口も問い合わせ手
順もまちまちなので、それぞれのケースに適した方法を知っておく
必要があるけど、代理店経由で問い合わせればそういう差異は代理
店側で吸収してくれるので悩まなくても済むという状況に似てます
ね。

                                               しらい たかし


この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: