btf/btfhive/psSentry.py (38 lines of code) (raw):

# -*- coding: utf-8 -*- # cython:language_level=3 """ ------------------------------------------------- File Name: psSentry Description : Author : liaozhaoyan date: 2022/1/24 ------------------------------------------------- Change Activity: 2022/1/24: ------------------------------------------------- """ __author__ = 'liaozhaoyan' import psutil import time class CpsSentry(object): def __init__(self): super(CpsSentry, self).__init__() self._gdbd = {} def proc(self): pids = psutil.pids() idL = [] for p in pids: try: task = psutil.Process(p) except psutil.NoSuchProcess: continue comm = " ".join(task.cmdline()) if comm.startswith("gdb") and (comm.endswith("ko") or comm.endswith("ko.debug")): idL.append(task.pid) if task.pid in self._gdbd.keys(): self._gdbd[task.pid] += 1 if self._gdbd[task.pid] > 8: print(f"need too kill {task.pid}, {comm}, {self._gdbd[task.pid]}") try: task.kill() except (psutil.NoSuchProcess, FileNotFoundError): continue else: self._gdbd[task.pid] = 1 gL = list(self._gdbd.keys()) for k in gL: if k not in idL: del self._gdbd[k] if __name__ == "__main__": ps = CpsSentry() while True: ps.proc() time.sleep(60) pass