シグナル処理の有効性

[上に] [前に] [次に]
B-Cus 1998/12/15(火) 23:51:01
とほほさんのwwwboardは、
 sub sigexit { rmdir("lock/wwwboard.loc"); exit(0); }
 $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "sigexit";
と、シグナルをトラップしてますけど、ふつーに
wwwboardを運用していた場合、WWWサーバがシグナルを
送ってプロセスを止めにくることってあるのでしょうか。

というのも、先程うちに設置したwwwboardでlock/wwwboard.locが
消されず残ったままになっていたので、これの有効性はどれくらい
あるのかな、と思いまして。

長時間プロセスが終了しなかったらシグナル送ってくることも
あるかも、とは思うのですが、wwwboard自体それほど処理時間が
かかるわけではないと思うので、どうしてlockかかっちゃったまま
になったのか興味があります。

ちなみにサーバはapache1.2.6です。

mo [E-Mail] 1998/12/16(水) 13:57:15
WWW サーバが停止、あるいは再スタートするときに、
SIGINT か SIGHUP が送られてきたと思います。ただし、
サーバがいきなり落っこちたらシグナルは送られてこないです。
あと、SIGTERM は OS が shutdown するときに送られてきます。

B-Cus 1998/12/16(水) 16:12:21
[[解決]]
なるほど。しかし
 % ps -ef|grep httpd
 root 436 1 0 Aug 28 ? 0:22 /opt/www/apache/bin/httpd -f /opt/www/apache/conf/httpd.conf
httpdは8月から動きっぱなしみたいです。

たまに自作のカウンタなどもロックかかったままになったりするんで
(そのときもサーバのリスタートなどは無かったはず)、シグナルブロック
しとけばいいのかな〜と思ってたんです。

しかしシグナルをブロックしているwwwboardも結局ロックしたままに
なってしまったわけですから、
 sub sigexit { rmdir("lock/wwwboard.loc"); exit(0); }
 $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "sigexit";
こういう処理をしても効果はないのかなぁ…。

一応、解決マークを付けておきます。

匿名希望 1998/12/20(日) 21:24:51
誰かにkillされたとか? $SIG{'KILL'}で対抗。


>なるほど。しかし

司法試験を受けていらっしゃるのですか???

B-Cus 1998/12/20(日) 22:25:32
> $SIG{'KILL'}で対抗。

SIGKILLはトラップできないと思いますが。

PTAN [E-Mail] [HomePage] 1998/12/21(月) 18:33:19
関係ないかもしれませぬが...
Apache 1.3.3にて...
・タイムアウト時、SIGTERMが来る
・ブラウザとの接続が切れている([読込中止]を押された等)のに、
 出力するとSIGPIPEが来る
ことが確認できてます。

B-Cus 1998/12/21(月) 19:04:03
なるほど。やはり通常の運用時でもシグナル投げられるんですね。
シグナル全部ブロックして、いつどこで何が投げられたのか
ログ取ってみることにします。
# 書き忘れてましたが、ロックが残るのはSSIです。


あと、上の答え方ではあれかと思うので補足しておきますが、

> 司法試験を受けていらっしゃるのですか???

などと意味のわからないことを書かれると、こちらとしても
どう対応してよいかわかりませんので困ってしまいます。

[上に] [前に] [次に]