_ うがー。またやってしまった。これまで何度も何度も同じ罠にひっかかってるのに、いつも後から気がついてやり直してる。ちっとは学習しろや。> 俺
_ apachectl restart は再起動ではない
_ SIGHUP を送るだけ。設定の読み直しとログの reopen。親プロセスは生き残る。確実にプロセスを起動しなおしたいなら、restart ではなく stop/start する必要がある。
_ apachectl ではなく、/etc/init.d/ やら /usr/local/etc/rc.d/ やらにあるスクリプトを使う場合も、
のようになっていれば restart でいいけど、case "$1" in ... restart) $0 stop $0 start ;;のようになっていた場合は stop/start しないといけない。apachectl はまさに後者。つーか、graceful があれば restart なんていらんだろ…。何に使うんだよ。case "$1" in start|stop|restart|graceful|...) $httpd -f $conf -k $1 ;;_ ついでにもうひとつ罠。apachectl restart (httpd -k restart) は、プロセスが存在してない場合には start する。これは graceful も同じ。httpd はインストールしてるけど意図して起動させないようにしてある、という場合であっても、cron でログローテートする処理が登録されていると、そのタイミングで勝手に起動してしまう。小さな親切大きなお世話。ログの reopen は httpd -k graceful (or restart) で書いた方がスマートに見えるけど、そうではなく、kill -USR1 (or -HUP) を使うように書くことでそのような事態は避けられる。