从 REST 调用 psexec 将其强制为 运行 两次

Calling psexec from REST forces it to run twice

我有一个 REST 服务,它有一个 POST 方法,该方法执行 psexec 命令,在远程桌面上启动不同的进程(取决于 POST 数据),并等待它们终止(psexec 正在 运行 没有 -d 标志)。如果这个过程需要超过 5 分钟到 运行(我遇到的问题大约需要 5 分钟),psexec 命令将被第二次执行,所以我的过程被启动了两次,当我从一个 cmd.exe 实例和一个新实例 运行s 启动它时,它的前一个实例被杀死。如果我 运行 psexec 命令带有不等待进程终止的 -d 标志,则进程正在 运行 正确,只有一次。是什么导致了这个问题?是 psexec 命令还是 REST 服务的问题(REST 使用 Express 在 Node.js 中编写)。只有当我从 Web 界面(浏览器)调用 REST 服务时才会发生这种情况,如果我直接从服务器调用它,则它是 运行 正确的。

给运行psexec,我用的是child_process module and its exec function那个

spawns a shell then executes the command within that shell.

它有 timeout 选项,默认为 0。

我通过将 child_process.exec() 更改为 child_process.execSync() 解决了我的问题,这与

不同

the exception that the method will not return until the child process has fully closed. When a timeout has been encountered and killSignal is sent, the method won't return until the process has completely exited.

timeout选项默认为undefined

同步方法会阻塞 Node.js 事件循环,暂停执行任何附加代码,直到衍生进程退出。