【发布时间】:2016-10-03 16:49:05
【问题描述】:
我想在我的 java 程序中执行这个命令并检查它是否成功执行。
sudo ntpdate -u someserver.com
我用命令创建一个 bash
#!/bin/sh
sudo ntpdate -u omeserver.com
并用java执行它
ProcessBuilder pb = new ProcessBuilder("/updateTime");
Process p = pb.start();
p.waitFor();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println(stdInput.readLine());
但是我没有输出,stdInput 中没有行,如何检查命令是否正确执行?
如果我在 bash 文件末尾添加例如更新的 Echo,我会在 stdInput 中得到它,但这并不意味着时间已更新
【问题讨论】:
-
脚本是否在终端中成功执行?
sudo是否提示输入密码? -
是的,它执行成功,不需要密码
-
你有什么关于stderr的吗?尝试将
p.getInputStream()更改为p.getErrorStream()。我尝试了类似的脚本,但无法重现您的问题。
标签: java bash processbuilder ntpd