python脚本简化jar操作命令
本篇和大家分享的是使用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操作命令相关推荐
- python脚本里执行jar包_python脚本简化jar操作命令
本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的.最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注. 获取磁 ...
- Jython-在JAVA调用Python脚本使用方法详解+示例代码
目录 前言 一.Jython简介 1.场景 2.下载 二.运用示例 构建Maven项目 构建java,运行python语句: 运行python脚本: 运行带有第三方库的Python脚本 转为jar包 ...
- 基于RDKit的Python脚本:SDF格式转SMILES格式
RDKit: Open-Source Cheminformatics Software http://www.rdkit.org/ 简化分子线性输入规范(SMILES)是一种用ASCII字符串明确描述 ...
- spark-submit提交python脚本过程记录
最近刚学习spark,用spark-submit命令提交一个python脚本,一开始老报错,所以打算好好整理一下用spark-submit命令提交python脚本的过程.先看一下spark-submi ...
- arcgis的python脚本-ArcGIS Python脚本使用
前文中我们介绍了在IDE中如何使用arcpy工具来建立脚本,建立脚本的目的是为了简化工作量并进行批处理,如何在ARCGIS环境中调用我们编写的脚本呢? 示例如下,分为几个方面:1.参数脚本的生成 2. ...
- python写linux脚本_Linux下设置python脚本文件为服务
(最简单的方式nohup python xxx.py) ------------------------------------------------------------------------ ...
- python 运行java jar包,从Python运行javajar文件的最快方法?
这是我的问题.我有一个现有的.jar文件,我必须在我的程序中使用.不过,这个程序是用Python编写的.在 由于我的程序需要很长时间才能运行(大型开发语料库上的命名实体标记器),所以我使用cProfi ...
- linux后台运行python脚本
&符号 这两天要在一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log & ...
- 在Java中动态传参调用Python脚本
最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...
最新文章
- 使用Python,OpenCV转换颜色空间,追踪对象的轨迹
- Java IO: System.in, System.out, System.err
- 在红帽中安装oracle,在红帽企业Linux 5.4中安装Oracle Database 10g
- windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载
- [swift] Async
- Sublime Text的使用技巧
- 分组背包基础--1712 ACboy needs your help
- 小米抢购限流峰值系统「大秒」架构解密2
- 能表示分数的计算机,分数计算器的实现
- Java黑皮书课后题第3章:*3.1(代数:解一元二次方程)可以使用下面的公式求一元二次方程ax2+bx+c=0,编写程序提示用户输入a b c的值,并显示基于判断式的结果
- Polly 重试策略
- oracel Pipelined pipe row的用法
- Linux环境下编译运行大型C语言项目
- 重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
- 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。...
- java五子棋人机对战_java swing人机对战五子棋
- 经纬度换算数值_经纬度换算
- 【JavaScript联系练习】实现一个打点计时器
- 君不密则失臣,臣不密则失身,机事不密则害成
- 物联网蓝牙芯片的选型
热门文章
- 拳王虚拟项目公社:网上做什么比较容易挣到钱?虚拟资源项目是赚钱的最佳选择
- FTP server的使用【原创】
- 一生里和你爱的人做完这50件事
- Java 编程下的并发线程之间的同步代码块死锁
- 程序员这样聊天,让女神疯狂追逐你
- 智慧讲台接收画板协议规划
- 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)
- 《转》ReentrantLock实现原理深入探究
- tail,more查看日志(定点和翻页)
- html的div块float后宽度无效,行内元素(例如)设置float之后才能用width调整宽度...