我有一个相当新鲜的安装Apache(2.2.3 / Centos)+ PHP(5.1.6)和以下问题:我需要监视一个进程的生命,为了做到这一点我运行:
$last_line = exec('ps -C snmpd');
并检查其输出。
不幸的是我总是一无所获。 我已经用其他进程名来检查它,它似乎只能看到Apache的进程。
任何想法如何解决这个问题?
更新:执行其他命令system('snmpget -v2c -c public localhost '.$oid, $retval); 伟大的工作,只有ps问题。 什么奇怪的(对我来说),当我login为apache用户,手动运行ps ,它工作正常(显示一切)。
您将只能看到运行Web服务器的用户进程,因为这是执行该命令的用户。
如果您需要以不同的用户身份运行命令,请查看suexec。 http://httpd.apache.org/docs/2.2/suexec.html
尝试运行一个更完整的ps电话,如:
ps aux | grep -i snmpd | grep -v grep
您也可以使用反引号操作符来实现相同的function。 我确认它的工作,而exec不行。
$ out =`ps -aux | grep pianobarfly | grep -v grep`;
可能是selinux。 SELinux限制了httpd运行的域名,所以只能查看自己的进程。
你可以: –
这应该做到这一点:
policy_module(myhttpd,1.0.0) gen_require(` type httpd_t; ') kernel_read_system_state(httpd_t);
从yum安装selinux-policy-devel。
然后运行命令“make -f / usr / share / selinux / devel / Makefile load”插入新的模块。
你应该看到一个直接的结果。