exec() 没有在 php 中执行完整的命令

时间:2021-05-06 19:37:39

标签: php linux exec ps

我正在编写一个 php 脚本,该脚本在 linux 上使用“ps”命令获取后台进程的详细信息。

ps 命令有各种开关,但我在执行 -o 开关时遇到 exec() 问题

流程

  • 创建一个新的后台进程并获取它的PID
  • 使用 ps 命令上的 -o 开关提取进程的特定详细信息
  • 终止进程

代码


    function create_and_kill()
    {
        // Create a new background process and get it`s PID
        $process = BackgroundProcess::create("Command Goes here");
        $display = "\nProcess ID: $process";
        sleep(1);

        // Pull specific details of the process using the -o on ps command
        $result = [];
        exec("ps -p $process -o pid,user,%cpu,%mem,start,time,command", $result);
        $display .= "\n\n".implode("\n",$result);
        sleep(1);

        // Kill the process
        $display .= "\n".shell_exec("kill -9 $process");

        return nl2br($display);
    }

结果

<块引用>

进程 ID:17842

PID TTY 时间 CMD
17842 pts/0 00:00:00 php

结果应该是这样的:

<块引用>

进程 ID:17842

PID 用户 %CPU %MEM 启动时间命令
17842 用户名 0.2 0.3 18:27:47 00:00:01 [命令]

我想不知何故只执行了“ps -p $process”并忽略了-o开关和其余命令以及php的内置服务器控制台返回此“sh:2:-o:未找到” .

我尝试将 -p 与 -o 结合使用,所以我这样写:

ps -po 12342 pid,%cpu

还是不行

请我需要帮助

1 个答案:

答案 0 :(得分:0)

仍然想知道我在评论中说了什么;如果你改变了参数的顺序,你会得到什么?

        exec("ps -o pid,user,%cpu,%mem,start,time,command -p $process", $result);