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)
既不起作用(返回空白输出)
有谁知道为什么?
因为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;
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)
你实际上可以调用top并回显它的输出.对我有用的代码:
passthru('/usr/bin/top -b -n 1');
Run Code Online (Sandbox Code Playgroud)
-b - 以批处理模式运行
-n 1 - 只有一次迭代