为什么不执行(“顶”); 在Linux上工作?

我试图执行这个命令

echo exec("top"); 

 echo exec("/usr/bin/top"); 

既不工作(返回空白输出)

有人知道为什么吗?

因为top是一个在终端上运行的交互式程序,所以不能从脚本执行。 您可能想运行带有参数的'ps'命令,这些参数将按cpu利用率对输出进行排序。 http://www.devdaily.com/linux/unix-linux-process-memory-sort-ps-command-cpu

它可能工作,但exec()不返回任何东西。 阅读手册: exec()

 $output = null; exec('top', $output); echo $output; 

但是你还有另外一个问题: top不能自行退出。 你不能在这里使用它,因为你需要发送中断信号(刚刚意识到: q也可以)。

一个解决方案是在一次迭代之后让top停止

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

您实际上可以调用top并回显其输出。 代码为我工作:

 passthru('/usr/bin/top -b -n 1'); 

-b – 以批处理模式运行

-n 1 – 只有一个迭代

如果你想把它放在一个变量中:

 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%减去空闲时间。