python linux 杀进程,Python笔记:Linux和Windows下用python找到并杀死进程

如何使用python找到进程并杀死该进程,或者是确认某进程有没有在运行,这些功能的使用场景是很多的。

比如你的服务器上有一个服务脚本server.py需要运行某个程序去做某些操作,但是在脚本运行这个程序好半天没返回,多半是发生异常卡住了(这个情况在windows下太常见了),最有效的办法就是杀死这个异常进程,再去重新启动它。

实现类似的需求,在Windows和Linux两种服务器实现的方法可能稍有不同,上代码:

windows服务器

我们使用psutil这个包来快速定位进程,下面的示例中我们要找的软件是office word,进程名WINWORD.EXE。import psutil

import os

process_name = 'WINWORD.EXE'

allPid = psutil.pids()

for pid in allPid:

p = psutil.Process(pid)

print('pid-%s, pname-%s' % (pid, p.name()))

if p.name() == process_name:

print('杀死进程' + process_name)

cmd = 'taskkill /F /IM ' + process_name

os.system(cmd)

Linux服务器

在Linux服务器下当然也可以用psutil去根据进程名找到,然后杀死进程,但Linux下我们可以做到更好,比如同名进程python在执行两个不同的脚本,我们只想杀死其中这个叫ha.py的脚本,如示例中这样即可做到。import os

import re

process_name = 'python\ ha.py'

cmd = 'ps -ef | grep {0} | grep -v grep'.format(process_name)

print(cmd)

f = os.popen(cmd)

for line in f.readlines():

print(line)

line = line.replace("\n", "")

line = re.sub(' +', ' ', line)

if line != '':

res = line.split(' ')

print(res)

print('杀死进程' + process_name)

cmd2 = 'kill -9 ' + res[1]

# 使用os.system()

os.system(cmd2)

总结

稍微总结一下,为了使用准确找到进程,在不同的环境下我们使用了不同的方法,还用到了执行系统指令的方法os.system(),为了获取输出结果,用到了os.popen()命令,实际上这里还有另外一些方法,比如execfile()函数,还有官方推荐的subprocess模块,有兴趣的同学可以去了解一下。

Python笔记:Linux和Windows下用python找到并杀死进程

更多精彩,敬请关注本博微信公众号:hsu1943

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值