python读取jar_利用python脚本怎么简化jar操作命令

利用python脚本怎么简化jar操作命令

发布时间:2021-02-05 11:46:49

来源:亿速云

阅读:79

作者:小新

这篇文章将为大家详细讲解有关利用python脚本怎么简化jar操作命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

前言

使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的获取磁盘中jar启动包

获取某个程序进程pid

自定义jar操作命令

获取磁盘中jar启动包

这一步骤主要扫描指定磁盘中待启动的jar包,然后获取其路径,方便后面操作java命令:#获取磁盘中jar启动包

def find_file_bypath(strDir):

filelist = os.listdir(strDir)

for file in filelist:

if os.path.isdir(strDir + "/" + file):

find_file_bypath(strDir + "/" + file)

else:

if(file.find(".jar") >= 0):

fileInfo = MoFileInfo(file,strDir + "/" + file)

all_list.append(fileInfo)

这个递归获取路径就不多说了,可以参考前一篇文章

获取某个程序进程pid

在linux中获取某个程序pid并打印出来通常的命令是:1 ps -ef | grep 程序名字

在py工具中同样用到了grep命令,通过执行linux命令获取相对应的pid值:#获取pid

def get_pid(name):

child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)

response = child.communicate()[0]

print(response)

return response

这里直接取的第一个值,因为上面第一节已经能够定位到程序jar包的名字,所以获取pid很容易

自定义jar操作命令

自定义其实就是用我们随便定义的单词或关键字来代替jar包操作命令,这里我封装了有5种,分别如下:nr:nohup java -jar {} 2>&1 &

r:java -jar {}

k:kill -9 {}

d:rm -rf {}

kd:kill -9 {}

{}代表的是pid和jar包全路径,相关代码:#执行命令

def exec_file(index):

try:

if(index <= -1):

pass

else:

fileInfo = all_list[int(index)]

print("你选择的是:{}".format(fileInfo.path))

strcmd = raw_input("请输入执行命令(nr:nohup启动java r:java启动 k:kill d:删除java包 kd:kill+删除jar包):\r\n")

if(strcmd == "nr"):

os.system("nohup java -jar {} 2>&1 & ".format(fileInfo.path))

elif(strcmd == "r"):

os.system("java -jar {}".format(fileInfo.path))

elif(strcmd == "k"):

pid = get_pid(fileInfo.name)

print("pid:" + pid)

strcmd_1 = "kill -9 {}".format(pid)

exec_cmd(strcmd_1)

elif(strcmd == "d"):

strcmd_1 = "rm -rf {}".format(fileInfo.path)

exec_cmd(strcmd_1)

elif(strcmd == "kd"):

pid = get_pid(fileInfo.name)

strcmd_1 = "kill -9 {}".format(pid)

exec_cmd(strcmd_1)

strcmd_1 = "rm -rf {}".format(fileInfo.path)

exec_cmd(strcmd_1)

else:

print("无任何操作")

except:

print("操作失败")

这里python操作linux命令用到的方式是os.system(command),这样已定保证了linux命令执行成功后才继续下一步的操作;下面是本次分享内容的全部代码:#!/usr/bin/python

#coding=utf-8

import os

import subprocess

from subprocess import check_output

all_list = []

class MoFileInfo:

def __init__(self,name,path):

self.name = name

self.path = path

#获取磁盘中jar启动包

def find_file_bypath(strDir):

filelist = os.listdir(strDir)

for file in filelist:

if os.path.isdir(strDir + "/" + file):

find_file_bypath(strDir + "/" + file)

else:

if(file.find(".jar") >= 0):

fileInfo = MoFileInfo(file,strDir + "/" + file)

all_list.append(fileInfo)

def show_list_file():

for index,x in enumerate(all_list):

print("{}. {}".format(index,x.name))

#获取pid

def get_pid(name):

child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)

response = child.communicate()[0]

print(response)

return response

#执行命令

def exec_file(index):

try:

if(index <= -1):

pass

else:

fileInfo = all_list[int(index)]

print("你选择的是:{}".format(fileInfo.path))

strcmd = raw_input("请输入执行命令(nr:nohup启动java r:java启动 k:kill d:删除java包 kd:kill+删除jar包):\r\n")

if(strcmd == "nr"):

os.system("nohup java -jar {} 2>&1 & ".format(fileInfo.path))

elif(strcmd == "r"):

os.system("java -jar {}".format(fileInfo.path))

elif(strcmd == "k"):

pid = get_pid(fileInfo.name)

print("pid:" + pid)

strcmd_1 = "kill -9 {}".format(pid)

exec_cmd(strcmd_1)

elif(strcmd == "d"):

strcmd_1 = "rm -rf {}".format(fileInfo.path)

exec_cmd(strcmd_1)

elif(strcmd == "kd"):

pid = get_pid(fileInfo.name)

strcmd_1 = "kill -9 {}".format(pid)

exec_cmd(strcmd_1)

strcmd_1 = "rm -rf {}".format(fileInfo.path)

exec_cmd(strcmd_1)

else:

print("无任何操作")

except:

print("操作失败")

def exec_cmd(strcmd):

str = raw_input("是否执行命令(y/n):" + strcmd + "\r\n")

if(str == "y"):

os.system(strcmd)

strDir = raw_input("请输入jar所在磁盘路径(默认:/root/job):\r\n")

strDir = strDir if (len(strDir) > 0) else "/root/job"

#获取运行包

find_file_bypath(strDir)

#展示运行包

show_list_file()

#选择运行包

strIndex = raw_input("请选择要运行的编号:\r\n")

#执行命令

exec_file(strIndex)

关于“利用python脚本怎么简化jar操作命令”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值