我需要使用 java.lang.ProcessBuilder 将使用“sudo”和“su”的不同 sh 命令从我的 java 应用程序传递到 Linux。
这些命令非常相似,但有些有效,有些无效。当我从日志中复制粘贴命令时,所有命令都有效。
在这之后:
processBuilder = new ProcessBuilder("sudo", "su", "- USER66 -c", "'ssh remote.mycomp.org < " + workingDir + "/script_cluster.sh'");
我有 :
su : option invalide -- ' '
Usage: (...)
但这一个:
processBuilder = new ProcessBuilder("sudo", "su", "- USER66 -c", "'scp remote.mycomp.org:" + clusterWorkingDir + "/" + filename + " " + workingDir + "/resultat/" + dir + "/'");
工作完美。
正如我之前所说,如果我从日志中复制第一个命令,它就会在没有任何警告的情况下运行。
记录代码:
logCommand(processBuilder);
private void logCommand(ProcessBuilder processBuilder) {
if (logger.isDebugEnabled()) {
logger.debug("Commande : {}", commandAsString(processBuilder.command()));
}
}
private String commandAsString(List<String> command) {
StringBuilder result = new StringBuilder();
for (String cmdElement : command) {
result.append(cmdElement).append(" ");
}
return result.toString();
}
我在这里缺少什么?我还能做些什么来了解正在发生的事情?
哈士奇WWW
慕尼黑的夜晚无繁华
相关分类