Ticket #4687: pkill.py

File pkill.py, 2.4 KB (added by leszek, 11 years ago)
Line 
1#!/boot/common/bin/python
2#
3# Copyright (c) 2009
4# Leszek Lesner. All rights reserved. Released under the BSD License.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# 3. All advertising materials mentioning features or use of this software
15# must display the following acknowledgement:
16# This product includes software developed by Leszek Lesner.
17# 4. Neither the name of the Author
18# may be used to endorse or promote products derived from this software
19# without specific prior written permission.
20#
21# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31# SUCH DAMAGE.
32#/
33
34import commands
35import os,sys,string
36import re
37
38def pkill():
39 if len(sys.argv) <= 1:
40 print "usage: " + sys.argv[0] + " process_name"
41 sys.exit(1)
42 rip = sys.argv[1]
43 me = commands.getoutput("whoami")
44 p = commands.getoutput("ps")
45 # DEBUG print p
46 ids = p.split("\n")
47 for id in ids:
48 if id.find(rip) < 0:
49 continue
50 regex = re.compile(r'(\d+).*',re.I)
51 id = regex.sub(r'\1', id)
52 print "killing: %s\n" % id
53 commands.getoutput("kill -15 %s" % id)
54 if commands.getoutput("ps").find(id) > -1:
55 print "try killing hardly: %s\n" % id
56 commands.getoutput("kill -9 %s" % id)
57if __name__ == '__main__' :
58 pkill()