This repository has been archived by the owner on Mar 3, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocessInfo.py
92 lines (80 loc) · 3.01 KB
/
processInfo.py
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
84
85
86
87
88
89
90
91
import psutil
class ProcessInfo(object):
"""
Helps to check if a given process/service is running.
"""
def __init__(self):
self.process_id = None
self.service_name = None
self.process_name = None
self.counter = 0
def get_process_status(self, process_name):
"""
Checks for the process is running on given machine and returns
True/False
:param process_name:
:return:
"""
self.process_name = process_name
self.process_id = self.get_process_id(self.process_name)
if self.process_id is None and self.counter > 0:
print "Process {} is stopped".format(self.process_name)
elif self.process_id is None and self.counter == 0:
print "Process {} is not running, please check your service " \
"launcher".format(self.process_name)
if psutil.pid_exists(self.process_id):
print "Process with pid {} exists".format(self.process_id)
return True
else:
print "Process with pid {} does not exist".format(self.process_id)
return False
def get_process_id(self, process_name):
"""
Get Process id of the given process name.
:param process_name:
:return:
"""
for p in psutil.process_iter():
if process_name in p.name():
self.process_id = p.pid
self.counter += 1
print "Process with name {} found , it has process " \
"id {} ".format(process_name, self.process_id)
return self.process_id
return None
@staticmethod
def get_multiple_process_id(process_name):
"""
Get pid numbers as list of a given process name.
This helps when there are multiple instances of process runs with
different PID's
:param process_name:
:return:
"""
process_ids = []
list_counter = 0
for p in psutil.process_iter():
if process_name in p.name():
process_id = p.pid
list_counter += 1
print "Process with name {} found , it has process " \
"id {} ".format(process_name, process_id)
process_ids.append(process_id)
print "we have {} Process ID's for Process Name {}".format(
list_counter, process_name)
return process_ids
def stop_process_by_id(self, process_name):
"""
Terminates the process by process name.
:param process_name:
:return:
"""
for p in psutil.process_iter():
if process_name in p.name():
print "Found process with name {}. We are now " \
"terminating this process".format(process_name)
self.process_id = p.pid
temp = psutil.Process(self.process_id)
temp.terminate()
return True
return False