text: #!/usr/bin/env python
  
  # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
  # Use of this source code is governed by a BSD-style license that can be
  # found in the LICENSE file.
  
  """
  A clone of 'ps -aux' on UNIX.
  
  $ python examples/ps.py
  ...
  """
  
  import datetime
  import os
  import time
  
  import psutil
  from psutil._compat import print_
  
  
  def main():
      today_day = datetime.date.today()
      templ = "%-10s %5s %4s %4s %7s %7s %-13s %5s %7s  %s"
      attrs = ['pid', 'cpu_percent', 'memory_percent', 'name', 'cpu_times',
               'create_time', 'memory_info']
      if os.name == 'posix':
          attrs.append('uids')
          attrs.append('terminal')
      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'])))
              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__':
      main()
  