2010-10-12 96 views
6

我正在尝试创建一个将从系统获取输入的Web应用程序。使用哪种语言的建议

这个应用程序应该做的是侦听一些shell脚本正在执行并通过web报告状态时会发生什么。

一个例子:

  • 我复制数千种shell脚本记录,而这仍是执行我想剧本的当前状态传递到Web界面。从shell脚本中,我可以回显“文件正在复制请等待它芬兰语”。

从壳侧使用哪种编程语言将是最简单的方法将其传递到Web界面?我打算使用JSP/JAVA for web。

这是甚至正确的方式来思考这个问题吗?每一个建议是欢迎

编辑

会像http://nodejs.org/是这个有用吗?

回答

5

我会使用命名管道(FIFO)来代替。您只需将输出写入管道并让应用程序读取它即可。我不确定是否有其他方式可以获得比这更多的实时系统。

我推荐Perl作为后端。

编辑:

命名管道是一种特殊类型的UNIX文件。缩写FIFO代表“先进先出”。在LINUX Journal上你可以找到一个有趣的read about named pipes

Perl是一个非常强大的脚本语言,有许多随时可用的模块,您可以在http://cpan.org上找到。你可以在SO上找到一些答案here关于如何/从哪里开始学习Perl。

+0

我没有perl的perl,我愿意学习,你能澄清一点你的答案。也许提供一些链接 – London 2010-10-12 13:58:08

+0

@伦敦:编辑我的答案与更多的信息。 – 2010-10-12 14:22:38

0

您可以将shell脚本输出放到服务器上的某些存储中。在网页上使用AJAX来轮询服务器并从该存储获取更新到页面。

如果您决定使用JSF进行网页创建,我可以推荐ajax2jsf库中的“a4j:poll”组件。它非常简单直接。从网页中轮询服务器的非常简单的方法。

+0

如何知道服务器上的存储是否发生更改,并且我需要将其他信息传递给前端,每隔几秒发送一次jax请求?我想尽可能地让这个活动成为现实 – London 2010-10-12 12:52:36

+0

@伦敦,是的,你可以每隔几秒发送一次你需要的频率的AJAX请求。 – 2010-10-12 13:01:02

+0

这不会重新加载整个页面。只有页面的一部分会被Ajax不断更新 – 2010-10-12 13:02:40

2

您的应用程序的Web部分可以轻松读取文件或数据库,因此您只需确保shell脚本正在输出用于更新Java代码的内容。

例如,如果你在你的Java代码运行shell脚本这样

./myscript.sh > mylog.log 

然后(请注意,你不应该有逻辑在你的JSP),你可以在文件中读取,以确定状态的更新,并将结果输出到您的JSP。

从数据库中读取数据会更好,但会涉及到更改shell脚本以将数据输出到数据库。

+0

我希望脚本更新尽可能生动,不确定如何处理日志,如何知道脚本是否已转移到下一个东西,我是否应该每隔几秒读取一次日志文件? – London 2010-10-12 12:51:01

+0

这将是我会这样做的方式。如果您希望脚本将数据推送到网页,则可以在服务器上运行Java程序,检查日志文件的更新,然后向您的Web应用程序发送请求(Web服务请求,套接字请求或甚至更新一个数据库,让你的服务器定期轮询数据库)通知它的变化 – Codemwnci 2010-10-12 12:56:13

+0

现在点采取+1,谢谢你的回答我会看看别人说什么更长。 – London 2010-10-12 13:09:48

0

写入日志文件将是最简单的解决方案。而在编程中,简单通常意味着好。

如果您确实需要非常快速/实时的系统,您应该将这些日志作为数据库。

至于语言,使用你最喜欢的。他们都支持SQLite,包括bash。

0

如果我正确理解您的问题,您希望在客户端计算机上显示一个报告服务器计算机上长时间运行任务状态的网页。如果是这种情况,那么你需要关注一些叫做AJAX IMO的东西。

对于我所知道的最简单,最容易理解的AJAX实现是Apache Wicket