apacheログのlogrotateについて
解決したいこと
RHEL6.7です
kill -HUP 'cat /var/run/httpd 2>(省略)
というスクリプトでhttpdのサービスは一時的にでも止まりますか?
それともこれは、catで出力しているプロセスが止まるのでしょうか?
logrotate.d/httpd 内にあるスクリプトです
0
RHEL6.7です
kill -HUP 'cat /var/run/httpd 2>(省略)
というスクリプトでhttpdのサービスは一時的にでも止まりますか?
それともこれは、catで出力しているプロセスが止まるのでしょうか?
logrotate.d/httpd 内にあるスクリプトです
・連絡は 2回に分けますね.
・当方は Ubuntu ですので、httpd ではなく apache2 ですが、読み替えてください
/var/run/httpd の中に記述されている数値のプロセスは「親プロセス」のようです.
で、「kill -HUP cat /var/run/httpd/ 2> 省略
」によって、(親に付随している) 子プロセスのみを再起動するようです.
具体例を含めて、次の方法で動作が確認できるかと思います.
$ sudo cat /var/run/httpd
3008
$ watch pstree -a -p 3008
apache2,3008 -k start
├─apache2,7672 -k start
├─apache2,7673 -k start
├─apache2,7674 -k start
├─apache2,7675 -k start
└─apache2,7676 -k start
$ sudo kill -HUP 3008
上記 3 では 7672〜7676 だった PID が、本項では 16871〜16875 へと変化している.
ただし、親プロセスである 3008 はそのまま存在している.
apache2,3008 -k start
├─apache2,16871 -k start
├─apache2,16872 -k start
├─apache2,16873 -k start
├─apache2,16874 -k start
└─apache2,16875 -k start
kill -HUP で「子プロセスのみ」が再起動するのは、apache の仕様のようです.
HUPを受けたときの挙動は、プログラムによって異なるはずです。(実装依存)。
急な再起動
シグナル: HUP
apachectl -k restart
HUP あるいは restart シグナルを親プロセスに送ると、 TERM と同様に 子プロセスを kill しますが、 親プロセスは終了しません。 設定ファイルを再読込して、ログファイル全てを開き直します。 その後、新しい子プロセスを起動して応答を続けます。