java中运行shell脚本_在java中运行bash shell脚本

我想从我的程序运行一个shell脚本,但它似乎没有做任何事情.我在linux终端直接运行相同的命令,它工作正常,所以我猜它是我的java代码.正如您所看到的,我首先使用PrintWriter将命令写入shell脚本,但我希望这不会影响shell脚本本身的运行.任何帮助,将不胜感激!

public static void main(String[] args) {

// TODO Auto-generated method stub

String nfdump = "nfdump -o csv -r /home/shane/Documents/nfdump/nfcapd.201211211526>blank.txt";

try {

FileWriter fw = new FileWriter("/home/shane/Documents/script.sh");

PrintWriter pw = new PrintWriter(fw);

pw.println("#!/bin/bash");

pw.println(nfdump);

pw.close();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

Process proc = null;

try {

proc = Runtime.getRuntime().exec("sh /home/shane/Documents/script.sh");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

解决方法:

您应该使用返回的Process来获得结果.

Runtime#exec作为单独的进程执行该命令,并返回Process类型的对象.您应该调用Process#waitFor,以便程序等到新进程完成.然后,您可以在返回的Process对象上调用Process.html#getOutputStream()以检查已执行命令的输出.

创建流程的另一种方法是使用ProcessBuilder.

Process p = new ProcessBuilder("myCommand", "myArg").start();

使用ProcessBuilder,您可以将命令的参数列为单独的参数.

标签:java,shell

来源: https://codeday.me/bug/20190928/1828178.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值