supervisor的command执行两条命令

以下supervisor的进程的comand配置参数只能写一个命令java

一、要执行多条命令,能够写个sh文件包含多条命令,而后sh -x   xxxx.sh,但这样又多了一个文件,python

 

二、把全部命令放在字符串,而后用eval来执行,这样在shell窗口能够执行,但放在supervisor报找不到eval命令。好比:git

command = eval  "python -u app/utils_ydf/git_client.py&&gunicorn -w 9 -k gevent --bind 0.0.0.0:5402 app.apis.elong.nearby_hotel:app" 这样不能在supervisor运行。

 

三、解决方式是使用以下:shell

command = /bin/bash -c "python -u app/utils_ydf/git_client.py&&gunicorn -w 9 -k gevent --bind 0.0.0.0:5402 app.apis.elong.nearby_hotel:app"

这样就能够了。


这样每次在启动或重启进程时候,会先拉去git再部署,部署速度比jenkens的构建速度快,状态也比jenkens查看方便。


这样运行是要注意下环境变量问题,好比用python的git包时候,读取不了git的路径竟然,最后是在配置的enviroment设置GIT_PYTHON_GIT_EXECUTABLE="/usr/bin/git才解决,但单独运行又能读取git。

四、command用bash -c 启动 python xx.py必定要设置以下为true,不然stop不了真正的python/java进程,由于bash命令进程和真正的python进程不是同一个。 若是是command=python xx.py这样,而且程序里面没有使用多进程,则无需设置如下。
stopasgroup = truekillasgroup = true
相关文章
相关标签/搜索