在服务器上部署SpringBoot 项目时,因为是打的 jar 包,还得 kill 掉原来的进程再重新部署,过于麻烦就写了一个自动化的脚本来完成这个功能。(需要 Python 环境)其中一些路径可根据实际情况进行配置。jvm 参数也可以进行适当调整!
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os,sys,time,commands
from sys import argvtimes = time.strftime('%Y年%m月%d日%H:%M:%S')
_jdkpath_ = '填写你的JDK路径'
_processpath_ = 'jar包名字'
_fileDir_ = 'jar包所在路径'
_jarpath_ = _fileDir_ + _processpath_
_logpath_ = _fileDir_ + '日志路径'
_gclog_ = _fileDir_ + 'gc日志路径'
_jarvar_ = '-Xms256m -Xmx640m -Xss256K -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseAdaptiveSizePolicy'def getpid():pid = commands.getoutput("ps aux | grep %s | grep -v grep | awk '{print $2}'" % _processpath_)return piddef _status_():j_pid = getpid()if j_pid == '':print("%s没有运行" % _processpath_)else :print("%s进程pid值:" % _processpath_ + getpid())def _start_():j_pid = getpid()if j_pid != '':print("%s已经在运行..." % _processpath_)else :print("启动%s......" % _processpath_)time.sleep(4)if os.system('%s -jar -XX:+PrintGCDetails -Xloggc:%s %s %s > %s 2>&1 &' % (_jdkpath_,_gclog_,_jarvar_,_jarpath_,_logpath_)) == 0:print("启动%s成功,进程pid值:" % _processpath_ + getpid())def _stop_():s_pid = getpid()if s_pid == '':print("%s没有运行" % _processpath_)else :print("关闭%s......" % _processpath_)os.system('kill -9 ' + s_pid)os.system('echo "">%s && echo "">%s' % (_gclog_,_logpath_))time.sleep(2)if s_pid != '0':print("关闭%s成功" % _processpath_)else :print("关闭%s失败" % _processpath_)def _restart_():_stop_()time.sleep(2)_start_()if argv == "-h" or argv == "--help" or len(argv)==1:print "???请别害怕,这只是个简单的脚本,对应用和系统都是无损的???\n%s,温馨提示用法:%s {start|stop|restart|status}" % (times,argv[0])elif argv[1] == 'start':_start_()
elif argv[1] == 'stop':_stop_()
elif argv[1] == 'restart':_restart_()
elif argv[1] == 'status':_status_()
else: print "???请别害怕,这只是个简单的脚本,对应用和系统都是无损的???\n%s,温馨提示用法:%s {start|stop|restart|status}" % (times,argv[0])