通过python启动java程序,挺方便的分享下。

https://www.cnblogs.com/montya/archive/2013/01/06/python.html
转发,未验证
通过python启动java程序,挺方便的分享下。

最近部署了java程序,刚开始用shell来启动,启动过程不友好也不方便,也没有守护进程。今年在整理资料的时候,发现了珍藏一套启动脚本。

挺方便的。记录下。以免忘记

这是我的java程序结构

一个jar文件,一个config配置文件 一个lib依赖包。

重点贴出 appStoreServer.py脚本代码

#!/usr/bin/python
import os, sys, time, commands

_program = 'appStoreServer.jar'
_daemon = 'appStoreServer.py'

def getProgramPid():
    result = commands.getoutput("ps aux | grep java \
        | grep %s | grep -v grep | awk '{print $2}'" % _program)
    return result

def getDaemonPid():
    result = commands.getoutput("ps aux | grep python \
        | grep '%s monitor' | grep -v grep | awk '{print $2}'" % _daemon)
    return result

def startProgram():
    p_pid = getProgramPid()
    if p_pid != '':
        print('It seems this program is already running...')
    else:
        print('Starting program...')
        if os.system('nohup java -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -Xmn256m \
        -cp %s:config/:lib/* com.xxxx.Bootstrap >> log/stdio.log 2>&1 &' % _program) == 0:
            print('start program successfully and pid is ' + getProgramPid())

def startDaemon():
    d_pid = getDaemonPid()
    if d_pid != '':
        print('It seems this daemon is already running...')
    else:
        print('Starting daemon...')
        if os.system('nohup python %s monitor >> log/daemon.log 2>&1 &' % _daemon) == 0:
            print('start daemon successfully and pid is ' + getDaemonPid())

def stopProgram():
    p_pid = getProgramPid()
    if p_pid == '':
        print('It seems this program is not running...')
    else:
        os.system('kill ' + p_pid)
        print('program stopped')

def stopDaemon():
    d_pid = getDaemonPid()
    if d_pid == '':
        print('It seems daemon is not running...')
    else:
        os.system('kill ' + d_pid)
        print('daemon stopped')

def monitor():
    while 1:
        time.sleep(10)
        p_pid = getProgramPid()
        if p_pid == '':
            print('It seems this program is not running. Start it now!')
            startProgram()

if __name__ == '__main__':
    if(len(sys.argv) == 2):
        args = sys.argv[1]
    else:
        args = raw_input('Enter args: ')

    logPath = os.path.curdir + os.sep + 'log'
    if not os.path.exists(logPath):
        os.mkdir(logPath)

    if args == 'start':
        startProgram()       
        startDaemon()
    elif args == 'stop':
        stopDaemon()
        stopProgram()
    elif args == 'restart':
        stopDaemon()
        stopProgram()
        time.sleep(3)
        startProgram()       
        startDaemon()
    elif args == 'monitor':
        monitor()
    else:
        print('nothing to do')  

  只需要修改你的jar 和main class 入口(这就是文中 com.xxx.bootstrap部分)。python调用了nuhop命令,退出终端也可以后台运行,挺方便的,重点的是还有daemo进程

修改了,开始启动 java程序

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值