shell脚本部分:

#!/bin/bash 主脚本
(./cem-demo_publish_front)
(./cem-demo_publish_backend) #!/bin/bash 后端脚本
cd /data/www/cem-base-demo && git pull && ./restart_all.sh #!/bin/bash 前端脚本
cd /data/www/cem-front-demo && rm -fr dist && git pull && npm run build
#cp /data/www/cem-front/index.html /data/www/cem-base/static/index_prod.html
cp -fr /data/www/cem-front-demo/dist /data/www/cem-base-demo/ #!/bin/bash restart_all.sh
python restart_port.py all 9060 4

Python  restart_port.py 文件

 # encoding=utf8

 import sys
import commands
import os
import re
import getpass
import time
import requests current_user = getpass.getuser() def get_pid(port):
output = commands.getoutput('ps aux|grep "[p]ython main.py"')
lines = output.split('\n')
ps_dict = {}
re_obj = re.compile(r'%s +(\d+).*main\.py (\d+)$' % current_user)
for line in lines:
result = re_obj.findall(line)
if not result:
continue
pid, port1 = result[0]
ps_dict[port1] = pid return ps_dict.get(str(port)) def usage():
print 'Usage: restart_port.py <port|all> <port_from> <process_number>'
sys.exit(1) def kill_port(port):
pid = get_pid(port)
if pid:
cmd = 'kill -9 %s' % pid
print 'killing process ...'
status, output = commands.getstatusoutput(cmd)
# time.sleep(2)
print 'process %s for port %s is killed' % (pid, port) def restart_port(port):
pid = get_pid(port)
if pid:
cmd = 'kill -9 %s' % pid
status, output = commands.getstatusoutput(cmd)
time.sleep(1)
cmd = 'nohup python main.py %s >> logs/p_%s.log &' % (
port, port)
# status,output = commands.getstatusoutput(cmd)
os.system(cmd) def check_port_is_health(port):
need_check = True
while need_check:
time.sleep(1)
try:
response = requests.get('http://127.0.0.1:%s' % port)
if response.status_code == 200:
need_check = False
else:
need_check = True
print 'response.status_code=', response.status_code
except Exception, e:
print 'port=', port, str(e)
need_check = True
if need_check:
print 'port=', port
restart_port(port) if __name__ == '__main__':
try:
port = sys.argv[1]
except:
usage() if port == 'all':
try:
port_from = int(sys.argv[2])
except:
usage() try:
process_number = int(sys.argv[3])
except:
usage() for port in range(port_from, port_from + process_number):
restart_port(port)
# check_port_is_health(port)
elif port == 'kill':
try:
port_from = int(sys.argv[2])
except:
usage() try:
process_number = int(sys.argv[3])
except:
usage() for port in range(port_from, port_from + process_number):
kill_port(port)
else:
restart_port(port)
check_port_is_health(port)

restart_port.py

Tornado + vue.js 前后端分离运行脚本的更多相关文章

  1. python django框架+vue.js前后端分离

    本文用于学习django+vue.js实现web前后端分离协作开发.以一个添加和删除数据库书籍应用为实例. django框架官方地址:https://www.djangoproject.com/ vu ...

  2. 全宇宙首个.NET5+Vue.js前后端分离以及业务模块化快速开发框架【NetModular】发布~

    最近.Net圈子很热闹啊,我也来凑凑,今天中午耗时长达半小时,把NetModular升级到了.NET5,详情查看分支https://github.com/iamoldli/NetModular/tre ...

  3. Flask & Vue 构建前后端分离的应用

    Flask & Vue 构建前后端分离的应用 最近在使用 Flask 制作基于 HTML5 的桌面应用,前面写过<用 Python 构建 web 应用>,借助于完善的 Flask ...

  4. gin+vue的前后端分离开源项目

    该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页 ...

  5. vue+springboot前后端分离实现单点登录跨域问题处理

    最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的.因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统.那就意味着做单点登 ...

  6. 一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器

    一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...

  7. docker-compose 部署 Vue+SpringBoot 前后端分离项目

    一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...

  8. SpringBoot+Jpa+SpringSecurity+Redis+Vue的前后端分离开源系统

    项目简介: eladmin基于 Spring Boot 2.1.0 . Jpa. Spring Security.redis.Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 ...

  9. 基于Vue的前后端分离项目实践

    一.为什么需要前后端分离 1.1什么是前后端分离  前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...

随机推荐

  1. CF R630 div2 1332 E Height All the Same

    LINK:Height All the Same 比赛的时候 被这道题给打自闭了 还有1个多小时的时候开始想 想了30min 无果 放弃治疗. 心态炸了 F不想看了 应该要把题目全看一遍的 下次不能这 ...

  2. c++ 模板类的 友元函数

    #pragma once #include <iostream> template <class T> class stack { template <class Ty& ...

  3. 为什么阿里规定需要在事务注解@Transactional中指定rollbackFor?

    作者:Mint6 来源:http://39sd.cn/53D5D Java阿里巴巴规范提示:方法[edit]需要在Transactional注解指定rollbackFor或者在方法中显示的rollba ...

  4. 20行代码教你用python给证件照换底色

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流.本文只是为了告诉大家:python其实有很多黑科技(牛逼的库),我们既可以用python处理工作中的一些事儿,同时我们也 ...

  5. 制作的excel表格如何放到微信公众号文章中?

    制作的excel表格如何放到微信公众号文章中? 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件 ...

  6. 极简 Node.js 入门 - 1.4 NPM & package.json

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  7. 【Python笔记】2020年7月30日练习【python用input函数输入一个列表】

    练习课题链接:廖雪峰-Python教程-高级特性-迭代 学习记录: 1.Python当中类似于 三目运算符 的应用 2.Python用input函数输入一个列表 代码实例:对用户输入的一组数字转化成l ...

  8. 【Spring注解驱动开发】使用@PropertySource加载配置文件,我只看这一篇!!

    写在前面 很多小伙伴都在问:冰河,你的Spring专题更新完了吗?怎么感觉像是写了一半啊?我:没有更新完呀,整个专题预计会有70多篇.那怎么更新了一半就去写别的了呢?那是因为有很多其他的小伙伴在后台留 ...

  9. 【Linux】添加Nginx代理配置只允许内部IP访问

    location / { index index.jsp; proxy_next_upstream http_500 http_502 http_503 http_504 error timeout ...

  10. JavaScript Object的defineProperty / getOwnPropertyDescriptor

    getOwnPropertyDescriptor and defineProperty function def (obj, key, val, enumerable) { Object.define ...