在服务器上部署SpringBoot 项目时,因为是打的 jar 包,还得 kill 掉原来的进程再重新部署,过于麻烦就写了一个自动化的脚本来完成这个功能。(需要 Python 环境)其中一些路径可根据实际情况进行配置。jvm 参数也可以进行适当调整!
[code]#!/usr/bin/python
# -*- coding:utf-8 -*-
import os,sys,time,commands
from sys import argv
times = 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 pid
def _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])