首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java的backticks执行Unix命令

使用Java的backticks执行Unix命令
EN

Stack Overflow用户
提问于 2013-03-28 08:46:56
回答 1查看 1.5K关注 0票数 1

我试图从java (在unix框中正确运行)执行以下命令-

代码语言:javascript
复制
kill -9 `ps -ef | grep -i myScript.sh | grep bash | awk '{print $2}'`

但是当通过Java执行时,我会得到以下错误-

代码语言:javascript
复制
/usr/bin/kill[8]: `ps: Arguments must be %job or process ids
Exit : 1

代码:

代码语言:javascript
复制
String command = "kill -9 `ps -ef | grep -i myScript.sh | grep bash | awk '{print $2}'`";
Process process=Runtime.getRuntime().exec(command);
InputStream stderr = process.getErrorStream();
InputStreamReader inputStream = new InputStreamReader(stderr);
BufferedReader reader = new BufferedReader(inputStream);
String error = null;
while((error = reader.readLine()) != null) {
    System.out.println(error);
}
exitVal = process.waitFor();
System.out.println("Exit : "+ exitVal);

附注:-只是提醒您,命令在shell下运行得非常好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 08:48:30

您试图运行的是一个shell命令行,但您正在运行kill并将所有参数传递给它,这就是为什么您要从/usr/bin/kill中获得一个错误。

您应该从您的Java代码中运行类似于bash的shell,然后使用-c选项传递命令行。

如果您正在这样做,那么将命令参数作为数组传递可能是一个好主意,而不是一个单独的刺。

代码语言:javascript
复制
String[] command = {"bash","-c","kill -9 `ps -ef | grep -i myScript.sh | grep bash | awk '{print $2}'`"};
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15677473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档