建议使用哪种语言

时间:2010-10-12 12:23:52

标签: java python perl shell system

我正在尝试创建一个可以从系统获取输入的Web应用程序。

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

一个例子:

  • 我正在使用shell脚本复制数千条记录,虽然这仍在执行,但我希望将脚本的当前状态传递给Web界面。从shell脚本方面我可以回应一些类似“正在复制文件,请等待芬兰语”。

使用shell端的哪种编程语言是将其传递给Web界面的最简单方法?我打算将JSP / JAVA用于web。

这是否是思考这个问题的正确方法?欢迎提出任何建议

修改

http://nodejs.org/之类的东西会对此有用吗?

5 个答案:

答案 0 :(得分:5)

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

我建议使用Perl作为后端。

编辑:

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

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

答案 1 :(得分:2)

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

例如,如果您像这样运行shell脚本

./myscript.sh > mylog.log

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

如果你真的需要非常快/实时的系统,你应该把这些日志作为数据库。

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

答案 4 :(得分:0)

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

值得一提的是,我所知道的最简单,最容易理解的AJAX实现是Apache Wicket