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. c++ explict

    explicit 用于一个参数的构造函数:防止隐式转换. 什么意思呢? myClass(int x); 这是个构造函数 我们可以使用 myClass a(4);  或 myClass a=4;来调用它 ...

  2. Android监听器无法跳转的可能原因之一。。。

    主菜前的厨师前言: 各位大牛,牛崽崽,这是本牛崽第一次写博客,牛崽崽我初出茅庐,但是我会很用心的写自己的每一份随笔,写的不好的大家见谅. 今天就来说说本牛崽在实现监听器时遇到的问题: 本牛崽因为也是刚 ...

  3. Typora 完美结合 PicGo,写作体验更佳!

    写在前面 在众多 md 编辑器中,Typora 是大家公认的体验较好的写作软件之一,它最大的特点就是:所见即所得,无须分屏预览,或者开启新页面预览.除此之外,还有很多优点,这里不做介绍,不是本文的重点 ...

  4. javascript 简单、繁杂类型、栈、堆笔记

    简单数据类型     值类型:在存储变量中的是值本身     简单数据类型 null返回的是空的对象     string,number,Boolean,undefined,null 繁杂数据类型   ...

  5. 使用JSPWiki丰富Unity-UPM包的使用

    1.简述 诸如npm.Nuget之类的包管理工具,Unity推出了自己的Unity Package Manager(UPM)工具来管理使用到的第三方库. 现在Unity Package Manager ...

  6. ASP.NET Core3.x 基础(1)

    ASP.NET Core与2.x相比发生的一些变化: 项目结构 Blazor SignalR gRPC 关于Program类:Main方法,在系统执行时就会找到这个Main方法,实际上是配置了ASP. ...

  7. C#设计模式之2-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/391 ...

  8. C#LeetCode刷题之#141-环形链表(Linked List Cycle)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3901 访问. 给定一个链表,判断链表中是否有环. 进阶: 你能否 ...

  9. web主题适配方案指北

    前置知识 在这里了解实现网页主题切换的相关知识. CSS 变量 要实现主题切换需要了解一点 css 自定义属性.当然,本文还提供了其他实现方式,为了不给您接下来的阅读带来阻碍,先了解它. 变量的声明 ...

  10. Jmeter 常用函数(6)- 详解 __P

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 和 __property 作用一样,不 ...