如何查看在 ProcessBuilder 中执行的原始命令?

How can I see the raw command that is been executed in a ProcessBuilder?

我尝试在 Java 中调试 ProcessBuilder。 有没有办法查看已在 ProcessBuilder 中执行的原始命令? 我尝试执行 curl 命令。 我怎样才能看到原始命令?

我尝试了 error/output 流,但没有产生任何有用的输出。 有人知道我必须使用哪个流吗?

    StringBuilder builder = new StringBuilder();
    BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
    while(line = input.readLine() != null){
        builder.append(line);
        builder.append(" ");
    }
    String result = builder.toString();

我也试过这个:

ProcessBuilder commandBuilder = new ProcessBuilder("curl", VOPT, AUOPT, AUV, AUT, URL, DURLE, PROJECTS, PID, DURLE, NOTES, NOTESVAL, DURLE, NAME, NAMEVAL);
Process command = commandBuilder.start();

在我可以看到原始命令的 Process 对象中是否有 属性?

最终,我不得不模拟这个命令(ProcessBuilder 中的参数都是正确的):

curl -v -H "Authorization: Bearer <myPersonalToken>" https://app.asana.com/api/1.0/tasks --data-urlencode "projects=<projectId>" --data-urlencode "notes=PRTG_Message" --data-urlencode "name=8005"

使用command.info().command()

ProcessBuilder 有一个 'command()' 方法,可以返回用于创建流程的参数列表。如果你用空格连接它,它应该给你生成的本机命令。

如果这还不够,您可以添加 && sleep 10000,然后检查 运行 进程以了解正在执行的实际进程。