python怎么转换jar包(利用python脚本如何简化jar操作命令)
类别:脚本大全 浏览量:1508
时间:2022-01-21 00:05:27 python怎么转换jar包
利用python脚本如何简化jar操作命令前言
本篇和大家分享的是使用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) |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对开心学习网的支持。
原文链接:https://www.cnblogs.com/wangrudong003/p/10423548.html
您可能感兴趣
- cuda安装包下载慢(Manjaro安装CUDA实现教程解析)
- 怎么把jar包部署到tomcat(使用tomcat设定shared lib共享同样的jar)
- python怎么转换jar包(利用python脚本如何简化jar操作命令)
- docker jdk离线安装(docker安装openjdk并运行jar包的操作方法)
- springboot docker 部署(详解docker部署SpringBoot及替换jar包的方法)
- springboot启动内置tomcat(解决spring boot + jar打包部署tomcat 404错误问题)
- 靳东新剧《精英律师》定档,众星云集,这剧可追(靳东新剧精英律师定档)
- 精英律师 廖佳敏封印恋情曝光,顾婕马失前蹄 你个老不死的(廖佳敏封印恋情曝光)
- 以家人之名广受好评,剧情生动引起观众共鸣,演员张新成圈粉无数(以家人之名广受好评)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
热门推荐
- mysql存储json的方式(MySQL中查询json格式的字段实例详解)
- angular引入组件库(详解Angular组件之中间人模式)
- php数据库怎么获得表单(php如何把表单内容提交到数据库)
- ASP.NET cache缓存的用法
- phpstorm代码模板(phpStorm+XDebug+chrome 配置详解)
- python读取数据集的图片(浅析Python 读取图像文件的性能对比)
- apache配置讲解(apache中封IP的实现方法)
- win7 ftp服务器怎么搭建(win7下利用IIS搭建FTP服务器)
- dedecms文章标题(dedecms5.7后台发布文章提示“标题不能为空”的解决方法)
- css弹出遮罩层页面不可滑动(Html5页面点击遮罩层背景关闭遮罩层)