1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00
Files
jc/docs/parsers/proc_pid_smaps.md
2024-03-14 22:46:52 -07:00

4.9 KiB

Home

jc.parsers.proc_pid_smaps

jc - JSON Convert /proc/<pid>/smaps file parser

Usage (cli):

$ cat /proc/1/smaps | jc --proc

or

$ jc /proc/1/smaps

or

$ cat /proc/1/smaps | jc --proc-pid-smaps

Usage (module):

import jc
result = jc.parse('proc', proc_pid_smaps_file)

or

import jc
result = jc.parse('proc_pid_smaps', proc_pid_smaps_file)

Schema:

[
  {
    "start":                          string,
    "end":                            string,
    "perms": [
                                      string
    ],
    "offset":                         string,
    "maj":                            string,
    "min":                            string,
    "inode":                          integer,
    "pathname":                       string,
    "Size":                           integer,
    "KernelPageSize":                 integer,
    "MMUPageSize":                    integer,
    "Rss":                            integer,
    "Pss":                            integer,
    "Shared_Clean":                   integer,
    "Shared_Dirty":                   integer,
    "Private_Clean":                  integer,
    "Private_Dirty":                  integer,
    "Referenced":                     integer,
    "Anonymous":                      integer,
    "LazyFree":                       integer,
    "AnonHugePages":                  integer,
    "ShmemPmdMapped":                 integer,
    "FilePmdMapped":                  integer,
    "Shared_Hugetlb":                 integer,
    "Private_Hugetlb":                integer,
    "Swap":                           integer,
    "SwapPss":                        integer,
    "Locked":                         integer,
    "THPeligible":                    integer,
    "VmFlags": [
                                      string
    ],
    "VmFlags_pretty": [
                                      string
    ]
  }
]

Examples:

$ cat /proc/1/smaps | jc --proc -p
[
  {
    "start": "55a9e753c000",
    "end": "55a9e7570000",
    "perms": [
      "read",
      "private"
    ],
    "offset": "00000000",
    "maj": "fd",
    "min": "00",
    "inode": 798126,
    "pathname": "/usr/lib/systemd/systemd",
    "Size": 208,
    "KernelPageSize": 4,
    "MMUPageSize": 4,
    "Rss": 208,
    "Pss": 104,
    "Shared_Clean": 208,
    "Shared_Dirty": 0,
    "Private_Clean": 0,
    "Private_Dirty": 0,
    "Referenced": 208,
    "Anonymous": 0,
    "LazyFree": 0,
    "AnonHugePages": 0,
    "ShmemPmdMapped": 0,
    "FilePmdMapped": 0,
    "Shared_Hugetlb": 0,
    "Private_Hugetlb": 0,
    "Swap": 0,
    "SwapPss": 0,
    "Locked": 0,
    "THPeligible": 0,
    "VmFlags": [
      "rd",
      "mr",
      "mw",
      "me",
      "dw",
      "sd",
      "mp"
    ],
    "VmFlags_pretty": [
      "readable",
      "may read",
      "may write",
      "may execute",
      "disabled write to the mapped file",
      "soft-dirty flag"
    ]
  },
  ...
]

$ cat /proc/1/smaps | jc --proc-pid-smaps -p -r
[
  {
    "start": "55a9e753c000",
    "end": "55a9e7570000",
    "perms": "r--p",
    "offset": "00000000",
    "maj": "fd",
    "min": "00",
    "inode": "798126",
    "pathname": "/usr/lib/systemd/systemd",
    "Size": "208 kB",
    "KernelPageSize": "4 kB",
    "MMUPageSize": "4 kB",
    "Rss": "208 kB",
    "Pss": "104 kB",
    "Shared_Clean": "208 kB",
    "Shared_Dirty": "0 kB",
    "Private_Clean": "0 kB",
    "Private_Dirty": "0 kB",
    "Referenced": "208 kB",
    "Anonymous": "0 kB",
    "LazyFree": "0 kB",
    "AnonHugePages": "0 kB",
    "ShmemPmdMapped": "0 kB",
    "FilePmdMapped": "0 kB",
    "Shared_Hugetlb": "0 kB",
    "Private_Hugetlb": "0 kB",
    "Swap": "0 kB",
    "SwapPss": "0 kB",
    "Locked": "0 kB",
    "THPeligible": "0",
    "VmFlags": "rd mr mw me dw sd"
  },
  ...
]

parse

def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]

Main text parsing function

Parameters:

data:        (string)  text data to parse
raw:         (boolean) unprocessed output if True
quiet:       (boolean) suppress warning messages if True

Returns:

List of Dictionaries. Raw or processed structured data.

Parser Information

Compatibility: linux

Source: jc/parsers/proc_pid_smaps.py

Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)