运行“sudo serivce httpd status”仅显示单个进程 ID。根进程。但是,如果我使用 top 或 ps,我可以看到有更多进程。Apache 处于预分叉模式。
有人曾经在 Apache2 中见过这种行为吗?
我想了解为什么状态命令找不到其他进程。
答案1
您在 qa 服务器中看到的其他进程是该命令的结果:
pidof httpd
如果您检查 /etc/init.d/functions 中状态函数的代码,您将看到这些结果是如何生成的,并测试为什么您只看到父 httpd 进程。
我认为 sudo 对 pidof 不起作用,请使用 root 用户再试一次。
答案2
这有关系吗?你问的是 apache 是否正在运行。命令告诉你它正在运行。如果你终止该进程,其他进程也会终止。
我怀疑命令可以找到其他人。但它就是懒得这么做。
答案3
Apache 有一个控制进程,负责启动子进程。您从“service httpd status”获取的进程 ID 是控制进程的 PID。
答案4
我得到了相同的结果:
root@serverX:~# sudo service apache2 status
* Apache is running (pid 2958).
正如其他人所说,这是主进程 ID;任何其他进程都是子进程。如果您需要有关这些信息,您应该安装mod_status它允许 ExtendedStatus 从 Apache 中提取各种简洁的信息。
The details given are:
- The number of worker serving requests
- The number of idle worker
- The status of each worker, the number of requests that worker has performed and the total number of bytes served by the worker (*)
- A total number of accesses and byte count served (*)
- The time the server was started/restarted and the time it has been running for
- Averages giving the number of requests per second, the number of bytes served per second and the average number of bytes per request (*)
- The current percentage CPU used by each worker and in total by Apache (*)
- The current hosts and requests being processed (*)
The lines marked "(*)" are only available if ExtendedStatus is On.