def read(data=None):
    """
Read ``ps -eo pid,user,rss,%cpu,command``.

:options:

  **data** (``<str>``)
    For debugging: specify the output of ``ps -eo pid,user,rss,%cpu,command`` as string.

:returns:

  **lines** ``<list<dict>>``
    A list of dictionaries, that contain the different fields. All data are strings.
  """
    import subprocess
    if data is None:
        data = subprocess.check_output('ps -eo pid,user,rss,%cpu,command',
            shell=True).decode('utf-8')
    header, data = data.split('\n', 1)
    data = list(filter(None, data.split('\n')))
    header = list(filter(None, header.split(' ')))
    lines = []
    for line in data:
        d = ['' for i in header]
        line = line.strip()
        d[0], line = line.split(' ', 1)
        line = line.strip()
        d[1], line = line.split(' ', 1)
        line = line.strip()
        d[2], line = line.split(' ', 1)
        line = line.strip()
        d[3], line = line.split(' ', 1)
        d[4] = line.strip()
        info = {}
        for key, val in zip(header, d):
            info[key] = val
        lines += [info]
    return lines
