如果有任何进程运行指定的PHP脚本,我需要知道并终止。是否可以使用exec()和php脚本获取运行sample.php的进程列表。
答案 0 :(得分:16)
exec("ps auxwww|grep sample.php|grep -v grep", $output);
但是,如果PHP在CGI模式下运行,这只会起作用。如果它作为SAPI类型的东西运行,你将永远不会在进程列表中看到“sample.php”,只是'httpd'。
答案 1 :(得分:0)
没有。因为PHP是通过apache / nginx运行的。在命令行访问的情况下,proccess被命名为PHP,而不是脚本的实际名称。
答案 2 :(得分:0)
这取决于许多因素,包括操作系统,PHP版本等,但您可以尝试使用信号来获取脚本以提供其名称,然后在匹配时终止。或者,让脚本注册其pid,然后与正在运行的进程进行比较。
答案 3 :(得分:0)
这帮助我通过url参数杀死恶意进程。我想我会为讨论做出贡献,以防其他人仍在寻找答案。
加载yikes.php。识别进程id(它应该是你在数组的每个索引中得到的第一个整数)。将其复制并粘贴到网址中为?pid = XXXXX。它消失了。
//http://website.com/yikes.php?pid=668
$pid = $_GET['pid'];
exec("ps auxwww|grep name-of-file.php|grep -v grep", $output);
echo '<pre>';
print_r($output);
echo '</pre>';
//
exec("kill $pid");