gpt4 book ai didi

利用python脚本如何简化jar操作命令

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章利用python脚本如何简化jar操作命令由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

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

  • 获取磁盘中jar启动包
  • 获取某个程序进程pid
  • 自定义jar操作命令

获取磁盘中jar启动包 。

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

?
1
2
3
4
5
6
7
8
9
10
#获取磁盘中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值:

?
1
2
3
4
5
6
#获取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包全路径,相关代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#执行命令
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命令执行成功后才继续下一步的操作;下面是本次分享内容的全部代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/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 。

最后此篇关于利用python脚本如何简化jar操作命令的文章就讲到这里了,如果你想了解更多关于利用python脚本如何简化jar操作命令的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com