summaryrefslogtreecommitdiff
path: root/scripts/procsmem.py
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2016-05-01 15:15:02 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2016-05-01 15:15:02 +0200
commit1b600a502d307dd2478eeb6423bc38bc0a2c50f1 (patch)
treeac599cae3f3769944fb4a704b4b885c7138e1ab4 /scripts/procsmem.py
parent388e82f5de65d536728a8f047ece392b3667e024 (diff)
downloadpsutil-1b600a502d307dd2478eeb6423bc38bc0a2c50f1.tar.gz
update doc and apply oneshot() where necessary
Diffstat (limited to 'scripts/procsmem.py')
-rwxr-xr-xscripts/procsmem.py71
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())