来自 ant 的 PsExec 不会终止

Posted

技术标签:

【中文标题】来自 ant 的 PsExec 不会终止【英文标题】:PsExec from ant does not terminate 【发布时间】:2010-09-10 07:46:51 【问题描述】:

我想在远程 Windows 机器上启动和停止 tomcat 服务器。我希望能够从 ant 脚本中执行此操作(因此我们的构建服务器可以执行此操作)。

我无法使用 sc.exe 解决这个问题,因为无法将用户名和密码传递给远程机器。

相反,我使用 psexec 在远程服务器上运行命令。我的 ant 脚本如下所示:

<target name="start_tomcat_server">
    <exec executable="psexec.exe" failonerror="true">
        <arg value="/accepteula"/>
        <arg value="\\test_host"/>
        <arg value="-u"/>
        <arg value="username"/>
        <arg value="-p"/>
        <arg value="password"/>
        <arg value="net"/>
        <arg value="start"/>
        <arg value="tomcat6"/>
    </exec>
</target>

如果我从命令提示符运行此命令,一切正常:psexec.exe /accepteula \\test_host -u username -p password net start tomcat6

但是,当我运行 ant 目标时,psexec 进程永远不会终止,它只是挂起这个输出:

start_tomcat_server: [执行] [exec] PsExec v1.98 - 远程执行进程 [执行] 版权所有 (C) 2001-2010 Mark Russinovich [执行] Sysinternals - www.sysinternals.com [执行]

任何想法我可以做些什么来完成这项工作?

【问题讨论】:

你试过用runas/netonly吗? microsoft.com/resources/documentation/windows/xp/all/proddocs/… ant -v 是否提供更多详细信息? 【参考方案1】:

花了一些时间后,我找到了解决方案。将参数“-d”提供给 psexec,它将脱离标准输出。

... ...

需要注意的一点,当加上'-d'时,psexec返回的是启动进程的PID而不是0,所以ant会认为命令失败。

【讨论】:

以上是关于来自 ant 的 PsExec 不会终止的主要内容,如果未能解决你的问题,请参考以下文章

来自终止状态的可操作通知

如何在页面离开时终止长轮询 Ajax 请求

“来自调试器的消息:由于内存问题而终止”的任何通知或观察者?

Redshift - 终止启动 Redshift 查询的应用程序并不会终止它

Amazon Batch Job 不会终止

Firebase 的 Cloud Functions 因超出内存限制而被终止