2015-11-24 14 views
0

我有一個暴發戶的初始化腳本,但我的開發/測試/生產有不同數量的CPU /核心。我想計算工作進程的數量爲4 *初始化腳本內的核心數暴發戶腳本。在腳本節中產生不正確值的shell算術。等效/ bin/sh腳本工作

upstart文檔說script節使用/bin/sh語法。

我創建了/ bin/sh腳本來查看發生了什麼。我得到劇烈不同於我的新貴腳本的結果。從我的暴發戶腳本

腳本節:

script 
    # get the number of cores 
    CORES=`lscpu | grep -v '#' | wc -l` 
    # set the number of worker processes to 4 * num cores 
    WORKERS=$(($CORES * 4)) 
    echo exec gunicorn -b localhost:8000 --workers $WORKERS tutalk_site.wsgi > tmp/gunicorn.txt 
end script 

,輸出: exec gunicorn -b localhost:8000 --workers 76 tutalk_site.wsgi

我當量/ bin/sh的腳本

#!/bin/sh 

CORES=`lscpu -p | grep -v '#' | wc -l` 
WORKERS=$(($CORES * 4)) 
echo exec gunicorn -b localhost:8000 --workers $WORKERS tutalk_site.wsgi 

,輸出: exec gunicorn -b localhost:8000 --workers 8 tutalk_site.wsgi

我希望這是一個相當簡單的問題,其他一些眼睛會找到問題。

任何幫助,將不勝感激。

回答

0

我想我應該在幾天前回答這個問題。我第一次嘗試使用環境變量,但沒有任何運氣。

我用一個Python一班輪

WORKERS=$(python -c "import os; print os.sysconf('SC_NPROCESSORS_ONLN') * 2") 

更換計算解決這一問題,並制定了就好了。

仍然好奇爲什麼我的bourne-shell腳本提出正確的值,而新貴的腳本,其文檔說使用Bourne shell語法沒有