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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM