当我从Linux命令行运行ps -ef
时,我看不到Apache网站用户当前正在运行的php脚本,我只看到该过程为:
/usr/bin/php5-cgi -q -b 127.0.0.1:9000 -c /etc/php5/cgi/php.ini
是否有一个命令行可以显示正在运行的脚本,而不仅仅是Apache用户使用php的事实?
答案 0 :(得分:8)
您可以使用lsof获取当前工作目录和打开的文件。 遗憾的是,这不包括正在运行的脚本,但如果脚本在 不同的目录,或打开不同的文件,你可以区分 他们。例如,以下显示/ var / www / stuff / php中的脚本正在运行:
sudo lsof -c http | grep cwd
httpd 24475 id cwd DIR 8,3 4096 1123403 /var/www/stuff/php
您可以配置apache以获取信息。添加类似
的条目<Location /server-status>
SetHandler server-status
...
</Location>
在您的conf中确保它仅适用于受限制的遥控器。
然后浏览到http://localhost/server-status
,你就会得到一个&#34; ps&#34;的
跑步工作。例如,此输出显示gg.php正在运行(I&#39; ve
删除了一些列):
Srv PID Acc M CPU SS Slot Client VHost Request
0-0 23688 0/0/262 W 0.50 2 4.48 ::1 xxx:80 GET /php/gg.php HTTP/1.1
1-0 23743 0/0/187 W 0.00 0 3.30 ::1 xxx:80 GET /server-status HTTP/1.1