我想在一个 CentOS 机器上运行多个 httpd 服务,这样如果我正在开发一个 mod_perl 脚本并且需要重新启动其中一个,其他的就可以独立运行。我在 Windows 上进行了此设置并正在迁移。
当然,这意味着单独的 PID 文件。我使用 httpd.conf 中的 PidFile 指令配置我的,并将 init.d 脚本指向同一个地方。它可以创建文件,但不会使用所有 PID 填充它:
$ sudo killall httpd ; sudo service httpd-dev restart
Stopping httpd: cat: /var/run/httpd/httpd-dev.pid: No such file or directory
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Starting httpd: [ OK ]
$ sudo cat /var/run/httpd/httpd-dev.pid
18279
$ ps -A | grep httpd
18279 ? 00:00:00 httpd
18282 ? 00:00:00 httpd
18283 ? 00:00:00 httpd
18284 ? 00:00:00 httpd
18285 ? 00:00:00 httpd
18286 ? 00:00:00 httpd
18287 ? 00:00:00 httpd
18288 ? 00:00:00 httpd
18289 ? 00:00:00 httpd
……为什么会这样?当以后有其他 httpds 时,很难杀死我的 dev httpd procs。不能永远使用'killall'......
$ httpd -v
Server version: Apache/2.2.24 (Unix)
我应该注意到没有killproc
安装 CentOS 6.4 minimum,所以我将我的 init.d 更改为使用
kill -9 `cat ${pidfile}`
反而。我猜 killproc 会搜索出子 PID 吗?所以我必须安装python来安装killproc只是为了使用httpd的init脚本?