summaryrefslogtreecommitdiff
path: root/scripts
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
parent388e82f5de65d536728a8f047ece392b3667e024 (diff)
downloadpsutil-1b600a502d307dd2478eeb6423bc38bc0a2c50f1.tar.gz
update doc and apply oneshot() where necessary
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/iotop.py17
-rwxr-xr-xscripts/pidof.py35
-rwxr-xr-xscripts/procsmem.py71
-rwxr-xr-xscripts/ps.py88
4 files changed, 108 insertions, 103 deletions
diff --git a/scripts/iotop.py b/scripts/iotop.py
index 200926ed..1a8d8ba5 100755
--- a/scripts/iotop.py
+++ b/scripts/iotop.py
@@ -111,14 +111,15 @@ def poll(interval):
# then retrieve the same info again
for p in procs[:]:
- try:
- p._after = p.io_counters()
- p._cmdline = ' '.join(p.cmdline())
- if not p._cmdline:
- p._cmdline = p.name()
- p._username = p.username()
- except (psutil.NoSuchProcess, psutil.ZombieProcess):
- procs.remove(p)
+ with p.oneshot():
+ try:
+ p._after = p.io_counters()
+ p._cmdline = ' '.join(p.cmdline())
+ if not p._cmdline:
+ p._cmdline = p.name()
+ p._username = p.username()
+ except (psutil.NoSuchProcess, psutil.ZombieProcess):
+ procs.remove(p)
disks_after = psutil.disk_io_counters()
# finally calculate results by comparing data before and
diff --git a/scripts/pidof.py b/scripts/pidof.py
index 8692a315..0db9563e 100755
--- a/scripts/pidof.py
+++ b/scripts/pidof.py
@@ -19,23 +19,24 @@ import sys
def pidof(pgname):
pids = []
for proc in psutil.process_iter():
- # search for matches in the process name and cmdline
- try:
- name = proc.name()
- except psutil.Error:
- pass
- else:
- if name == pgname:
- pids.append(str(proc.pid))
- continue
-
- try:
- cmdline = proc.cmdline()
- except psutil.Error:
- pass
- else:
- if cmdline and cmdline[0] == pgname:
- pids.append(str(proc.pid))
+ with proc.oneshot():
+ # search for matches in the process name and cmdline
+ try:
+ name = proc.name()
+ except psutil.Error:
+ pass
+ else:
+ if name == pgname:
+ pids.append(str(proc.pid))
+ continue
+
+ try:
+ cmdline = proc.cmdline()
+ except psutil.Error:
+ pass
+ else:
+ if cmdline and cmdline[0] == pgname:
+ pids.append(str(proc.pid))
return pids
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())
diff --git a/scripts/ps.py b/scripts/ps.py
index 9143a557..f3063ade 100755
--- a/scripts/ps.py
+++ b/scripts/ps.py
@@ -29,52 +29,54 @@ def main():
print(templ % ("USER", "PID", "%CPU", "%MEM", "VSZ", "RSS", "TTY",
"START", "TIME", "COMMAND"))
for p in psutil.process_iter():
- try:
- pinfo = p.as_dict(attrs, ad_value='')
- except psutil.NoSuchProcess:
- pass
- else:
- if pinfo['create_time']:
- ctime = datetime.datetime.fromtimestamp(pinfo['create_time'])
- if ctime.date() == today_day:
- ctime = ctime.strftime("%H:%M")
- else:
- ctime = ctime.strftime("%b%d")
- else:
- ctime = ''
- cputime = time.strftime("%M:%S",
- time.localtime(sum(pinfo['cpu_times'])))
+ with p.oneshot():
try:
- user = p.username()
- except KeyError:
- if os.name == 'posix':
- if pinfo['uids']:
- user = str(pinfo['uids'].real)
+ pinfo = p.as_dict(attrs, ad_value='')
+ except psutil.NoSuchProcess:
+ pass
+ else:
+ if pinfo['create_time']:
+ ctime = datetime.datetime.fromtimestamp(
+ pinfo['create_time'])
+ if ctime.date() == today_day:
+ ctime = ctime.strftime("%H:%M")
else:
- user = ''
+ ctime = ctime.strftime("%b%d")
else:
- raise
- except psutil.Error:
- user = ''
- if os.name == 'nt' and '\\' in user:
- user = user.split('\\')[1]
- vms = pinfo['memory_info'] and \
- int(pinfo['memory_info'].vms / 1024) or '?'
- rss = pinfo['memory_info'] and \
- int(pinfo['memory_info'].rss / 1024) or '?'
- memp = pinfo['memory_percent'] and \
- round(pinfo['memory_percent'], 1) or '?'
- print(templ % (
- user[:10],
- pinfo['pid'],
- pinfo['cpu_percent'],
- memp,
- vms,
- rss,
- pinfo.get('terminal', '') or '?',
- ctime,
- cputime,
- pinfo['name'].strip() or '?'))
+ ctime = ''
+ cputime = time.strftime(
+ "%M:%S", time.localtime(sum(pinfo['cpu_times'])))
+ try:
+ user = p.username()
+ except KeyError:
+ if os.name == 'posix':
+ if pinfo['uids']:
+ user = str(pinfo['uids'].real)
+ else:
+ user = ''
+ else:
+ raise
+ except psutil.Error:
+ user = ''
+ if os.name == 'nt' and '\\' in user:
+ user = user.split('\\')[1]
+ vms = pinfo['memory_info'] and \
+ int(pinfo['memory_info'].vms / 1024) or '?'
+ rss = pinfo['memory_info'] and \
+ int(pinfo['memory_info'].rss / 1024) or '?'
+ memp = pinfo['memory_percent'] and \
+ round(pinfo['memory_percent'], 1) or '?'
+ print(templ % (
+ user[:10],
+ pinfo['pid'],
+ pinfo['cpu_percent'],
+ memp,
+ vms,
+ rss,
+ pinfo.get('terminal', '') or '?',
+ ctime,
+ cputime,
+ pinfo['name'].strip() or '?'))
if __name__ == '__main__':