diff options
| author | Giampaolo Rodola <g.rodola@gmail.com> | 2016-05-01 15:15:02 +0200 |
|---|---|---|
| committer | Giampaolo Rodola <g.rodola@gmail.com> | 2016-05-01 15:15:02 +0200 |
| commit | 1b600a502d307dd2478eeb6423bc38bc0a2c50f1 (patch) | |
| tree | ac599cae3f3769944fb4a704b4b885c7138e1ab4 /scripts/procsmem.py | |
| parent | 388e82f5de65d536728a8f047ece392b3667e024 (diff) | |
| download | psutil-1b600a502d307dd2478eeb6423bc38bc0a2c50f1.tar.gz | |
update doc and apply oneshot() where necessary
Diffstat (limited to 'scripts/procsmem.py')
| -rwxr-xr-x | scripts/procsmem.py | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/scripts/procsmem.py b/scripts/procsmem.py index 494fd6ab..7c14dca3 100755 --- a/scripts/procsmem.py +++ b/scripts/procsmem.py @@ -61,41 +61,42 @@ def main(): ad_pids = [] procs = [] for p in psutil.process_iter(): - try: - mem = p.memory_full_info() - info = p.as_dict(attrs=["cmdline", "username"]) - except psutil.AccessDenied: - ad_pids.append(p.pid) - except psutil.NoSuchProcess: - pass - else: - p._uss = mem.uss - p._rss = mem.rss - if not p._uss: - continue - p._pss = getattr(mem, "pss", "") - p._swap = getattr(mem, "swap", "") - p._info = info - procs.append(p) - - procs.sort(key=lambda p: p._uss) - templ = "%-7s %-7s %-30s %7s %7s %7s %7s" - print(templ % ("PID", "User", "Cmdline", "USS", "PSS", "Swap", "RSS")) - print("=" * 78) - for p in procs: - line = templ % ( - p.pid, - p._info["username"][:7], - " ".join(p._info["cmdline"])[:30], - convert_bytes(p._uss), - convert_bytes(p._pss) if p._pss != "" else "", - convert_bytes(p._swap) if p._swap != "" else "", - convert_bytes(p._rss), - ) - print(line) - if ad_pids: - print("warning: access denied for %s pids" % (len(ad_pids)), - file=sys.stderr) + with p.oneshot(): + try: + mem = p.memory_full_info() + info = p.as_dict(attrs=["cmdline", "username"]) + except psutil.AccessDenied: + ad_pids.append(p.pid) + except psutil.NoSuchProcess: + pass + else: + p._uss = mem.uss + p._rss = mem.rss + if not p._uss: + continue + p._pss = getattr(mem, "pss", "") + p._swap = getattr(mem, "swap", "") + p._info = info + procs.append(p) + + procs.sort(key=lambda p: p._uss) + templ = "%-7s %-7s %-30s %7s %7s %7s %7s" + print(templ % ("PID", "User", "Cmdline", "USS", "PSS", "Swap", "RSS")) + print("=" * 78) + for p in procs: + line = templ % ( + p.pid, + p._info["username"][:7], + " ".join(p._info["cmdline"])[:30], + convert_bytes(p._uss), + convert_bytes(p._pss) if p._pss != "" else "", + convert_bytes(p._swap) if p._swap != "" else "", + convert_bytes(p._rss), + ) + print(line) + if ad_pids: + print("warning: access denied for %s pids" % (len(ad_pids)), + file=sys.stderr) if __name__ == '__main__': sys.exit(main()) |
