zoukankan      html  css  js  c++  java
  • incredibuild(分布式任务软件)脚本

    IncrediBuild 可以在Server段通过修改单个任务的进程上限来实现提升任务执行速度。

    IncredBuild本机版也可以用来进行本机实现多线程任务分发,这样可以充分利用多核资源。

    提交分布式任务涉及该工具的三个命令:

        xgConsole.exe ,负责编译工程任务的发起;

        xgSubmit.exe ,负责提交各个工程文件的编译任务;

        xgWait.exe ,负责最后的链接。

     示例:

    run.bat
    @ECHO OFF
    xgSubmit.exe /group=UTest # test.exe 0.cpp
    xgSubmit.exe /group=UTest # test.exe 1.cpp
    xgSubmit.exe /group=UTest # test.exe 2.cpp
    xgSubmit.exe /group=UTest # test.exe 3.cpp
    xgSubmit.exe /group=UTest # test.exe 4.cpp
    xgSubmit.exe /group=UTest # test.exe 5.cpp
    xgSubmit.exe /group=UTest # test.exe 6.cpp
    xgSubmit.exe /group=UTest # test.exe 7.cpp
    xgSubmit.exe /group=UTest # test.exe 8.cpp
    xgSubmit.exe /group=UTest # test.exe 9.cpp
    xgSubmit.exe /group=UTest # test.exe 10.cpp
    xgWait.exe /group=UTest
    echo All Task Finished
    
    xgConsole /command="run.bat" /openmonitor 
    Rem UTest.bat - Distributed Version
    Rem ===============================
    xgSubmit.exe /group=UTest /command UTest.exe /in=Input1.dat /out="Results"
    xgSubmit.exe /group=UTest /command UTest.exe /in=Input2.dat /out="Results"
    xgSubmit.exe /group=UTest /command UTest.exe /in=Input3.dat /out="Results"
    xgSubmit.exe /group=UTest /command UTest.exe /in=Input4.dat /out="Results"
    xgSubmit.exe /group=UTest /command UTest.exe /in=Input5.dat /out="Results"
    xgWait.exe /group=UTest
    UReport.exe /in="Results" /ShowReport
    :end
    
    xgConsole.exe UTest.bat

     自己写的一个分布式批处理脚本: 

    @ECHO OFF
    setlocal ENABLEDELAYEDEXPANSION
    set time1=%time:~0,2%%time:~3,2%%time:~6,2%
    
    set PRJ_DIR=%CD%
    set WORK_FILE=lint
    set BAT=run.bat
    set SOURCE=filelist.txt
    
    ::进工作目录
    IF NOT EXIST %WORK_FILE% (
        echo No %WORK_FILE%!!!
        EXIT
    )
    
    cd %WORK_FILE%
    
    IF NOT EXIST %SOURCE% (
        echo No %SOURCE%!!!
        EXIT
    )
    
    set tmpIndex=0
    set duplicateCount=0
    
    ::遍历文件列表
    FOR /F "eol=/delims=" %%i in (%SOURCE%) do (
        set tmp=%%i
        
        set isannotate=false
        IF "!tmp:~0,1!"=="#" (
            set isannotate=true
        )
        IF "!tmp:~0,2!"=="//" (
            set isannotate=true
        )
        
        IF !isannotate!==false (
            set fileorfolder=!tmp:%%PRJ_DIR%%=%PRJ_DIR%!
            set existfile=false
            FOR /F "delims=" %%j in ('dir /s /b /A:-D !fileorfolder!') do (
                IF EXIST "%%j" (
                    set existfile=true
                    
                    ::判重标识
                    set duplicate=false
                    FOR /L %%k IN (0,1,!tmpIndex!) do (
                        IF /I !tmp[%%k]!=="%%j" (
                            set duplicate=true
                        )
                    )
                    
                    ::判重
                    IF !duplicate!==false (
                        set tmp[!tmpIndex!]="%%j"
                        set /a tmpIndex=tmpIndex+1
                    ) ELSE (
                        set /a duplicateCount=duplicateCount+1
                    )
                )
            )
            
            IF !existfile!==false (
                echo !tmp! error
                echo !fileorfolder!
            )
        )
    )
    
    ::清空临时环境变量,否则后面执行xgConsole时会尝试解析这些环境变量而出错
    set tmp=
    set fileorfolder=
    set existfile=
    set duplicate=
    
    echo TaskInfo FileCount:!tmpIndex!  Duplicate:!duplicateCount!
    
    ::重新生成bat
    IF EXIST "%BAT%" (
        del "%BAT%"
    )
    
    echo @ECHO OFF >>%BAT%
    
    ::按实际大小遍历
    set /a tmpIndex=tmpIndex-1
    
    FOR /L %%k IN (0,1,!tmpIndex!) do (
        echo xgSubmit.exe /group=UTest # test.exe !tmp[%%k]! >>%BAT%
    )
    
    echo xgWait.exe /group=UTest >>%BAT%
    echo echo All Task Finished! >>%BAT%
    
    xgConsole /NOLOGO /command="%BAT%"
    
    set time2=%time:~0,2%%time:~3,2%%time:~6,2%
    set /a time3=%time2%-%time1%
    echo 耗时%time3%秒
    
    EXIT
  • 相关阅读:
    Python全栈day28(描述符应用)
    Python全栈day28(上下文管理)
    如何在B2C电子商务网站后台添加CNZZ统计代码(转)
    数据统计以及商城运营日志在电子商务中的重要性(转)
    电商企业运营规划——五年经验总结(转)
    电子商务数据运营入门——有哪些数据分析需要做 (转)
    IDC单IP绑定多域名(包括端口)
    商城自动备份
    CentOS安装crontab及使用方法(转)
    CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中(转)
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/3176734.html
Copyright © 2011-2022 走看看