#!/usr/bin/python3 from time import sleep from glob import glob import os import signal from multiprocessing.dummy import Pool as ThreadPool white_list = ['sshd', 'systemd', 'lightdm', 'dhclient', 'Xorg'] with open('/proc/meminfo') as file: mem_list = file.readlines() for i in range(len(mem_list)): if mem_list[i].find('SwapTotal') == 0: swap_total_pos = i break mem_total = int(mem_list[0].split(':')[1].split(' ')[-2]) mem_available = int(mem_list[2].split(':')[1].split(' ')[-2]) swap_total = int(mem_list[swap_total_pos].split(':')[1].split(' ')[-2]) swap_free = int(mem_list[swap_total_pos + 1].split(':')[1].split(' ')[-2]) mem_free_pro = (mem_available + swap_free) / (mem_total + swap_total) * 100 subdirs = glob('/proc/*/') subdirs.remove('/proc/self/') subdirs.remove('/proc/thread-self/') proc_list = [] for subdir in subdirs: proc = [] try: with open(subdir + 'status') as file: status = file.readlines() proc.append(status[5].split(':')[1][1:-1]) # pid proc.append(status[0].split(':')[1][1:-1]) # name except Exception: pass try: with open(subdir + 'oom_score') as file: oom_score = file.readlines() proc.append(int(oom_score[0][0:-1])) # oom score except Exception: pass if proc != []: proc_list.append(proc) #print(proc_list) proc_list_by_oom_score = sorted(proc_list, key=lambda x: x[2], reverse=True) for i in proc_list_by_oom_score[:]: print(i) for i in proc_list_by_oom_score[:]: print(i)