linux系统shell脚本后台运行python程序

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

你可能感兴趣的:(linux系统shell脚本后台运行python程序)