我有一个新手初始化脚本,但我的开发/测试/生产有不同数量的cpus / core。我想在init脚本中计算工作进程数为4 *核心数
新贵文档说script
节使用/bin/sh
语法。
我创建了/ bin / sh脚本来查看发生了什么。我的显着结果与我的upstart脚本不同。
我的upstart脚本中的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
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 :(得分:0)
我想我几天前应该回答这个问题。我首先尝试使用环境变量,但没有任何运气。
我通过用python one-liner
替换计算解决了这个问题WORKERS=$(python -c "import os; print os.sysconf('SC_NPROCESSORS_ONLN') * 2")
并且结果很好。
仍然很好奇为什么我的bourne-shell脚本提出了正确的值而新手脚本,其文档说使用bourne-shell语法没有