如何使用php中的pid杀死linux进程?

kis*_*han 5 php linux apache amazon-ec2

我面临一个关于从我的PHP代码中杀死Linux进程的问题.我正在使用proc_open()后台函数从我的PHP代码运行Scrapy工具.

它工作正常,但现在我想使用其进程ID杀死此进程.要做到这一点我使用的exec("sudo kill -9 $pid");地方$pid是,我从我的PHP代码获取进程ID.

问题是此进程是代表apache用户运行的.我认为可能存在一些权限问题,所以我将apache用户添加到sudoers文件中,apache ALL=(ALL) NOPASSWD:ALL但是我仍然无法杀死它.不知何故,同样的kill命令可以从我的putty控制台中运行.

我的代码在Amazon EC2实例上.

我的问题是,如何杀死php中pid标识的进程?

Sud*_*jee 20

从来没有,给予apache sudo权限!

使用exec("kill -9 $pid");- 你的apache进程启动它,它可以杀死它:)

  • 我不能用exec这样做,所以我只需要使用shell_exec,但无论如何,谢谢它帮了我很多:) (2认同)
  • 不要为此使用“exec()”,而是使用“posix_kill()”。另外,经常使用kill -9 是不好的做法,因为它会强制进程立即终止而不进行清理(请参阅其他答案)。相反,当进程不会终止时保留kill -9。使用kill -15或kill -1(SIGHUP)。 (2认同)

小智 7

尝试posix_kill

bool posix_kill ( int $pid , int $sig )
Run Code Online (Sandbox Code Playgroud)

将信号 sig 发送到进程标识符为 pid 的进程。