执行Runtime.getRuntime().exec("ps -ef|grep indexer");
一直抛ERROR: Unsupported SysV option.
于是便去就按照这个error信息去百度、google找答案,未果。。。
看到网上相关问题解决方法(如下),我尝试Runtime.getRuntime().exec("eval ps -ef|grep indexer");
再次失败。。。抓狂中。。。
CMND="ps -ef"
$CMND
是可以正常执行地。
CMND="ps -ef|grep sshd"
$CMND
就会得到上面的错误了。
因为 "ps -ef|grep sshd" 不会被再次解析,管道符失效。
eval $CMND
这样就可以再解析一次。
PS:注意单引号,双引号,转义。
后经高人指点,恍然大悟。。。
linux下:
String[] command = { "/bin/sh", "-c", cmmd };
Process ps = Runtime.getRuntime().exec(command );
windows下:
String[] command = { "cmd", "/c", cmmd };
Process ps = Runtime.getRuntime().exec(command );
总结:没有抓住问题的关键,除了通过ERROR去找解决方法外,还可以通过问题本身或参考相关问题的解决方法。
相关文章:
1.http://bzhang.iteye.com/blog/407846
2.http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1