3
# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
4
# Use of this source code is governed by a BSD-style license that can be
5
# found in the LICENSE file.
10
USER PID %MEM VSZ RSS NICE STATUS START TIME CMDLINE
11
root 1 0.0 220.9M 6.5M sleep Mar27 09:10 /lib/systemd
12
root 2 0.0 0.0B 0.0B sleep Mar27 00:00 kthreadd
13
root 4 0.0 0.0B 0.0B -20 idle Mar27 00:00 kworker/0:0H
14
root 6 0.0 0.0B 0.0B -20 idle Mar27 00:00 mm_percpu_wq
15
root 7 0.0 0.0B 0.0B sleep Mar27 00:06 ksoftirqd/0
16
root 8 0.0 0.0B 0.0B idle Mar27 03:32 rcu_sched
17
root 9 0.0 0.0B 0.0B idle Mar27 00:00 rcu_bh
18
root 10 0.0 0.0B 0.0B sleep Mar27 00:00 migration/0
19
root 11 0.0 0.0B 0.0B sleep Mar27 00:00 watchdog/0
20
root 12 0.0 0.0B 0.0B sleep Mar27 00:00 cpuhp/0
21
root 13 0.0 0.0B 0.0B sleep Mar27 00:00 cpuhp/1
22
root 14 0.0 0.0B 0.0B sleep Mar27 00:01 watchdog/1
23
root 15 0.0 0.0B 0.0B sleep Mar27 00:00 migration/1
25
giampaolo 19704 1.5 1.9G 235.6M sleep 17:39 01:11 firefox
26
root 20414 0.0 0.0B 0.0B idle Apr04 00:00 kworker/4:2
27
giampaolo 20952 0.0 10.7M 100.0K sleep Mar28 00:00 sh -c /usr
28
giampaolo 20953 0.0 269.0M 528.0K sleep Mar28 00:00 /usr/lib/
29
giampaolo 22150 3.3 2.4G 525.5M sleep Apr02 49:09 /usr/lib/
30
root 22338 0.0 0.0B 0.0B idle 02:04 00:00 kworker/1:2
31
giampaolo 24123 0.0 35.0M 7.0M sleep 02:12 00:02 bash
38
from psutil._common import bytes2human
39
from psutil._compat import get_terminal_size
43
today_day = datetime.date.today()
45
templ = "%-10s %5s %5s %7s %7s %5s %6s %6s %6s %s"
46
attrs = ['pid', 'memory_percent', 'name', 'cmdline', 'cpu_times',
47
'create_time', 'memory_info', 'status', 'nice', 'username']
48
print(templ % ("USER", "PID", "%MEM", "VSZ", "RSS", "NICE",
49
"STATUS", "START", "TIME", "CMDLINE"))
51
for p in psutil.process_iter(attrs, ad_value=None):
52
if p.info['create_time']:
53
ctime = datetime.datetime.fromtimestamp(p.info['create_time'])
54
if ctime.date() == today_day:
55
ctime = ctime.strftime("%H:%M")
57
ctime = ctime.strftime("%b%d")
60
if p.info['cpu_times']:
61
cputime = time.strftime(
62
"%M:%S", time.localtime(sum(p.info['cpu_times']))
67
user = p.info['username']
68
if not user and psutil.POSIX:
73
if user and psutil.WINDOWS and '\\' in user:
74
user = user.split('\\')[1]
79
bytes2human(p.info['memory_info'].vms)
80
if p.info['memory_info'] is not None
84
bytes2human(p.info['memory_info'].rss)
85
if p.info['memory_info'] is not None
89
round(p.info['memory_percent'], 1)
90
if p.info['memory_percent'] is not None
93
nice = int(p.info['nice']) if p.info['nice'] else ''
95
cmdline = ' '.join(p.info['cmdline'])
97
cmdline = p.info['name']
98
status = p.info['status'][:5] if p.info['status'] else ''
112
print(line[: get_terminal_size()[0]])
115
if __name__ == '__main__':