linux下java执行shell命令

天冰 发布于 2013/05/28 15:18
阅读 4K+
收藏 0
def cmd="netstat -nat|grep -i 80|wc -l"
Process pro=null
BufferedReader buf=null
        try{
            pro = Runtime.getRuntime().exec(cmd)
            buf = new BufferedReader(new InputStreamReader(pro.getInputStream()))
            def result=buf.readLine()                 
        } catch(Exception e){
            log.error e
        } finally{
            try {
                buf.close()
            } catch (IOException e) {
                log.error e
            }
            pro.destroy()

        }

程序想得到某个端口的连接数。以上是groovy代码,类java。

请大神帮忙看看,为什么用命令可以得到值,但使用程序就是得到的是空。不解~

加载中
0
BLUE-魏晓峰
BLUE-魏晓峰
cmd有问题,如果命令中有空格,需要拆分成字符串数组去调用
天冰
天冰
如果我把命令换成 netstat -a 则会有值,这个也带着空格。所以应该不是这个问题。谢谢,给出的疑问。真是个奇怪的问题~
0
BLUE-魏晓峰
BLUE-魏晓峰
确实奇怪,我试了一下,用数组也不行。但是我如果把netstat -nat|grep -i 80|wc -l写成一个sh文件放在linux服务器上,用java调用的时候,又能获取数据
返回顶部
顶部