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

时间:2011-07-11 16:48:40

标签: php linux exec top-command

我试图执行此命令

echo exec("top");

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

既不起作用(返回空白输出)

有人知道为什么吗?

5 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

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

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

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

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

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

答案 2 :(得分:6)

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

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

-b - 以批处理模式运行

-n 1 - 只有一次迭代

答案 3 :(得分:3)

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

ob_start();
passthru('/usr/bin/top -b -n 1');
$output = ob_get_clean();
ob_clean();

答案 4 :(得分:0)

我用过:

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

100%减去空闲时间。