shell脚本部分:

  1. #!/bin/bash 主脚本
  2. (./cem-demo_publish_front)
  3. (./cem-demo_publish_backend)
  4.  
  5. #!/bin/bash 后端脚本
  6. cd /data/www/cem-base-demo && git pull && ./restart_all.sh
  7.  
  8. #!/bin/bash 前端脚本
  9. cd /data/www/cem-front-demo && rm -fr dist && git pull && npm run build
  10. #cp /data/www/cem-front/index.html /data/www/cem-base/static/index_prod.html
  11. cp -fr /data/www/cem-front-demo/dist /data/www/cem-base-demo/
  12.  
  13. #!/bin/bash restart_all.sh
  14. python restart_port.py all 9060 4

Python  restart_port.py 文件

  1. # encoding=utf8
  2.  
  3. import sys
  4. import commands
  5. import os
  6. import re
  7. import getpass
  8. import time
  9. import requests
  10.  
  11. current_user = getpass.getuser()
  12.  
  13. def get_pid(port):
  14. output = commands.getoutput('ps aux|grep "[p]ython main.py"')
  15. lines = output.split('\n')
  16. ps_dict = {}
  17. re_obj = re.compile(r'%s +(\d+).*main\.py (\d+)$' % current_user)
  18. for line in lines:
  19. result = re_obj.findall(line)
  20. if not result:
  21. continue
  22. pid, port1 = result[0]
  23. ps_dict[port1] = pid
  24.  
  25. return ps_dict.get(str(port))
  26.  
  27. def usage():
  28. print 'Usage: restart_port.py <port|all> <port_from> <process_number>'
  29. sys.exit(1)
  30.  
  31. def kill_port(port):
  32. pid = get_pid(port)
  33. if pid:
  34. cmd = 'kill -9 %s' % pid
  35. print 'killing process ...'
  36. status, output = commands.getstatusoutput(cmd)
  37. # time.sleep(2)
  38. print 'process %s for port %s is killed' % (pid, port)
  39.  
  40. def restart_port(port):
  41. pid = get_pid(port)
  42. if pid:
  43. cmd = 'kill -9 %s' % pid
  44. status, output = commands.getstatusoutput(cmd)
  45. time.sleep(1)
  46. cmd = 'nohup python main.py %s >> logs/p_%s.log &' % (
  47. port, port)
  48. # status,output = commands.getstatusoutput(cmd)
  49. os.system(cmd)
  50.  
  51. def check_port_is_health(port):
  52. need_check = True
  53. while need_check:
  54. time.sleep(1)
  55. try:
  56. response = requests.get('http://127.0.0.1:%s' % port)
  57. if response.status_code == 200:
  58. need_check = False
  59. else:
  60. need_check = True
  61. print 'response.status_code=', response.status_code
  62. except Exception, e:
  63. print 'port=', port, str(e)
  64. need_check = True
  65. if need_check:
  66. print 'port=', port
  67. restart_port(port)
  68.  
  69. if __name__ == '__main__':
  70. try:
  71. port = sys.argv[1]
  72. except:
  73. usage()
  74.  
  75. if port == 'all':
  76. try:
  77. port_from = int(sys.argv[2])
  78. except:
  79. usage()
  80.  
  81. try:
  82. process_number = int(sys.argv[3])
  83. except:
  84. usage()
  85.  
  86. for port in range(port_from, port_from + process_number):
  87. restart_port(port)
  88. # check_port_is_health(port)
  89. elif port == 'kill':
  90. try:
  91. port_from = int(sys.argv[2])
  92. except:
  93. usage()
  94.  
  95. try:
  96. process_number = int(sys.argv[3])
  97. except:
  98. usage()
  99.  
  100. for port in range(port_from, port_from + process_number):
  101. kill_port(port)
  102. else:
  103. restart_port(port)
  104. 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. 【问题记录】springMVC @Valid使用不生效问题

    问题描述 在网上找到如何使用@Valid注解后,就把用到的配置和jar包加上,然后测试发现一直不生效.下面是配置及解决方法 配置 1.引入依赖 2.添加相应的配置(springmvc配置文件) < ...

  2. 死磕abstractqueuedsynchronizer源码

    第一次写博客,先练练手. 1.AQS是什么? 在Lock中,用到了一个同步队列AQS,全称为AbstractQueuedSynchronizer,它是一个同步工具也是lock用来实现线程同步的核心组件 ...

  3. 分类模型的F1-score、Precision和Recall 计算过程

    分类模型的F1分值.Precision和Recall 计算过程 引入 通常,我们在评价classifier的性能时使用的是accuracy 考虑在多类分类的背景下 accuracy = (分类正确的样 ...

  4. 001_go语言中的hello world

    代码演示: package main import "fmt" func main() { fmt.Println("hello world") } 代码解读: ...

  5. 用Python一键生成炫酷九宫格图片,火了朋友圈

  6. VisualSVN Server修改默认端口号 443->8443

  7. spring boot中集成Redis

    1 pom.xml文件中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  8. Linux快速搭建C/C++开发环境

    导读:越来越多的程序员在Linux下进行C/C++的开发.本文以CentOS 7为例,教你快速搭建一个vi + gcc/g++ + Make + valgrind的开发环境. 本文字数:1500,阅读 ...

  9. Java—面向对象、类与对象、封装

    理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 面向对象的程序设计方式,是 ...

  10. Vue 父子组件表单同步校验

    子组件代码 // 子组件 validateForm() { return new Promise((resolve, reject) => { this.$refs.contractBaseRe ...