前言
本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的。最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注。
- 获取磁盘中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)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 群星.1995-坠入情网【宝丽金】【WAV+CUE】
- 群星《谁杀死了Hi-Fi音乐》涂鸦精品 [WAV+CUE][1G]
- 群星1998《宝丽金最精彩98》香港首版[WAV+CUE][1G]
- 汪峰《也许我可以无视死亡》星文[WAV+CUE][1G]
- 李嘉-1991《国语转调2》[天王唱片][WAV整轨]
- 蔡琴2008《金声回忆录101》6CD[环星唱片][WAV整轨]
- 群星《2024好听新歌36》AI调整音效【WAV分轨】
- 梁朝伟.1986-朦胧夜雨裡(华星40经典)【华星】【WAV+CUE】
- 方芳.1996-得意洋洋【中唱】【WAV+CUE】
- 辛欣.2001-放120个心【上海音像】【WAV+CUE】
- 柏菲·万山红《花开原野1》限量开盘母带ORMCD[低速原抓WAV+CUE]
- 柏菲·万山红《花开原野2》限量开盘母带ORMCD[低速原抓WAV+CUE]
- 潘安邦《思念精选集全纪录》5CD[WAV+CUE]
- 杨千嬅《千嬅新唱金牌金曲》金牌娱乐 [WAV+CUE][985M]
- 杨钰莹《依然情深》首版[WAV+CUE][1G]