问题描述
shell:ps -ef | grep 'DevCfg_Cli.pl 51964 ZYYC00002'在控制台输入,输出正常root 3226 3088 0 12:51:04 pts/4 0:00 grep DevCfg_Cli.pl 51964 ZYYC0000用java Runtime 调的时候,报用法:ps [ -aAdeflcjLPyZ ] [ -o 格式 ] [ -t 项列表 ][ -u 用户列表 ] [ -U 用户列表 ] [ -G 组列表 ][ -p 进程列表 ] [ -g 程序组列表 ] [ -s 标识符列表 ] [ -z 区域列表 ]'格式' 是一个或者更多的:user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctidpri opri pcpu pmem vsz rss osz nice class time etime stime zone 区域 IDf s c lwp nlwp psr tty addr wchan fname comm args projid project psetpublic 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();}
解决方案
把命令写成sh文件试试
解决方案二:
换成调用exec(String[] cmdarray) 试试,即将ps -ef | grep 'DevCfg_Cli.pl 51964 ZYYC00002' 以空格为分割,转换成字符串数组