我正在编写一个用于远程控制某些连接到linux pc的进程和设备的php代码。代码是用python编写的。我可以使用exec()
或system()
这样的php函数来运行脚本和程序,但我不能杀死我的进程。
我想杀死python:
<?php
$PID = exec("pidof python");
echo $PID;
$kill = "kill " . $PID;
exec($kill);
?>
它返回正确的PID编号,但不会终止进程。
我也试过了exec("kill #PIDnum");
,但它不起作用。
有什么建议吗?
提前致谢
答案 0 :(得分:2)
您只能从系统上运行Web服务器的用户标识所拥有的PHP中删除进程,该用户标识通常设置为低权限帐户,如“nobody”,“www”,“web”等。
如果python是从PHP脚本启动的话,它可以工作。但除此之外,没有。
解决方法是将行附加到PHP中的文件,该文件包含要杀死的PID列表。这不会杀死进程,你需要用bash或perl,python等语言编写一个单独的脚本。让cron
以root身份运行该脚本,定期读取文件,并杀死PID。但那时,它不会是瞬间的。你可以设置cron每分钟运行一次这样的脚本。