Jenkins - 批处理等待进程结束并且如果它挂起则终止

时间:2015-04-07 13:13:05

标签: batch-file jenkins

我在Windows上使用Jenkins并希望运行启动应用程序并执行自动测试的csscript,现在我想创建一个超时,以防应用程序运行超过30分钟它将被杀死,< / p>

我有这个批处理脚本:首先我创建一个等待应用程序启动的FOR循环,然后创建另一个FOR循环,检查应用程序是否超过25分钟。

问题是我在第一个循环中遇到此错误 处理泄露的文件描述符。有关详细信息,请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build 我在维基上阅读了这些信息,但并不真正了解如何解决我的问题 请帮忙

start cscript //nologo D:\tets.vbs
FOR /L %%A IN (1,1,20) DO (
    echo Round number %%A

    REM find the running executable
    tasklist | find /I /C "App.exe" > nul
    echo ERRORLEVEL is !ERRORLEVEL!
    IF !ERRORLEVEL! EQU 0 EXIT

    rem wait 3 seconds
    ping 1.1.1.1 -n 1 -w 3000 > nul
)
FOR /L %%U IN (1,1,50) DO (
    echo Round number %%U

    REM find the running executable
    tasklist | find /I /C "App.exe" > nul
    echo ERRORLEVEL is !ERRORLEVEL!
    if !ERRORLEVEL! EQU 1 EXIT

    rem wait 30 seconds
    ping 1.1.1.1 -n 1 -w 30000 > nul
)
echo TASKILL
taskkill /f /im App.exe

1 个答案:

答案 0 :(得分:0)

如果您要暂停构建,请使用 Build-timeout plugin

修改
您链接的文章的建议是使用at命令。而不是:
start cscript //nologo D:\tets.vbs
使用
at %time% start cscript //nologo D:\tets.vbs
您将不得不计算下一个%time%(以分钟为单位),显然该作业必须等待该分钟开始,所以最好延迟1秒,更糟糕的是延迟59秒。