`
baseline
  • 浏览: 42746 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

解决了solaris下java调用外部命令失败的一个小问题

    博客分类:
  • Java
阅读更多

用Freemind的做的,大家将就的看看吧,

问题

  • java 使用Runtime.getRuntime().execx执行kstat -p -m \'/^e1000g0|^e1000g$/\'失败
    • m_process.waitFor()总是返回1
    • 0 表示命令执行成功
    • 1 表示命令语法错误
    • 2 表示命令执行错误
  • 解决过程
    • 开始不知道为什么出错
      • 将命令改为 kstat -p -m /^e1000g0/就可以成功
      • 将上了单引号以后,就始终返回1, 即语法错误
      • 尝试将单引号改为双引号还是出错
        • 但是双引号在solaris下也能执行成功
    • 问google
      • 查Runtime.getRuntime.exec
        • 发现有个老兄翻译的别人的一篇文章中有提到,使用Runtime.getRuntime.exec调用重定向有问题
        • 心里隐约觉得,自己的方向可能错了,可能并不是一个单引号那么简单的,导致waitFor返回1
        • http://lusong163.itpub.net/post/14139/66778
      • 查getRuntime().exec 重定向
        • 这是第二天的事了,前天弄到晚上十点,没解决
          • 知道没那么容易解决,自己的身体要紧,明天还要回上海呢
        • 找到另一个老兄的问题
          • http://topic.csdn.net/t/20050309/16/3837564.html#
          • 他遇到的和我的不一样,他是调用 ps   -ef   |   grep   SSS   |   grep   -v   grep   |   awk   '{print   $2}'  
          • 我估计可能也是和这个引号有关系
          • 后面有个哥们给了个答案
            • 天啊,就就是这个答案让我灵光一现

              (new   String[]{"/bin/sh","-c","ps   -ef   |   grep   usb   |   grep   -v   grep   |   awk   '{print   $2}'"});      这样就可以了.我在Linux系统上试过

              注意到了没,命令不是直接使用的ps,那么我在命令中直接使用kstat是不是也是问题呢

    • 解决了
      • 根据最后一次找到的哪个关键的帖子
      • 将我的命令改为
        • String[] cmd1 = new String[3]; cmd1[0] = "/bin/sh"; cmd1[1] = "-c"; cmd1[2] = "kstat -p -m \'/^e1000g0|^e1000g$/\'";

          执行成功啦!!!

      • 后来验证,关键在 /bin/sh -c 这个命令头
        • 这个在window下执行命令是要使用 cmd作为命令的开头是一个道理
          • 就是因为dir命令是由windows中的解释器解释的,直接执行dir时无法找到dir.exe这个命令,所以会出现文件未找到这个2的错误。如果我们要执行这样的命令,就要先根据操作系统的不同执行不同的解释程序command.com 或者cmd.exe。 (这段是copy的)

            "CMD" "/C" ; windows命令中的开头

        • 不过这个现象在solaris中可能只出现在哪些有特殊字符的命令中,比如有单引号什么
      • 发现了一个问题
        • 在这个链接中是翻译的老外写的一篇文章,
          • http://lusong163.itpub.net/post/14139/66778
          • 原文地址 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
          • 其中也提到了  redirect the output of an echo program's simple Java version into the file test.txt.
          • 他给出的解决方案是自己写代码重定向文件
        • 但是我后来做了一下验证,发现是可以实现重定向文件的
          • /bin/sh
          • -c
          • ls > t.txt
          • 这个命令的执行一点问题都没有,t.txt文件也产生了
          • 但是使用 java -version >t.txt 能产生文件,但是文件中却没有内容
分享到:
评论

相关推荐

    Oracle9i的init.ora参数中文说明

    说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将值存储为 7 个字节)。 默认值: 从 NLS_TERRITORY 中获得 nls_time...

    eclipse 开发c/c++

    如果通过调用 make 命令来构建项目, 那么缺省设置没问题,但是,如果使用一种更复杂的方法进行构建,则必需在 Build Command 文本框中 输入适当的命令(例如, make -f make_it_all )。接下来,在 C/C++ Projects ...

    mysql官方中文参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MYSQL中文手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1参考手册 (中文版)

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL5.1参考手册官方简体中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1官方简体中文参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1中文手冊

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    mysql5.1中文手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. ...

Global site tag (gtag.js) - Google Analytics