【发布时间】:2013-12-02 11:23:49
【问题描述】:
我无法从 php 文件中杀死 Linux/Centos 中的 searchd 进程,但是我可以直接从 ssh 执行此操作
public function doStop()
{
$command = '/usr/bin/killall -9 searchd';
exec($command);
return $this;
}
【问题讨论】:
-
您在哪个用户下运行您的 PHP 脚本以及您在哪个用户下从 shell 运行命令?
-
你到底为什么希望php有能力杀死一个不是php子进程的进程? (你可以这样做,只是如果 php 和 searchd 以不同的用户身份运行,则默认情况下它们是不同的用户)。应该使用 supervisord/upstart/start-stop-daemon 管理守护进程,而不是通过从可能是公共的网络服务器上的 php 脚本发送信号
-
我都在同一个用户下运行,而且 php 正在执行多个进程,除非 kill 另外如果我想通过 php 杀死进程,你建议什么??
-
killall -9- 即 SIGKILL 也绝对是关闭 sphinx 的错误方式。如果所有其他方法都失败了,这是最后的手段,而且通常只能从 root 开始。您应该将 SIGTERM(15) 发送到 pid 文件中列出的 single 搜索进程。searchd --stop是一个很好的捷径(即 searchd 将查找正确的进程并向其发送信号) -
我检查了laptopli帐户下的php文件,但是该进程是由root运行的,所以我如何从php文件中杀死root运行的进程?可以这样做吗?