shellを使用してプロジェクトモデルがサーバにロードされているかどうかを監視し、ロードされていない場合はモデルを起動します.

1470 ワード

今日プロジェクトを配置する时、时にはプロジェクトの模型が落ちることがあることを発见して、あるいは人の流量が多い时に自动的に切断することができて、とても正常な使用に影响して、そのためshellを使ってプロジェクトの模型が切断するかどうかを监视する必要があって、もし切断するならば自动的に再开して、ネット上で少し调べて、みんなは书いても少なくなくて、ここで私は更にブロガーに自分の必要なのはブロガーとは違うので、自分が使っていることを記録しましょう.checkmodel.shと名付けました.
コードは次のとおりです.
#!/bin/bash
curl http://localhost:8000 &>/dev/null
if [ $? -eq 0 ];then
    echo `date "+%Y-%m-%d %H:%M:%S"` 'not stop' >>running.log
    exit 0
else
    last=`cat laststart.log`
    current=`date +%Y%m%d%H%M%S`
    current=$[current-100]
    if [ $current -gt $last ];then
      ps -ef |grep project |grep -v grep |awk '{print "kill -9",$2|"bash"}'#project       
      echo "restart"
      sleep 5
      echo `date "+%Y-%m-%d %H:%M:%S"` 'stoped restart !!!!' >>restart.log
      source /root/.bashrc
      source /root/anaconda3/bin/activate pro_env && nohup python /root/project/manage.py runserver 0.0.0.0:8000 >>/root/nohup.log 2>&1 & #              django   
      echo `date +%Y%m%d%H%M%S`> laststart.log
    fi
    exit 0
fi

checkmodel.shをlinux計画タスクに追加する必要があります.ここでは、このブロガーが書いた内容を参考にすることができます.詳しくはありますが、修正する必要があります./rootディレクトリの下に置きます.
1)crontab-e、中に入れる:
*/5 * * * * bash/root/checkmodel.sh
2)crondサービスを再起動して有効にする:
service crond restart
それからcrontab-lを使って存在するかどうかを確認したり、直接watch-n 0.1-d nvidia-smiなど5分間待ってプロジェクトが起きたかどうかを確認したりして、起きたらokになります.