首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shell输出到web

shell输出到web
EN

Stack Overflow用户
提问于 2011-08-01 21:15:04
回答 4查看 3.9K关注 0票数 2

我需要一种在网页上显示linux shell输出的方法。我知道有很多webshell,但它们都不能让我显示时间变化的输出(命令如: top,watch...),我需要一个基于shell的网络分析器,这样我就不能每次都启动和停止它,因为它需要连续运行。有什么简单的方法可以做到这一点吗?我不需要与shell进行任何交互,只需要给定命令的输出。

提前感谢Lopoc

EN

回答 4

Stack Overflow用户

发布于 2011-08-01 21:20:47

在PHP中,你可以使用exec()http://www.php.net/manual/en/function.exec.php

代码语言:javascript
复制
$last = exec('ls', $o, $r);

$o将保存输出,$r将保存返回代码,$last将保存最后一行输出。一般而言,您通常会像这样使用它:

代码语言:javascript
复制
$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是要显示的行数)。我不确定这对你是否重要,但最好把它放在脑后。

票数 6
EN

Stack Overflow用户

发布于 2011-08-01 21:24:41

根据您启动的程序,应该有如下开关

代码语言:javascript
复制
$ top -n1

这将为您提供您正在寻找的快照形式的输出。

只需使输出php脚本在所需的秒数后自动刷新即可。

一种在大多数浏览器中都有效的流行方法是添加一个所谓的Meta Refresh

代码语言:javascript
复制
<meta http-equiv="refresh" content="5">

示例:五秒钟后刷新实际页面。

票数 1
EN

Stack Overflow用户

发布于 2011-08-01 22:13:23

如果你不想学习另一门语言,你可以看看通用的CGI模块,它已经支持

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6898925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档