Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中通过shell获取后台exec中运行的进程的pid_Php_Linux_Bash_Shell - Fatal编程技术网

如何在php中通过shell获取后台exec中运行的进程的pid

如何在php中通过shell获取后台exec中运行的进程的pid,php,linux,bash,shell,Php,Linux,Bash,Shell,我正在用php编写一个shell,我想显示与bash相同的输出。在bash中执行sleep 10&将得到[1]。当我使用以下命令调用shell时,如何在php中执行相同的操作: if (preg_match("/&\s*$/", $command)) { $this->$shell_fn($token, '/bin/bash -c ' . escapeshellarg($command) . " > /

我正在用php编写一个shell,我想显示与bash相同的输出。在bash中执行
sleep 10&
将得到
[1]
。当我使用以下命令调用shell时,如何在php中执行相同的操作:

    if (preg_match("/&\s*$/", $command)) {
        $this->$shell_fn($token, '/bin/bash -c ' . escapeshellarg($command) .
                         " > /dev/null");
        return array(
            'output' => '',
            'cwd' => $path
        );
    }
$shell_fn是指向curl调用的shell_exec、exec或cgi脚本上的包装器的变量。甚至可以从php或使用shell获取pid吗?

如果您想获取pid,可以使用获取最新后台进程的pid:

bash -c 'sleep 10 & echo $!'
我不知道如何生成外部进程,但我想您可以在这里捕获
echo
输出,只需运行上面的shell命令。

如果您想输入pid,可以使用获取最近后台进程的pid:

bash -c 'sleep 10 & echo $!'
我不知道如何生成外部进程,但我想您可以在这里捕获
echo
输出,只需运行上面的shell命令。

如果您想输入pid,可以使用获取最近后台进程的pid:

bash -c 'sleep 10 & echo $!'
我不知道如何生成外部进程,但我想您可以在这里捕获
echo
输出,只需运行上面的shell命令。

如果您想输入pid,可以使用获取最近后台进程的pid:

bash -c 'sleep 10 & echo $!'

我不知道如何生成外部进程,但我想您可以在这里捕获
echo
输出,只要运行上面的shell命令。

这项工作:
echo shell_exec(“/bin/bash-c'sleep 5>/dev/null&echo$!”你知道如何获取该编号吗?这是作业编号。您可以使用
作业
命令获取它。在您的例子中类似于这样:
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep$!'
或更准确地说
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep-w$!',即将
-w
传递给grep。此工作:
echo shell_exec(“/bin/bash-c'sleep 5>/dev/null&echo$!”你知道如何获取该编号吗?这是作业编号。您可以使用
作业
命令获取它。在您的例子中类似于这样:
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep$!'
或更准确地说
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep-w$!',即将
-w
传递给grep。此工作:
echo shell_exec(“/bin/bash-c'sleep 5>/dev/null&echo$!”你知道如何获取该编号吗?这是作业编号。您可以使用
作业
命令获取它。在您的例子中类似于这样:
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep$!'
或更准确地说
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep-w$!',即将
-w
传递给grep。此工作:
echo shell_exec(“/bin/bash-c'sleep 5>/dev/null&echo$!”你知道如何获取该编号吗?这是作业编号。您可以使用
作业
命令获取它。在您的例子中类似于这样:
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep$!'
或更准确地说
/bin/bash-c'sleep 5>/dev/null&jobs-l | grep-w$!',即将
-w
传递给grep。