程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 簡單的shell多進程 (後台運行方式)

簡單的shell多進程 (後台運行方式)

編輯:關於.NET

這兩天,因為工作地需要做一些的多進程的工作,看了網上的一些例子,多是通過管道文件的方式來 實現的,後來想想也不用這麼麻煩...

下面是一個多進程後台掛起的一個簡單的例子,原理大概如下,先在後台掛起一定數量的進程,當正 在執行的進程數超過一定數值後,暫停任務分配,睡眠一定時間,若後台進程數小於你設定的數值後,繼 續任務分配。

其實是不是也很簡單...

################ change the var bill to fix #########################################

################ change the pro to multi process ####################################

################ yijy 2009.4.26 modified ############################################

InDir="/in"

OutDir="/out"

CurCmd="varfixf"

du ${OutDir}

rm ${OutDir}/*

du ${OutDir}

totalInDir=`find ${InDir} -type f | wc -l`

curDir=`pwd`

if [ ! ${totalInDir} ]

then

    echo "APP:MSG:There is no file in the in dir ... "

    exit

else

    echo "APP:MSG:Start to convert ... "

    currentBinNum=0

    find ${InDir} -type f | while read file

    do

        currentBinNum=`ps -ef | grep ${FEDX_HOME} | grep ${CurCmd} | grep ${curDir} 

|wc -l` /*統計後台掛起的數目*/

        echo "APP:MSG:Backgroud num : "${currentBinNum}

        while [ ${currentBinNum} -gt 30 ] /*如果掛起數目大於30,這個掛起數值可以自定

義,程序暫停,睡眠,睡眠之後繼續檢測後台掛起的數目*/

        do

            sleep 1

            echo 'sleeping ...'

            currentBinNum=`ps -ef | grep ${FEDX_HOME} | grep ${CurCmd} | grep 

${curDir} |wc -l`

        done

        filename=`basename $file`

        varfixf ${curDir}/${InDir}/${filename} ${curDir}/${OutDir}/${filename} > 

/dev/null &

    done

    echo "APP:MSG:Convert over ... "

fi
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved