在phing中获得生成的exec的pid

ts.*_*ts. 7 php linux phing command-line

我正在使用phing并通过ExecTask运行selenium服务器.有时我需要通过终止其进程来停止运行服务器.

是否有可能在ExecTask中产生进程的PID?

use*_*109 3

不,ExecTask 无法直接给出生成进程的 pid。它只能返回其退出状态和输出。

也许您可以修改在 ExecTask 本身中运行的命令来保存生成的进程的 pid。您可以用来$!获取最近的后台命令的 pid。

job1 &                     //start job1 and run in background, end command with &
p1=$!                      //stores the pid 
echo $p1                   //gives pid of job1
Run Code Online (Sandbox Code Playgroud)

当你想终止 selenium 服务器时,你可以在另一个 ExecTask 中调用它:

pkill pid_to_kill
Run Code Online (Sandbox Code Playgroud)

我不确定 ExecTask 在 shell 环境中所做的更改是否保留。如果是,那么您可以使用$p1. 将 pid_to_kill 替换为 $p1 以终止 job1。否则,您将必须回显 pid 并使用其输出中的值。

否则你就只好这么做了pgrep name_of_program。它将给出包含该名称的所有进程。然后你可以用 杀死它pkill