相关操作
真的是懒惰才是人类进步的阶梯…
之前用supervisor和gunicorn部署了一个Django项目
如果更新代码,就要重启代码,就要执行
ps aux | grep supervisor
ps aux | grep gunic
然后kill掉对应的号码…
再进入到python2的虚拟环境,执行
supervisord -c supervisor.conf
操作了十次,已不愿意再操作了…
终于想写脚本…
把很久前复制同事一段拿出来看了看
ps -ef | grep 'uwsgi' | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep ‘uwsgi’
表示获取包含有uwsgi的内容
| grep -v grep
表示去掉包含有grep的,因为grep的时候,会将grep uwsgi这个也grep出来
awk ‘{print $2}’ 提取到前面值的第二列.第二列就是pid
然后kill -9
管道符 | 有一个功能是,左边的输出值会输入到右边,作为输入值…
这样ps aux | grep 然后kill -9 进程号的过程就可以自动化了
第二步:
在kill后,重新执行supervisor
本来的步骤是workon py2的虚拟环境
然后cd到目录下
执行
supervisord -c supervisor.conf
就可以启动服务了…
其实可以在虚拟环境下获取到 supervisord的路径,
以及对应的python的路径
其实就是虚拟环境的python路径 虚拟环境下supervisord的路径
-c 配置文件的路径
/root/.virtualenvs/py2_data/bin/python /root/.virtualenvs/py2_data/bin/supervisord -c /home/python/Desktop/Data/supervisord.conf
其实还有一点…
需要判断该进程是否在运行,在运行才kill…不在运行就不处理
ps_out=`ps -ef | grep 'supervisor' | grep -v 'grep'`
if [ ! -n "$ps_out" ];then
echo ""
else
echo "123"
fi
! 表示否
ps_out一定要用’’'包裹起来…
不然会报错
command not found
还有一点…
花了很久的时间,
才发现
ps_out = 'xxxxxxx'
是错的…
不能有空格,和python语法不同,python的PEP8 希望加空格,bash却不支持
nginx是监听端口的.启动服务后就可以监听到了
感悟.
很多努力在当时或许没用,但是在后来是可能可以用得上的…
上周写的脚本,在今天2019-04-03就用的很happy…要不是写了脚本,今天输入啥ps aux | grep xxx,然后workon虚拟环境,巴拉巴拉的,得累成SB…_

本文介绍了如何通过编写脚本来自动化重启由supervisor、gunicorn和nginx部署的Django项目。当更新代码时,通常需要手动执行一系列命令,但作者通过编写脚本简化了这一过程,避免了重复操作。脚本中包括使用ps、grep和awk来查找并杀死uwsgi进程,随后利用supervisor重启服务。此外,还提到在编写bash脚本时需要注意的细节,如避免空格和正确引用命令。最后,作者感慨这些提前的努力在关键时刻能带来便利。

638

被折叠的 条评论
为什么被折叠?



