我正在编写一个 php 脚本,该脚本在 linux 上使用“ps”命令获取后台进程的详细信息。
ps 命令有各种开关,但我在执行 -o 开关时遇到 exec() 问题
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
还是不行
请我需要帮助
答案 0 :(得分:0)
仍然想知道我在评论中说了什么;如果你改变了参数的顺序,你会得到什么?
exec("ps -o pid,user,%cpu,%mem,start,time,command -p $process", $result);