Php 为什么';t exec(“top”);在Linux上工作?

Php 为什么';t exec(“top”);在Linux上工作?,php,linux,exec,top-command,Php,Linux,Exec,Top Command,我试图执行这个命令 echo exec("top"); 及 两者都不起作用(返回空白输出) 有人知道为什么吗 它可能会工作,但是exec()不会返回任何内容。阅读手册: 但您还有另一个问题:top不会自动退出。您不能在这里使用它,因为您需要发送中断信号(刚刚实现:q也可以) 一种解决方案是在一次迭代后停止 $output = null; exec('top -n 1', $output); var_dump($output); 因为top是一个交互式程序,要在终端上运行,而不是从脚本执行。您

我试图执行这个命令

echo exec("top");

两者都不起作用(返回空白输出)


有人知道为什么吗

它可能会工作,但是
exec()
不会返回任何内容。阅读手册:

但您还有另一个问题:
top
不会自动退出。您不能在这里使用它,因为您需要发送中断信号(刚刚实现:
q
也可以)

一种解决方案是在一次迭代后停止

$output = null;
exec('top -n 1', $output);
var_dump($output);

因为top是一个交互式程序,要在终端上运行,而不是从脚本执行。您可能希望使用参数运行“ps”命令,这些参数将按cpu利用率对输出进行排序。

实际上,您可以调用top并回显其输出。对我有用的代码:

passthru('/usr/bin/top -b -n 1');
-b-在批处理模式下运行


-n 1-如果要将其放入变量中,则只需一次迭代

$output = null;
exec('top -n 1', $output);
var_dump($output);
ob_start();
passthru('/usr/bin/top -b -n 1');
$output = ob_get_clean();
ob_clean();
我用过:

$cpu = preg_split('/[\s]+/', shell_exec('mpstat 1 1'));
$cpu = 100-$cpu[42];

100%减去空闲时间。

验证是否安装了top。您的主机上可能禁用了exec()。@hexa:我使用的是VPS,而这个可以工作@iLLin:我每天都在使用它basis@KingCrunch字体你读过我之前的评论吗?我每天都用它,我从来没有说过关于
-l1
。我刚刚用
-n1
自己试过,效果很好。看这里,它怎么可能用经典的echo exec()工作呢$输出=空;exec('top-n1',$output);打印(输出)//这里出了什么问题?没有任何进一步的信息,我不能告诉任何其他事情,然后“在这里工作很好”。可能您需要将路径调整为
top
或类似的内容(因为可能未设置
$path
或类似的内容)。就这些。事实上:几乎每一个答案只有“不起作用”并不能鼓励我进一步思考。之前的答案对我来说都不起作用,但passthru确实起了作用。美好的
$cpu = preg_split('/[\s]+/', shell_exec('mpstat 1 1'));
$cpu = 100-$cpu[42];