Python:一个小小程序,如何删除一组进程,而且只提供程序名而不需要pid。

我们在shell下经常使用 'ps -e | grep name' 或者 ‘ps -e | awk '/name/ {print $1}'' 寻找一个进程的pid,然后通过 ' sudo kill -8 xxxx' 来删除这个进程(发现,'sudo killall name' 不能有效的删除进程)。但是有时候需要删除多个进程,要反复执行以上命令。bash可以很好地完成批量删除进程的任务。

但是这里我打算探讨一下python下的解决方法。这里用到了python的subprocess模块。

 1 #!/usr/bin/env python
 2 
 3 import os
 4 import sys
 5 import getopt
 6 import subprocess
 7 
 8 def usage():
 9     print "killnames ..."
10     sys.exit(2)
11 
12 def kill_names():
13     try:
14         opts, args=getopt.getopt(sys.argv[1:], "")
15     except GetoptError, err:
16         usage()
17 
18     if not args:
19         print "Please input process name"
20         sys.exit(2)
21     # join List to string
22     myparam="|".join(args)
23     # get the infos of working processes
24     myps=subprocess.Popen(["ps", "-e"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
25     # get List of pids
26     mypids=subprocess.Popen(["awk", "/%s/ {print $1}" %  myparam], stdin=myps.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0].strip().split("\n")
27 
28     for mypid in mypids:
29         os.system("sudo kill -8 %s" %s mypid)
30     
31         
32 if __name__=='__main__':
33     kill_names()

 

 

转载于:https://www.cnblogs.com/nathaninchina/archive/2012/04/28/python_kill_pids.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值