- - PR -
ログローテイトはするが、ファイルにログを吐き出さない(FreeBSD:newsyslog.conf)
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-11-06 23:44
newsyslog.confにより、バーチャルホストのアクセスログをローテイトさせています。
ログファイルは、ちゃんと設定した周期でつくられるのですが、作成されてもログを書き出してくれません。 いろいろな情報を調べ検証しましたが、上手くいきません。 usr/local/apache/logs/error_log 644 4 * 24 Z /var/run/httpd.pid 上のように、/var/run/httpd.pidを書くと、ログを吐き出してくれるとありますが これもうまくいきません。 別件で、httpd.confの設定変更を行い、restartすると、ログが吐き出し始めるとう現象だけわかってきました。 newsyslog.confで、restart状態にするにはどうしたらよいでしょうか? |
|
投稿日時: 2003-11-09 00:14
newsyslog.confの第9フィールドにシグナルを
指定してみてはいかがでしょうか? Apacheにログファイルが変更されたことを伝えるのに 「SIGUSR1」というシグナルを送る必要があります。 UNIX(POSIX) の SIGUSR1 の値が 30 番なのでその値を 書いてみてください。 |
|
投稿日時: 2003-11-09 11:05
自分では使っていませんが...
> newsyslog.confの第9フィールドにシグナルを > 指定してみてはいかがでしょうか? man してみると、デフォルトでは SIGHUP を送る、とあります。 apache は(ほとんどの daemon がそうであるのと同じく) SIGHUPを受け取ると再起動しますので、本来ならデフォルトのままで 期待の動作をするはずです。 してみると、pid が正しく取得できていないのではないかと 思うのですが... /var/run/httpd.pid というファイルは実際に存在していますか? 存在していた場合、「ファイルの中身」と「psコマンドで表示される apacheの親プロセスのID」は一致していますか? おそらく、違うのではないかと。 その場合、httpd.conf をみて PidFile の設定がどうなっているか 確認してみて下さい。 |
|
投稿日時: 2003-11-09 11:30
>apache は(ほとんどの daemon がそうであるのと同じく)
>SIGHUPを受け取ると再起動しますので、本来ならデフォルトのままで >期待の動作をするはずです。 変更した設定を反映させるためなら、SIGHUPを送ってApacheを強制的に 再起動させますが、 ログローテートの反映が目的なら、SIGUSR1を送って、やさしく再起動 する方が安全です。 SIGUSR1を送るという事は「apachectl graceful」でapacheを再起動 することになります。 以下、Apacheのマニュアルより。 graceful Apache デーモンに SIGUSR1 を送ること により段階的に再起動します。 デーモンが実行されていない場合は起動します。 現在利用中の接続は中断されないという点で通常の 再起動とは異なります。 副作用は、すぐには古いログファイルを閉じることができないことです。 これはログの交換スクリプトを使用する場合、実際の遅延が、 ログファイルを処理する前に閉じられることを保証するのに 必要かもしれないことを意味します。 このコマンドは Apache が停止しないことを確認するため 再起動を開始する前に configtest によりファイルを自動的にチェックします。 |
|
投稿日時: 2003-11-09 12:19
> ログローテートの反映が目的なら、SIGUSR1を送って、やさしく再起動
> する方が安全です。 SIGHUP と SIGUSR1 とでの、それぞれの apache の動作は存じております。 「安全」をどう解するか次第ですが、「未明等であろうと、一瞬たりとも 接続を切断するわけにはいかない」というような事情があるならば SIGUSR1 を送るべきですが、ほとんどの人には必要ないものと思います。 現に、SIGHUP を送ろうとしてもそれが反映されていない以上、 問題点は「送るべきシグナルの種類」とは別のところにあると 解すべきでは? [ メッセージ編集済み 編集者: ぽんす 編集日時 2003-11-09 12:19 ] |
|
投稿日時: 2003-11-09 14:36
>SIGHUP と SIGUSR1 とでの、それぞれの apache の動作は存じております。
わたしはぽんすさんに指摘したつもりはなかったのですが、 ぽんすさんの発言を引用したのはまずかったですね。 >ほとんどの人には必要ないものと思います。 必要か不要か判断するのは、投稿者RUNNER_haruさんですね。 >現に、SIGHUP を送ろうとしてもそれが反映されていない以上、 >問題点は「送るべきシグナルの種類」とは別のところにあると >解すべきでは? 最終的には、投稿者RUNNER_haruさんがトラブルを解決されるのが 目的なので、多くの情報・アドバイスを提供するのは 当然のことです。 |
|
投稿日時: 2003-11-09 16:37
> 最終的には、投稿者RUNNER_haruさんがトラブルを解決されるのが
> 目的なので、多くの情報・アドバイスを提供するのは > 当然のことです。 なるほど。私は「多すぎる情報は、本当に必要なことを見失わせる」 という考えに立つ者ですのでその意見には賛同しませんが、 いまそれについては争いません。 というわけで私からの情報を。 apache にある程度以上興味のある人ならばみな SIGUSR1 を捕捉した 際の動作のことを知っています。にもかかわらず、そういった人々の 多くがログを変える際に送っているのは SIGHUP です。すなわち、 多くの人が「ときどきは SIGHUP を送っておいたほうがいいんじゃ ないかな」と考えていることを示しています。 自分がそれほど詳しくないのであれば、詳しい人がやっている方法に 従うのは悪い考えではないでしょう。 逆に、自分が使用しているオペレーティング環境について熟知しており、 「カーネル/ライブラリのどこにどんなバグが隠れているかすべて 押さえている」というくらいであれば、もちろん他人のやり方を参考に する必要などありません。 |
|
投稿日時: 2003-11-11 13:28
ぽんすさん、technocoreさん、いろいろ教えていただいて本当にありがとうございます。
連絡が遅れて申し訳ありません。言い訳になってしまうのですが、ここ数日、抱えていた仕事が かなり切羽詰った状態だったので、本当に失礼しました。 とりあえず、SIGUSR1の方でテストしてみます。 バーチャルサーバーを20件(かなりのアクセス数があるものも抱えています)ほど 管理しているので、テストするにも慎重になってしまいます。 また、結果をお知らせします。とりあえずは、お礼とお詫びまで。 |