shell写python进程守护脚本

keep.sh

#!/bin/bash

while true  
echo $$
do
   procnum=`ps -aux |grep "app"|grep -v grep|wc -l`  
   if [ $procnum -eq 0 ]; then  
       source /data/env/bin/activate
       nohup python /data/app.py >>/data/app.log 2>&1 &  
       deactivate
   fi
   sleep 600  
done

整个流程是

  1. ./start.sh

  2. ./keep.sh > keep.log 2>&1 &

注意:
在 keep.sh 里面 echo $$ 是输出当前进程号,因为shell 脚本启动之后,是很难去查其进程号,没有进程号,就很难杀死该shell脚本启动对应的

进程 ,从keep.log 找到该进程号,kill -s 9 pid 即可

./keep.sh > keep.log 2>&1 & 这个一定要这么写,因为大部分是通过终端连接ubuntu,直接./keep.sh 的话就没法在后端运行,如果终端关闭,那该脚本对应的进程也被自动杀死掉,守护进程就不存在了

最近重新试了一次,发现 ./keep.sh > keep.log 2>&1 & 确实可以在后台运行,但是关掉终端之后,收到hup信号,该脚本还是中

断了,起不了效果。用nohup 也提示很多错误,keep.sh这个脚本还是跑不起来,看来不能终端上执行 ./keep.sh > keep.log 2>&1 & 只能在 screen 会话模式, 关于screen 可以见如下文档

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

先安装screen

apt-get install screen

再建一个会话
screen -dmS Urumchi

再看这个会话是事成功
screen -list

连上这个会话
screen -r Urumchi

再执行keep.sh脚本
./keep.sh > keep.log 2>&1 &

参考:https://blog.csdn.net/guoyilongedu/article/details/42835931

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值