iteye_6073 2013-04-02 13:08
浏览 950
已采纳

java调用shell(ps -ef | grep )问题

shell:

ps -ef | grep 'DevCfg_Cli.pl 51964 ZYYC00002'

[b]在控制台输入,输出正常[/b]
root 3226 3088 0 12:51:04 pts/4 0:00 grep DevCfg_Cli.pl 51964 ZYYC0000

[b]用java Runtime 调的时候,报[/b]

用法:ps [ -aAdeflcjLPyZ ] [ -o 格式 ] [ -t 项列表 ]
[ -u 用户列表 ] [ -U 用户列表 ] [ -G 组列表 ]
[ -p 进程列表 ] [ -g 程序组列表 ] [ -s 标识符列表 ] [ -z 区域列表 ]
'格式' 是一个或者更多的:
user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctid
pri opri pcpu pmem vsz rss osz nice class time etime stime zone 区域 ID
f s c lwp nlwp psr tty addr wchan fname comm args projid project pset

[code="java"]
public static String exec(String cmd,String encoding) {
StringBuffer sb1;
StringBuffer sb2;
sb1 = new StringBuffer();
sb2 = new StringBuffer();
String temp1 = "";
String temp2 = "";
Runtime rt = Runtime.getRuntime();
try {
System.out.println("[===============执行命令==========]:"+cmd);
Process p = rt.exec(cmd);
BufferedReader bufferedReader1 = new BufferedReader(
new InputStreamReader(p.getInputStream(),encoding));
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(p.getErrorStream(),encoding));

        while ((temp1 = bufferedReader1.readLine()) != null) {
            sb1.append(temp1);
            System.out.println(temp1);
        }

        while ((temp2 = bufferedReader2.readLine()) != null) {
            sb2.append(temp2);
            System.err.println(temp2);
        }

        p.waitFor();
        return sb1.toString();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return sb1.toString();
}[/code]
  • 写回答

2条回答

  • yuhang_java 2013-04-02 15:21
    关注

    把命令写成sh文件试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码