这篇文章将为大家详细讲解有关利用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操作命令”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。