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 | |
| parent | 388e82f5de65d536728a8f047ece392b3667e024 (diff) | |
| download | psutil-1b600a502d307dd2478eeb6423bc38bc0a2c50f1.tar.gz | |
update doc and apply oneshot() where necessary
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/iotop.py | 17 | ||||
| -rwxr-xr-x | scripts/pidof.py | 35 | ||||
| -rwxr-xr-x | scripts/procsmem.py | 71 | ||||
| -rwxr-xr-x | scripts/ps.py | 88 |
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__': |
