File: //proc/self/root/lib/fm-agent/library/process_manager.py
import pwd
import os
class ProcessManager(object):
def get_process_from_user(self, pids, username):
"""
Return only the pids belonging to certain username.
"""
filtered_pids = [
pid
for pid in pids
if os.path.isdir("/proc/%s" % pid)
if self.get_owner_name("/proc/%s" % pid) == username
]
return filtered_pids
def get_owner_name(self, pid):
"""
Return the owner name of the passed pid.
"""
try:
return pwd.getpwuid(os.stat(pid).st_uid)[0]
except os.error:
return None
def filter_non_pid_process(self, process_list):
"""
Filter non pid process from the list, by checking that they are
castable to integers.
"""
return list(filter(str.isdigit, process_list))