我需要一种在网页上显示linux shell输出的方法。我知道有很多webshell,但它们都不能让我显示时间变化的输出(命令如: top,watch...),我需要一个基于shell的网络分析器,这样我就不能每次都启动和停止它,因为它需要连续运行。有什么简单的方法可以做到这一点吗?我不需要与shell进行任何交互,只需要给定命令的输出。
提前感谢Lopoc
发布于 2011-08-01 21:20:47
在PHP中,你可以使用exec():http://www.php.net/manual/en/function.exec.php
$last = exec('ls', $o, $r);$o将保存输出,$r将保存返回代码,$last将保存最后一行输出。一般而言,您通常会像这样使用它:
$last = exec('ls', $o, $r);
if ($r != 0)
{
print 'Error running command';
exit($r);
}
else
print implode("\n", $o);top是一个交互式程序,该命令将永远继续,并且PHP/exec()将继续等待它完成。您可以将top -b -n1用于“批处理模式”。有关top参数的更多信息,请参见top(1)。
如果需要适用于任何命令更通用的解决方案,可以使用从xmlrpc脚本运行的popen() (或proc_open())。不过,这是一个复杂得多的设置,并且需要一些关于UNIX进程控制的知识。正确地做到这一点绝非易事……
PS:top的论点因操作系统而异。在Linux上使用top -b -n 1,在FreeBSD上使用top -b 999 (其中999是要显示的行数)。我不确定这对你是否重要,但最好把它放在脑后。
发布于 2011-08-01 21:24:41
根据您启动的程序,应该有如下开关
$ top -n1这将为您提供您正在寻找的快照形式的输出。
只需使输出php脚本在所需的秒数后自动刷新即可。
一种在大多数浏览器中都有效的流行方法是添加一个所谓的Meta Refresh
<meta http-equiv="refresh" content="5">示例:五秒钟后刷新实际页面。
发布于 2011-08-01 22:13:23
如果你不想学习另一门语言,你可以看看通用的CGI模块,它已经支持
https://stackoverflow.com/questions/6898925
复制相似问题