python开发的同学们应该都知道怎么样去启动一个python应用,但是一旦我们把python应用部署到linux服务器上该如何启动呢?
方式①:就是使用进程管理工具,比如supervisor。想了解的小伙伴可以学习[这篇文章]
(/toutou/p/supervisor.html)。
方式②:就是自己写一个简单shell脚本,将程序在后台运行,即使关闭linux终端窗口也不会影响进程的运行。
两者优缺点
方式
优点
缺点
supervisor进程管理
① 可以通过网页执行启动停止的操作② 单配置文件可控制多个程序③ 可控制进程数量4④进程资源控制能力比较强
① 本身需要被监控② 开机自启依赖其他程序③ 不能跨主机④依赖于meld3、setuptools
自写shell脚本
启停简单,无复杂配置
需要一定的linux知识基础,进程资源控制能力比较弱,简单的程序启停工具,存在一定的程序挂的风险。
#! /bin/bash
application='/home/wangping/'
a='hello'
b=`ps -aux| grep 'python3 /home/wangping/duty.py' | grep -v 'grep'| wc -l`
if [ ! $1 ];then
echo "请传参数 start|stop|restart"
else
if [ $1 == "start" ];then
if [ "$b" -gt "0" ];then
echo ""
else
nohup python3 /home/wangping/duty.py >${application}info.log 2>log &
echo ""
fi
fi
if [ $1 == 'stop' ];then
pid=`ps -aux | grep 'python3 /home/wangping/duty.py' | grep -v 'grep' | awk '{print $2}'`
if [ ! $pid ];then
echo ""
else
kill -s 9 $pid
echo ""
fi
fi
if [ $1 == 'restart' ];then
pid=`ps -aux | grep 'python3 /home/wangping/duty.py' | grep -v 'grep' | awk '{print $2}'`
if [ ! $pid ];then
nohup python3 /home/wangping/duty.py >${application}info.log 2>log &
echo ""
else
kill -s 9 $pid
nohup python3 /home/wangping/duty.py >${application}info.log 2>log &
echo ""
fi
fi
fi