使用其中一个代码
system("htop");
//or
exec('htop');
如何保持数据从htop写入文件或其他东西(脚本的时间限制设置为0,不用担心)
htop是一个交互式程序,它在循环中运行直到退出,并且似乎没有提供任何标志来进行单次迭代然后退出,这使得捕获输出存在问题。
你考虑过使用top吗?您可以使用-n 1:
将其限制为1次迭代。$resp = system("top -n 1");
print $resp;
这是另一种解决方案,即使用虚拟终端并执行屏幕捕获,然后关闭会话。这是一个很好的hack,但是top -n - 1在资源使用方面更有效。您需要在redhat/centos中执行yum screen。似乎包含在ubuntu/debian中。
<?php
`screen -d -m -S htop_session htop`;
sleep(1);
`screen -p 0 -S htop_session -X hardcopy`;
`screen -p 0 -S htop_session -X quit`;
?>
<pre>
<?php print file_get_contents('hardcopy.0'); ?>
</pre>
我同意@d_g的回答,top是一个打算在终端上运行的程序。我建议使用AJAX经常更新top的输出
此外,我想添加关于函数passthru()
的信息。该函数将shell命令的输出直接打印到php的标准输出中。在外部程序完成之前,您不需要额外的打印和输出。如果命令需要很长时间来处理,这一点很重要。所以你可以替换:
$resp = system("top -n 1");
print $resp;
passthru('top -n 1');
system
和exec
以字符串形式返回命令的结果。使用fwrite或类似的函数将输出保存到文件