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

gen*_*sis 3 php linux exec top-command

我试图执行此命令

echo exec("top");
Run Code Online (Sandbox Code Playgroud)

echo exec("/usr/bin/top");
Run Code Online (Sandbox Code Playgroud)

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

有谁知道为什么?

MK.*_*MK. 8

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


Kin*_*nch 6

它可能有效,但exec()不返回任何东西.阅读手册:exec()

$output = null;
exec('top', $output);
echo $output;
Run Code Online (Sandbox Code Playgroud)

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

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

$output = null;
exec('top -n 1', $output);
var_dump($output);
Run Code Online (Sandbox Code Playgroud)


Ale*_*ets 6

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

passthru('/usr/bin/top -b -n 1');
Run Code Online (Sandbox Code Playgroud)

-b - 以批处理模式运行

-n 1 - 只有一次迭代