使用java Runtime执行终端命令以执行基于模式的操作

时间:2015-03-23 05:35:25

标签: java

我在linux终端上安装了一个终端客户端实用程序,使我可以与外部远程设备通信。我如何使用java运行时执行这些东西?

例如,如果我想在mongodb安装上执行查询,我可以通过执行" mongo --port 27017"来打开终端并转移到mongo客户端模式。命令并连接到mongo服务器,然后从终端窗口执行mongo客户端模式的命令。我怎么能从java运行时做到这一点。

[akhilv@dc1devpavxsrv01 bin]$ ./mongo --port 27017
MongoDB shell version: 2.6.5
connecting to: 127.0.0.1:5000/test
rpset:PRIMARY> use quartz
switched to db quartz
rpset:PRIMARY> show collections
quartz__calendars
quartz__jobs
quartz__locks
quartz__triggers
system.indexes
rpset:PRIMARY>
rpset:PRIMARY> exit
bye
[akhilv@dc1devpavxsrv01 bin]$

以上是我想要从Runtime做的实际内容。我首先从我的原始终端执行命令 ./ mongo --port 27017 ,然后我进入了mongo客户端模式。然后我执行使用quartz,show collections 等,只有我的mongo客户端模式才能理解。

我正在尝试执行"使用quartz"和"展示收藏"使用Runtime从java代码执行的命令。我对Runtime不是很具体,但需要在java中使用一些东西,因为我不能从mongo或任何其他供应商那里购买客户端库。

请帮忙

1 个答案:

答案 0 :(得分:0)

可以通过从java分支外部进程并捕获其I / O通道来实现。所以从java基本上你必须调用shell命令,campture并解析它的输出。查看Process类的一些详细信息。

http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

最有趣的方法是waitFor() getInputStream()getOutputStream() 这与android应用程序如何使用root访问非常相似 - 以同样的方式:)