python开发的同学们应该都知道怎么样去启动一个python应用,但是一旦我们把python应用部署到linux服务器上该如何启动呢?
方式①:就是使用进程管理工具,比如supervisor。想了解的小伙伴可以学习[这篇文章]
(https://www.cnblogs.com/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