本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的。最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注。

获取磁盘中jar启动包

获取某个程序进程pid

自定义jar操作命令

获取磁盘中jar启动包

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

1 #获取磁盘中jar启动包2 def find_file_bypath(strDir):3 filelist =os.listdir(strDir)4 for file infilelist:5 if os.path.isdir(strDir + "/" +file):6 find_file_bypath(strDir + "/" +file)7 else:8 if(file.find(".jar") >= 0):9 fileInfo = MoFileInfo(file,strDir + "/" +file)10 all_list.append(fileInfo)

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

获取某个程序进程pid

在linux中获取某个程序pid并打印出来通常的命令是:

1 ps -ef | grep 程序名字

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

1 #获取pid2 def get_pid(name):3 child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)4 response = child.communicate()[0]5 print(response)6 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包全路径,相关代码:

1 #执行命令2 def exec_file(index):3 try:4 if(index <= -1):5 pass6 else:7 fileInfo = all_list[int(index)]8 print("你选择的是:{}".format(fileInfo.path))9 strcmd = raw_input("请输入执行命令(nr:nohup启动java r:java启动 k:kill d:删除java包 kd:kill+删除jar包):\r\n")10 if(strcmd == "nr"):11 os.system("nohup java -jar {} 2>&1 &".format(fileInfo.path))12 elif(strcmd == "r"):13 os.system("java -jar {}".format(fileInfo.path))14 elif(strcmd == "k"):15 pid =get_pid(fileInfo.name)16 print("pid:" +pid)17 strcmd_1 = "kill -9 {}".format(pid)18 exec_cmd(strcmd_1)19 elif(strcmd == "d"):20 strcmd_1 = "rm -rf {}".format(fileInfo.path)21 exec_cmd(strcmd_1)22 elif(strcmd == "kd"):23 pid =get_pid(fileInfo.name)24 strcmd_1 = "kill -9 {}".format(pid)25 exec_cmd(strcmd_1)26

27 strcmd_1 = "rm -rf {}".format(fileInfo.path)28 exec_cmd(strcmd_1)29 else:30 print("无任何操作")31 except:32 print("操作失败")

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

1 #!/usr/bin/python2 #coding=utf-8

3 import os4 import subprocess5 fromsubprocess import check_output6

7 all_list =[]8

9 classMoFileInfo:10 def __init__(self,name,path):11 self.name =name12 self.path =path13

14 #获取磁盘中jar启动包15 def find_file_bypath(strDir):16 filelist =os.listdir(strDir)17 for file infilelist:18 if os.path.isdir(strDir + "/" +file):19 find_file_bypath(strDir + "/" +file)20 else:21 if(file.find(".jar") >= 0):22 fileInfo = MoFileInfo(file,strDir + "/" +file)23 all_list.append(fileInfo)24

25 def show_list_file():26 for index,x inenumerate(all_list):27 print("{}. {}".format(index,x.name))28

29 #获取pid30 def get_pid(name):31 child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)32 response = child.communicate()[0]33 print(response)34 returnresponse35

36 #执行命令37 def exec_file(index):38 try:39 if(index <= -1):40 pass41 else:42 fileInfo = all_list[int(index)]43 print("你选择的是:{}".format(fileInfo.path))44 strcmd = raw_input("请输入执行命令(nr:nohup启动java r:java启动 k:kill d:删除java包 kd:kill+删除jar包):\r\n")45 if(strcmd == "nr"):46 os.system("nohup java -jar {} 2>&1 &".format(fileInfo.path))47 elif(strcmd == "r"):48 os.system("java -jar {}".format(fileInfo.path))49 elif(strcmd == "k"):50 pid =get_pid(fileInfo.name)51 print("pid:" +pid)52 strcmd_1 = "kill -9 {}".format(pid)53 exec_cmd(strcmd_1)54 elif(strcmd == "d"):55 strcmd_1 = "rm -rf {}".format(fileInfo.path)56 exec_cmd(strcmd_1)57 elif(strcmd == "kd"):58 pid =get_pid(fileInfo.name)59 strcmd_1 = "kill -9 {}".format(pid)60 exec_cmd(strcmd_1)61

62 strcmd_1 = "rm -rf {}".format(fileInfo.path)63 exec_cmd(strcmd_1)64 else:65 print("无任何操作")66 except:67 print("操作失败")68

69 def exec_cmd(strcmd):70 str = raw_input("是否执行命令(y/n):" + strcmd + "\r\n")71 if(str == "y"):72 os.system(strcmd)73

74 strDir = raw_input("请输入jar所在磁盘路径(默认:/root/job):\r\n")75 strDir = strDir if (len(strDir) > 0) else "/root/job"

76 #获取运行包77 find_file_bypath(strDir)78 #展示运行包79 show_list_file()80 #选择运行包81 strIndex = raw_input("请选择要运行的编号:\r\n")82 #执行命令83 exec_file(strIndex)

python脚本里执行jar包_python脚本简化jar操作命令相关推荐

  1. python文件转换成jar包_Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 今天的这篇文章,聊一个轩辕君之前工作中遇到的需求:如何在Jav ...

  2. java生成jar包时使第三方jar_IEDA生成可运行jar包(包含第三方jar包)的方法

    最近现网需要处理一下数据,来适配一个场景.安排我来编写一个脚本来实现,由于步骤比较多,且需要调用其他服务接口,使用shell脚本来实现比较困难,所以想到了使用shell脚本调用java可执行jar包的 ...

  3. java开发常用jar包_java开发常用jar包

    mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.ja ...

  4. java发送邮件所需jar包_javamail 发邮件所需jar 包两个 activation.jar,mail.jar | 学步园...

    javamail 所需jar 包两个 activation.jar,mail.jar(放在邮箱里了) index.jsp 填写相关信息.用来发邮件的邮箱和密码一定要写对 发送电子邮件 发送电子邮件 收 ...

  5. 命令启动jar包_java项目打jar包,一句命令搞定

    jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名 其中{ctxu}这四个参数必须选选其一. [v f m e 0 M i ]是可选参数,文件名也是必须 ...

  6. java jar合并_多个jar包合并成一个jar包(ant)

    https://blog.csdn.net/gzl003csdn/article/details/53539133 多个jar包合并成一个jar 使用Apache的Ant是一个基于Java的生成工具. ...

  7. idea 打 jar 包,包含第三方 jar 包

    1.先把 外部 jar 包加入到环境中,如下图: 依赖如下: <dependency><groupId>org.apache.commons.lang</groupId& ...

  8. 将多个jar包合并为一个jar包

    将多个jar包合并为一个jar包 准备工作: 新建一个文件夹,将需要合并的jar包放到同一个文件夹中,cmd移动到jar包所在文件夹 1.解压所有jar包 在命令行输入:jar –xvf xx.jar ...

  9. 什么是Java jar包?怎么打jar包?怎么运行jar包

    不知道有没有新人有我这样的疑问.导师给个任务"来看看这个jar包能不能跑",我一脸蒙蔽,啥是jar包啊?这里我就记录一下自己搞清楚啥是jar包时候的一些学习的资料. 首先我推荐去看 ...

最新文章

  1. 区块链公司发现BCH团队比BTC团队更容易接近
  2. Android 即时通讯开发小结(二)
  3. 前端学习(1435):vue能做什么
  4. python requests 上传文件_Python requests上传文件实现步骤
  5. springcloud使用zipkin和rabbitmq进行服务链路追踪
  6. LayuiAdmin 滚动条设置问题解决
  7. MD9 入门 制作衣服 笔记
  8. unity 中文 离线文档下载安装
  9. 简单循迹小车实验心得_智能小车实验报告
  10. 新电视显示服务器失败,电视网络连接失败原因是什么
  11. 2021年山西省粮食种植面积增长,夏粮获大丰收,但因秋粮遭遇自然灾害粮食产量下降[图]
  12. 大数据技术的发展现状和应用前景
  13. PAT --- 1068.万绿丛中一点红 (20 分)
  14. 渴望成长的工程师-你了解一万小时定律吗
  15. 每一题-101(患某种疾病的患者)
  16. android照片涂抹功能,android照片涂画功能实现过程及原理
  17. Web前端——移动端页面开发
  18. 2017 高级职称计算机,2017年高级职称计算机预习:对话框的组成和操作
  19. 公司KPI考核代码行数,程序员神操作:10行变500行!
  20. 通达OA前台任意用户登录漏洞+RCE漏洞复现

热门文章

  1. 【原创】再来二频,发现改变的东西太多了。
  2. c++ API 设置桌面图标 自动排列图标 网格对齐 snaptogrid
  3. SQL安装中常出现的问题与解决方法
  4. latex normal是几号字_LaTeX入门(四)——文字
  5. 易中天经典语录:这年头不弱智怎么当领导
  6. Java实现 LeetCode 322 零钱兑换
  7. 使用国内镜像网站解决github clone速度慢问题
  8. 光学仿真2020-12-09
  9. python重要的第三方库pandas模块常用函数解析之DataFrame
  10. 【先楫HPM6750系列】HPM SDK开发环境搭建和Hello World