【python】使用python脚本启动或重启java应用
【需求】
某java应用是以jar包执行在linux服务器上,每次用新包替换旧包后,需要先用命令“ps -ef|grep dce”找出已经执行的pid,然后用“kill -9 pid”来关掉启动的应用,再执行“./startup.sh -s 8192m -x 8192m -j dce-webapp-datam.jar”启动此应用。
以上查找、关闭、启动三部曲稍显麻烦,希望能写一个脚本一次性执行完它们。
【解决方案】
使用python脚本能完成此任务,其中:
os模块的system命令能执行linux命令
os模块的popen指令能执行linux命令并获得管道输出
re模块的match指令能查找pid和cmd
有此三项加上python的列表和字典就能完成任务。
【代码】
import os import re # 执行ps命令,获得管道输出,用正则式找到pid和命令放入字典 dic={} pattern='\w+\s+(\d+)\s+(.*)' lines=os.popen('ps -ef|grep dce').readlines() for line in lines: matcher=re.match(pattern,line) pid=matcher.group(1) cmd=matcher.group(2) dic[pid]=cmd # 在字典值中找指定项,找了以字典键kill for key,value in dic.items(): if value.find('dce-webapp-datam.jar')!=-1: os.system('kill -9 '+key) # 再次启动应用 os.system('./startup.sh -s 8192m -x 8192m -j dce-webapp-datam.jar')
【参考资料】