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

來源:互聯網
上載者:User

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

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

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

################ 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 ... "    exitelse    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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.