本篇和大家分享的是使用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 in filelist:
 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 #获取pid
2 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             pass
 6         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/python
 2 #coding=utf-8
 3 import os
 4 import subprocess
 5 from subprocess import check_output
 6
 7 all_list = []
 8
 9 class MoFileInfo:
10     def __init__(self,name,path):
11         self.name = name
12         self.path = path
13
14 #获取磁盘中jar启动包
15 def find_file_bypath(strDir):
16     filelist = os.listdir(strDir)
17     for file in filelist:
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 in enumerate(all_list):
27         print("{}. {}".format(index,x.name))
28
29 #获取pid
30 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     return response
35
36 #执行命令
37 def exec_file(index):
38     try:
39         if(index <= -1):
40             pass
41         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)

转载于:https://www.cnblogs.com/wangrudong003/p/10423548.html

python脚本简化jar操作命令相关推荐

  1. python脚本里执行jar包_python脚本简化jar操作命令

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

  2. Jython-在JAVA调用Python脚本使用方法详解+示例代码

    目录 前言 一.Jython简介 1.场景 2.下载 二.运用示例 构建Maven项目 构建java,运行python语句: 运行python脚本: 运行带有第三方库的Python脚本 转为jar包 ...

  3. 基于RDKit的Python脚本:SDF格式转SMILES格式

    RDKit: Open-Source Cheminformatics Software http://www.rdkit.org/ 简化分子线性输入规范(SMILES)是一种用ASCII字符串明确描述 ...

  4. spark-submit提交python脚本过程记录

    最近刚学习spark,用spark-submit命令提交一个python脚本,一开始老报错,所以打算好好整理一下用spark-submit命令提交python脚本的过程.先看一下spark-submi ...

  5. arcgis的python脚本-ArcGIS Python脚本使用

    前文中我们介绍了在IDE中如何使用arcpy工具来建立脚本,建立脚本的目的是为了简化工作量并进行批处理,如何在ARCGIS环境中调用我们编写的脚本呢? 示例如下,分为几个方面:1.参数脚本的生成 2. ...

  6. python写linux脚本_Linux下设置python脚本文件为服务

    (最简单的方式nohup python xxx.py) ------------------------------------------------------------------------ ...

  7. python 运行java jar包,从Python运行javajar文件的最快方法?

    这是我的问题.我有一个现有的.jar文件,我必须在我的程序中使用.不过,这个程序是用Python编写的.在 由于我的程序需要很长时间才能运行(大型开发语料库上的命名实体标记器),所以我使用cProfi ...

  8. linux后台运行python脚本

    &符号 这两天要在一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log & ...

  9. 在Java中动态传参调用Python脚本

    最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...

最新文章

  1. 使用Python,OpenCV转换颜色空间,追踪对象的轨迹
  2. Java IO: System.in, System.out, System.err
  3. 在红帽中安装oracle,在红帽企业Linux 5.4中安装Oracle Database 10g
  4. windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载
  5. [swift] Async
  6. Sublime Text的使用技巧
  7. 分组背包基础--1712 ACboy needs your help
  8. 小米抢购限流峰值系统「大秒」架构解密2
  9. 能表示分数的计算机,分数计算器的实现
  10. Java黑皮书课后题第3章:*3.1(代数:解一元二次方程)可以使用下面的公式求一元二次方程ax2+bx+c=0,编写程序提示用户输入a b c的值,并显示基于判断式的结果
  11. Polly 重试策略
  12. oracel Pipelined pipe row的用法
  13. Linux环境下编译运行大型C语言项目
  14. 重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
  15. 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。...
  16. java五子棋人机对战_java swing人机对战五子棋
  17. 经纬度换算数值_经纬度换算
  18. 【JavaScript联系练习】实现一个打点计时器
  19. 君不密则失臣,臣不密则失身,机事不密则害成
  20. 物联网蓝牙芯片的选型

热门文章

  1. 拳王虚拟项目公社:网上做什么比较容易挣到钱?虚拟资源项目是赚钱的最佳选择
  2. FTP server的使用【原创】
  3. 一生里和你爱的人做完这50件事
  4. Java 编程下的并发线程之间的同步代码块死锁
  5. 程序员这样聊天,让女神疯狂追逐你
  6. 智慧讲台接收画板协议规划
  7. 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)
  8. 《转》ReentrantLock实现原理深入探究
  9. tail,more查看日志(定点和翻页)
  10. html的div块float后宽度无效,行内元素(例如)设置float之后才能用width调整宽度...