def main(): today_day = datetime.date.today() templ = "%-10s %5s %5s %7s %7s %5s %6s %6s %6s %s" attrs = ['pid', 'memory_percent', 'name', 'cmdline', 'cpu_times', 'create_time', 'memory_info', 'status', 'nice', 'username'] print(templ % ("USER", "PID", "%MEM", "VSZ", "RSS", "NICE", "STATUS", "START", "TIME", "CMDLINE")) for p in psutil.process_iter(attrs, ad_value=None): if p.info['create_time']: ctime = datetime.datetime.fromtimestamp(p.info['create_time']) if ctime.date() == today_day: ctime = ctime.strftime("%H:%M") else: ctime = ctime.strftime("%b%d") else: ctime = '' if p.info['cpu_times']: cputime = time.strftime("%M:%S", time.localtime(sum(p.info['cpu_times']))) else: cputime = '' user = p.info['username'] if not user and psutil.POSIX: try: user = p.uids()[0] except psutil.Error: pass if user and psutil.WINDOWS and '\\' in user: user = user.split('\\')[1] if not user: user = '' user = user[:9] vms = bytes2human(p.info['memory_info'].vms) if \ p.info['memory_info'] is not None else '' rss = bytes2human(p.info['memory_info'].rss) if \ p.info['memory_info'] is not None else '' memp = round(p.info['memory_percent'], 1) if \ p.info['memory_percent'] is not None else '' nice = int(p.info['nice']) if p.info['nice'] else '' if p.info['cmdline']: cmdline = ' '.join(p.info['cmdline']) else: cmdline = p.info['name'] status = p.info['status'][:5] if p.info['status'] else '' line = templ % ( user, p.info['pid'], memp, vms, rss, nice, status, ctime, cputime, cmdline) print(line[:get_terminal_size()[0]])
def main(): num_cpus = psutil.cpu_count() if num_cpus > 8: num_cpus = 8 # try to fit into screen cpus_hidden = True else: cpus_hidden = False while True: # header clean_screen() cpus_percent = psutil.cpu_percent(percpu=True) for i in range(num_cpus): print("CPU %-6i" % i, end="") if cpus_hidden: print(" (+ hidden)", end="") print() for _ in range(num_cpus): print("%-10s" % cpus_percent.pop(0), end="") print() # processes procs = collections.defaultdict(list) for p in psutil.process_iter(['name', 'cpu_num']): procs[p.info['cpu_num']].append(p.info['name'][:5]) curr_line = 3 while True: for num in range(num_cpus): try: pname = procs[num].pop() except IndexError: pname = "" print("%-10s" % pname[:10], end="") print() curr_line += 1 if curr_line >= get_terminal_size()[1]: break time.sleep(1)
def main(): num_cpus = psutil.cpu_count() if num_cpus > 8: num_cpus = 8 # try to fit into screen cpus_hidden = True else: cpus_hidden = False while True: # header clean_screen() cpus_percent = psutil.cpu_percent(percpu=True) for i in range(num_cpus): print("CPU %-6i" % i, end="") if cpus_hidden: print(" (+ hidden)", end="") print() for _ in range(num_cpus): print("%-10s" % cpus_percent.pop(0), end="") print() # processes procs = collections.defaultdict(list) for p in psutil.process_iter(attrs=['name', 'cpu_num']): procs[p.info['cpu_num']].append(p.info['name'][:5]) curr_line = 3 while True: for num in range(num_cpus): try: pname = procs[num].pop() except IndexError: pname = "" print("%-10s" % pname[:10], end="") print() curr_line += 1 if curr_line >= get_terminal_size()[1]: break time.sleep(1)
def safe_print(s): s = s[:get_terminal_size()[0]] try: print(s) except UnicodeEncodeError: print(s.encode('ascii', 'ignore').decode())