supervisor的command执行两条命令

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

1、要执行多条命令,可以写个sh文件包含多条命令,然后sh -x   xxxx.sh,但这样又多了一个文件,

 

2、把所有命令放在字符串,然后用eval来执行,这样在shell窗口可以执行,但放在supervisor报找不到eval命令。比如:

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运行。

 

3、解决方式是使用如下:

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。

4、command用bash -c 启动 python xx.py一定要设置如下为true,否则stop不了真正的python/java进程,因为bash命令进程和真正的python进程不是同一个。 如果是command=python xx.py这样,并且程序里面没有使用多进程,则无需设置以下。
stopasgroup = true
killasgroup = true
posted @   北风之神0509  阅读(10759)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示