1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-23 00:29:59 +02:00

Merge pull request #249 from kellyjonbrazil/dev

Dev v1.20.0
This commit is contained in:
Kelly Brazil
2022-05-31 16:23:43 +00:00
committed by GitHub
114 changed files with 3465 additions and 508 deletions

View File

@ -1,41 +1,50 @@
jc changelog jc changelog
20220531 v1.20.0
- Add YAML output option with `-y`
- Add `top -b` standard and streaming parsers tested on linux
- Add `plugin_parser_count`, `standard_parser_count`, and `streaming_parser_count`
keys to `jc -a` output
- Add `is_compatible` function to the `utils` module
- Fix `pip-show` parser for packages with a multi-line license field
- Fix ASCII Table parser for cases where centered headers cause mis-aligned fields
20220513 v1.19.0 20220513 v1.19.0
- Add chage --list command parser tested on linux - Add `chage --list` command parser tested on linux
- Add git log command streaming parser - Add `git log` command streaming parser
- Fix git log standard parser for coner-cases where hash values are in messages - Fix `git log` standard parser for corner-cases where hash values are in messages
- Fix df command parser for rare instances when a newline is found at the end - Fix `df` command parser for rare instances when a newline is found at the end
- Allow jc to pip install on unsupported python version 3.6 - Allow jc to pip install on unsupported python version 3.6
- Fix asciitable-m parser to skip some rows that contain column separator - Fix `asciitable-m` parser to skip some rows that contain column separator
characters in cell data. A warning message will be printed to STDOUT characters in cell data. A warning message will be printed to STDERR
unless `-q` or `quiet=True` is used. unless `-q` or `quiet=True` is used.
20220427 v1.18.8 20220427 v1.18.8
- Fix update-alternatives --query parser for cases where `slaves` are not present - Fix `update-alternatives --query` parser for cases where `slaves` are not present
- Fix UnicodeEncodeError on some systems where LANG=C is set and unicode - Fix UnicodeEncodeError on some systems where LANG=C is set and unicode
characters are in the output characters are in the output
- Update history parser: do not drop non-ASCII characters if the system - Update `history` parser: do not drop non-ASCII characters if the system
is configured for UTF-8 encoding is configured for UTF-8 encoding
- Enhance "magic syntax" to always use UTF-8 encoding - Enhance "magic syntax" to always use UTF-8 encoding
20220425 v1.18.7 20220425 v1.18.7
- Add git log command parser - Add `git log` command parser
- Add update-alternatives --query parser - Add `update-alternatives --query` parser
- Add update-alternatives --get-selections parser - Add `update-alternatives --get-selections` parser
- Fix key/value and ini parsers to allow duplicate keys - Fix key/value and ini parsers to allow duplicate keys
- Fix yaml file parser for files including timestamp objects - Fix yaml file parser for files including timestamp objects
- Update xrandr parser: add a 'rotation' field - Update `xrandr` parser: add a 'rotation' field
- Fix failing tests by moving template files - Fix failing tests by moving template files
- Add python interpreter version and path to -v and -a output - Add python interpreter version and path to -v and -a output
20220325 v1.18.6 20220325 v1.18.6
- Add pidstat command parser tested on linux - Add `pidstat` command parser tested on linux
- Add pidstat command streaming parser tested on linux - Add `pidstat` command streaming parser tested on linux
- Add mpstat command parser tested on linux - Add `mpstat` command parser tested on linux
- Add mpstat command streaming parser tested on linux - Add `mpstat` command streaming parser tested on linux
- Add single-line ASCII and Unicode table parser - Add single-line ASCII and Unicode table parser
- Add multi-line ASCII and Unicode table parser - Add multi-line ASCII and Unicode table parser
- Add documentation option to parser_info() and all_parser_info() - Add documentation option to `parser_info()` and `all_parser_info()`
20220305 v1.18.5 20220305 v1.18.5
- Fix date parser to ensure AM/PM period string is always uppercase - Fix date parser to ensure AM/PM period string is always uppercase

224
README.md
View File

@ -144,112 +144,114 @@ option.
### Parsers ### Parsers
| Argument | Command or Filetype | Documentation | | Argument | Command or Filetype | Documentation |
|--------------|-------------------------|-------------------| |-------------------|---------------------------------------------------------|-------------------------------------------------------------------------|
| `--acpi` | `acpi` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/acpi) | | ` --acpi` | `acpi` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/acpi) |
| `--airport` | `airport -I` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/airport) | | ` --airport` | `airport -I` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/airport) |
| `--airport-s` | `airport -s` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s) | | ` --airport-s` | `airport -s` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s) |
| `--arp` | `arp` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/arp) | | ` --arp` | `arp` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/arp) |
| `--asciitable` | ASCII and Unicode table parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable) | | ` --asciitable` | ASCII and Unicode table parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable) |
| `--asciitable-m` | multi-line ASCII and Unicode table parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m) | | ` --asciitable-m` | multi-line ASCII and Unicode table parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m) |
| `--blkid` | `blkid` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid) | | ` --blkid` | `blkid` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid) |
| `--chage` | `chage --list` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/chage) | | ` --chage` | `chage --list` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/chage) |
| `--cksum` | `cksum` and `sum` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum) | | ` --cksum` | `cksum` and `sum` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum) |
| `--crontab` | `crontab` command and file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab) | | ` --crontab` | `crontab` command and file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab) |
| `--crontab-u` | `crontab` file parser with user support | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab_u) | | ` --crontab-u` | `crontab` file parser with user support | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab_u) |
| `--csv` | CSV file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/csv) | | ` --csv` | CSV file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/csv) |
| `--csv-s` | CSV file streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/csv_s) | | ` --csv-s` | CSV file streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/csv_s) |
| `--date` | `date` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/date) | | ` --date` | `date` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/date) |
| `--df` | `df` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/df) | | ` --df` | `df` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/df) |
| `--dig` | `dig` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dig) | | ` --dig` | `dig` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dig) |
| `--dir` | `dir` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dir) | | ` --dir` | `dir` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dir) |
| `--dmidecode` | `dmidecode` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dmidecode) | | ` --dmidecode` | `dmidecode` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dmidecode) |
| `--dpkg-l` | `dpkg -l` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dpkg_l) | | ` --dpkg-l` | `dpkg -l` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/dpkg_l) |
| `--du` | `du` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/du) | | ` --du` | `du` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/du) |
| `--env` | `env` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/env) | | ` --env` | `env` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/env) |
| `--file` | `file` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/file) | | ` --file` | `file` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/file) |
| `--finger` | `finger` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/finger) | | ` --finger` | `finger` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/finger) |
| `--free` | `free` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/free) | | ` --free` | `free` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/free) |
| `--fstab` | `/etc/fstab` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/fstab) | | ` --fstab` | `/etc/fstab` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/fstab) |
| `--git-log` | `git log` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log) | | ` --git-log` | `git log` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log) |
| `--git-log-s` | `git log` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log_s) | | ` --git-log-s` | `git log` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log_s) |
| `--group` | `/etc/group` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/group) | | ` --group` | `/etc/group` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/group) |
| `--gshadow` | `/etc/gshadow` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/gshadow) | | ` --gshadow` | `/etc/gshadow` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/gshadow) |
| `--hash` | `hash` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hash) | | ` --hash` | `hash` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hash) |
| `--hashsum` | hashsum command parser (`md5sum`, `shasum`, etc.) | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hashsum) | | ` --hashsum` | hashsum command parser (`md5sum`, `shasum`, etc.) | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hashsum) |
| `--hciconfig` | `hciconfig` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hciconfig) | | ` --hciconfig` | `hciconfig` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hciconfig) |
| `--history` | `history` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/history) | | ` --history` | `history` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/history) |
| `--hosts` | `/etc/hosts` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hosts) | | ` --hosts` | `/etc/hosts` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/hosts) |
| `--id` | `id` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/id) | | ` --id` | `id` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/id) |
| `--ifconfig` | `ifconfig` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ifconfig) | | ` --ifconfig` | `ifconfig` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ifconfig) |
| `--ini` | INI file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ini) | | ` --ini` | INI file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ini) |
| `--iostat` | `iostat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat) | | ` --iostat` | `iostat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat) |
| `--iostat-s` | `iostat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat_s) | | ` --iostat-s` | `iostat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat_s) |
| `--iptables` | `iptables` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iptables) | | ` --iptables` | `iptables` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iptables) |
| `--iw-scan` | `iw dev [device] scan` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iw_scan) | | ` --iw-scan` | `iw dev [device] scan` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/iw_scan) |
| `--jar-manifest` | MANIFEST.MF file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/jar_manifest) | | ` --jar-manifest` | MANIFEST.MF file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/jar_manifest) |
| `--jobs` | `jobs` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/jobs) | | ` --jobs` | `jobs` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/jobs) |
| `--kv` | Key/Value file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/kv) | | ` --kv` | Key/Value file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/kv) |
| `--last` | `last` and `lastb` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/last) | | ` --last` | `last` and `lastb` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/last) |
| `--ls` | `ls` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ls) | | ` --ls` | `ls` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ls) |
| `--ls-s` | `ls` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ls_s) | | ` --ls-s` | `ls` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ls_s) |
| `--lsblk` | `lsblk` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsblk) | | ` --lsblk` | `lsblk` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsblk) |
| `--lsmod` | `lsmod` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsmod) | | ` --lsmod` | `lsmod` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsmod) |
| `--lsof` | `lsof` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof) | | ` --lsof` | `lsof` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof) |
| `--lsusb` | `lsusb` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsusb) | | ` --lsusb` | `lsusb` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/lsusb) |
| `--mount` | `mount` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/mount) | | ` --mount` | `mount` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/mount) |
| `--mpstat` | `mpstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat) | | ` --mpstat` | `mpstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat) |
| `--mpstat-s` | `mpstat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat_s) | | ` --mpstat-s` | `mpstat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat_s) |
| `--netstat` | `netstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/netstat) | | ` --netstat` | `netstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/netstat) |
| `--nmcli` | `nmcli` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli) | | ` --nmcli` | `nmcli` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli) |
| `--ntpq` | `ntpq -p` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) | | ` --ntpq` | `ntpq -p` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) |
| `--passwd` | `/etc/passwd` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) | | ` --passwd` | `/etc/passwd` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) |
| `--pidstat` | `pidstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) | | ` --pidstat` | `pidstat -h` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) |
| `--pidstat-s` | `pidstat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) | | ` --pidstat-s` | `pidstat -h` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) |
| `--ping` | `ping` and `ping6` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ping) | | ` --ping` | `ping` and `ping6` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ping) |
| `--ping-s` | `ping` and `ping6` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) | | ` --ping-s` | `ping` and `ping6` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) |
| `--pip-list` | `pip list` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) | | ` --pip-list` | `pip list` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) |
| `--pip-show` | `pip show` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) | | ` --pip-show` | `pip show` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) |
| `--ps` | `ps` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) | | ` --ps` | `ps` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) |
| `--route` | `route` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/route) | | ` --route` | `route` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/route) |
| `--rpm-qi` | `rpm -qi` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi) | | ` --rpm-qi` | `rpm -qi` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi) |
| `--rsync` | `rsync` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync) | | ` --rsync` | `rsync` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync) |
| `--rsync-s` | `rsync` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync_s) | | ` --rsync-s` | `rsync` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync_s) |
| `--sfdisk` | `sfdisk` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/sfdisk) | | ` --sfdisk` | `sfdisk` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/sfdisk) |
| `--shadow` | `/etc/shadow` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow) | | ` --shadow` | `/etc/shadow` file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow) |
| `--ss` | `ss` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ss) | | ` --ss` | `ss` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ss) |
| `--stat` | `stat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/stat) | | ` --stat` | `stat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/stat) |
| `--stat-s` | `stat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/stat_s) | | ` --stat-s` | `stat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/stat_s) |
| `--sysctl` | `sysctl` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/sysctl) | | ` --sysctl` | `sysctl` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/sysctl) |
| `--systemctl` | `systemctl` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl) | | ` --systemctl` | `systemctl` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl) |
| `--systemctl-lj` | `systemctl list-jobs` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_lj) | | ` --systemctl-lj` | `systemctl list-jobs` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_lj) |
| `--systemctl-ls` | `systemctl list-sockets` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_ls) | | ` --systemctl-ls` | `systemctl list-sockets` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_ls) |
| `--systemctl-luf` | `systemctl list-unit-files` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_luf) | | `--systemctl-luf` | `systemctl list-unit-files` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_luf) |
| `--systeminfo` | `systeminfo` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systeminfo) | | ` --systeminfo` | `systeminfo` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/systeminfo) |
| `--time` | `/usr/bin/time` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/time) | | ` --time` | `/usr/bin/time` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/time) |
| `--timedatectl` | `timedatectl status` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/timedatectl) | | ` --timedatectl` | `timedatectl status` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/timedatectl) |
| `--tracepath` | `tracepath` and `tracepath6` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/tracepath) | | ` --top` | `top -b` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/top) |
| `--traceroute` | `traceroute` and `traceroute6` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/traceroute) | | ` --top-s` | `top -b` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/top_s) |
| `--ufw` | `ufw status` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw) | | ` --tracepath` | `tracepath` and `tracepath6` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/tracepath) |
| `--ufw-appinfo` | `ufw app info [application]` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw_appinfo) | | ` --traceroute` | `traceroute` and `traceroute6` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/traceroute) |
| `--uname` | `uname -a` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/uname) | | ` --ufw` | `ufw status` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw) |
| `--update-alt-gs` | `update-alternatives --get-selections` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/update_alt_gs) | | ` --ufw-appinfo` | `ufw app info [application]` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw_appinfo) |
| `--update-alt-q` | `update-alternatives --query` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/update_alt_q) | | ` --uname` | `uname -a` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/uname) |
| `--upower` | `upower` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/upower) | | `--update-alt-gs` | `update-alternatives --get-selections` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/update_alt_gs) |
| `--uptime` | `uptime` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/uptime) | | ` --update-alt-q` | `update-alternatives --query` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/update_alt_q) |
| `--vmstat` | `vmstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat) | | ` --upower` | `upower` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/upower) |
| `--vmstat-s` | `vmstat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat_s) | | ` --uptime` | `uptime` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/uptime) |
| `--w` | `w` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/w) | | ` --vmstat` | `vmstat` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat) |
| `--wc` | `wc` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/wc) | | ` --vmstat-s` | `vmstat` command streaming parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat_s) |
| `--who` | `who` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/who) | | ` --w` | `w` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/w) |
| `--xml` | XML file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/xml) | | ` --wc` | `wc` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/wc) |
| `--xrandr` | `xrandr` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/xrandr) | | ` --who` | `who` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/who) |
| `--yaml` | YAML file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/yaml) | | ` --xml` | XML file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/xml) |
| `--zipinfo` | `zipinfo` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/zipinfo) | | ` --xrandr` | `xrandr` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/xrandr) |
| ` --yaml` | YAML file parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/yaml) |
| ` --zipinfo` | `zipinfo` command parser | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/zipinfo) |
### Options ### Options
- `-a` about `jc`. Prints information about `jc` and the parsers (in JSON, of - `-a` about `jc`. Prints information about `jc` and the parsers (in JSON or
course!) YAML, of course!)
- `-C` force color output even when using pipes (overrides `-m` and the - `-C` force color output even when using pipes (overrides `-m` and the
`NO_COLOR` env variable) `NO_COLOR` env variable)
- `-d` debug mode. Prints trace messages if parsing issues are encountered (use - `-d` debug mode. Prints trace messages if parsing issues are encountered (use
@ -263,6 +265,7 @@ option.
values and no additional semantic processing values and no additional semantic processing
- `-u` unbuffer output - `-u` unbuffer output
- `-v` version information - `-v` version information
- `-y` YAML output
### Exit Codes ### Exit Codes
Any fatal errors within `jc` will generate an exit code of `100`, otherwise the Any fatal errors within `jc` will generate an exit code of `100`, otherwise the
@ -309,11 +312,11 @@ color output will override both the `NO_COLOR` environment variable and the `-m`
option. option.
### Streaming Parsers ### Streaming Parsers
Most parsers load all of the data from STDIN, parse it, then output the entire Most parsers load all of the data from `STDIN`, parse it, then output the entire
JSON document serially. There are some streaming parsers (e.g. `ls-s` and JSON document serially. There are some streaming parsers (e.g. `ls-s` and
`ping-s`) that immediately start processing and outputing the data line-by-line `ping-s`) that immediately start processing and outputing the data line-by-line
as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while
it is being received from STDIN. This can significantly reduce the amount of it is being received from `STDIN`. This can significantly reduce the amount of
memory required to parse large amounts of command output (e.g. `ls -lR /`) and memory required to parse large amounts of command output (e.g. `ls -lR /`) and
can sometimes process the data more quickly. Streaming parsers have slightly can sometimes process the data more quickly. Streaming parsers have slightly
different behavior than standard parsers as outlined below. different behavior than standard parsers as outlined below.
@ -463,9 +466,9 @@ parsers that convert platform-specific output will generate a warning message if
they are run on an unsupported platform. To see all parser information, they are run on an unsupported platform. To see all parser information,
including compatibility, run `jc -ap`. including compatibility, run `jc -ap`.
You may still use a parser on an unsupported platform - for example, you may want You may still use a parser on an unsupported platform - for example, you may
to parse a file with linux `lsof` output on an macOS or Windows laptop. In that want to parse a file with linux `lsof` output on an macOS or Windows laptop. In
case you can suppress the warning message with the `-q` cli option or the that case you can suppress the warning message with the `-q` cli option or the
`quiet=True` function parameter in `parse()`: `quiet=True` function parameter in `parse()`:
macOS: macOS:
@ -494,7 +497,8 @@ Tested on:
## Contributions ## Contributions
Feel free to add/improve code or parsers! You can use the Feel free to add/improve code or parsers! You can use the
[`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py) [`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py)
or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py) parsers as a template and submit your parser with a pull request. or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py) parsers as a template and submit your parser with a pull
request.
Please see the [Contributing Guidelines](https://github.com/kellyjonbrazil/jc/blob/master/CONTRIBUTING.md) for more information. Please see the [Contributing Guidelines](https://github.com/kellyjonbrazil/jc/blob/master/CONTRIBUTING.md) for more information.

View File

@ -8,7 +8,12 @@ jc - JSON Convert `asciitable` parser
This parser converts ASCII and Unicode text tables with single-line rows. This parser converts ASCII and Unicode text tables with single-line rows.
Column headers must be at least two spaces apart from each other and must Column headers must be at least two spaces apart from each other and must
be unique. be unique. For best results, column headers should be left-justified. If
column separators are present, then non-left-justified headers will be fixed
automatically.
Row separators are optional and are ignored. Each non-row-separator line is
considered a separate row in the table.
For example: For example:
@ -136,4 +141,4 @@ Returns:
### Parser Information ### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -30,9 +30,10 @@ headers are joined with an underscore. All values are returned as strings,
except empty strings, which are converted to None/null. except empty strings, which are converted to None/null.
> Note: table column separator characters (e.g. `|`) cannot be present > Note: table column separator characters (e.g. `|`) cannot be present
inside the cell data. If detected, a warning message will be printed to > inside the cell data. If detected, a warning message will be printed to
STDERR and the line will be skipped. The warning message can be suppressed > `STDERR` and the line will be skipped. The warning message can be
by using the `-q` command option or by setting `quiet=True` in `parse()`. > suppressed by using the `-q` command option or by setting `quiet=True` in
> `parse()`.
Usage (cli): Usage (cli):

View File

@ -6,14 +6,14 @@
jc - JSON Convert `csv` file streaming parser jc - JSON Convert `csv` file streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
The `csv` streaming parser will attempt to automatically detect the The `csv` streaming parser will attempt to automatically detect the
delimiter character. If the delimiter cannot be detected it will default delimiter character. If the delimiter cannot be detected it will default
to comma. The first row of the file must be a header row. to comma. The first row of the file must be a header row.
Note: The first 100 rows are read into memory to enable delimiter detection, > Note: The first 100 rows are read into memory to enable delimiter
then the rest of the rows are loaded lazily. > detection, then the rest of the rows are loaded lazily.
Usage (cli): Usage (cli):

View File

@ -19,7 +19,7 @@ time of the system the parser is run on)
Usage (cli): Usage (cli):
C:> dir | jc --dir C:\> dir | jc --dir
Usage (module): Usage (module):
@ -42,7 +42,7 @@ Schema:
Examples: Examples:
C:> dir | jc --dir -p C:\> dir | jc --dir -p
[ [
{ {
"date": "03/24/2021", "date": "03/24/2021",
@ -83,7 +83,7 @@ Examples:
... ...
] ]
C:> dir | jc --dir -p -r C:\> dir | jc --dir -p -r
[ [
{ {
"date": "03/24/2021", "date": "03/24/2021",

View File

@ -43,8 +43,8 @@ Schema:
"author": string, "author": string,
"author_email": string, "author_email": string,
"date": string, "date": string,
"epoch": integer, [0] "epoch": integer, # [0]
"epoch_utc": integer, [1] "epoch_utc": integer, # [1]
"commit_by": string, "commit_by": string,
"commit_by_email": string, "commit_by_email": string,
"commit_by_date": string, "commit_by_date": string,

View File

@ -6,7 +6,7 @@
jc - JSON Convert `git log` command output streaming parser jc - JSON Convert `git log` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Can be used with the following format options: Can be used with the following format options:
- `oneline` - `oneline`
@ -44,8 +44,8 @@ Schema:
"author": string, "author": string,
"author_email": string, "author_email": string,
"date": string, "date": string,
"epoch": integer, [0] "epoch": integer, # [0]
"epoch_utc": integer, [1] "epoch_utc": integer, # [1]
"commit_by": string, "commit_by": string,
"commit_by_email": string, "commit_by_email": string,
"commit_by_date": string, "commit_by_date": string,

View File

@ -5,7 +5,7 @@
jc - JSON Convert `ifconfig` command output parser jc - JSON Convert `ifconfig` command output parser
Note: No `ifconfig` options are supported. > Note: No `ifconfig` options are supported.
Usage (cli): Usage (cli):

View File

@ -12,8 +12,8 @@ Parses standard `INI` files and files containing simple key/value pairs.
- If duplicate keys are found, only the last value will be used. - If duplicate keys are found, only the last value will be used.
> Note: Values starting and ending with quotation marks will have the marks > Note: Values starting and ending with quotation marks will have the marks
removed. If you would like to keep the quotation marks, use the `-r` > removed. If you would like to keep the quotation marks, use the `-r`
command-line argument or the `raw=True` argument in `parse()`. > command-line argument or the `raw=True` argument in `parse()`.
Usage (cli): Usage (cli):
@ -26,8 +26,8 @@ Usage (module):
Schema: Schema:
ini or key/value document converted to a dictionary - see the ini or key/value document converted to a dictionary - see the configparser
configparser standard library documentation for more details. standard library documentation for more details.
{ {
"key1": string, "key1": string,

View File

@ -5,7 +5,7 @@
jc - JSON Convert `iostat` command output parser jc - JSON Convert `iostat` command output parser
Note: `iostat` version 11 and higher include a JSON output option > Note: `iostat` version 11 and higher include a JSON output option
Usage (cli): Usage (cli):

View File

@ -6,20 +6,20 @@
jc - JSON Convert `iostat` command output streaming parser jc - JSON Convert `iostat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Note: `iostat` version 11 and higher include a JSON output option > Note: `iostat` version 11 and higher include a JSON output option
Usage (cli): Usage (cli):
$ iostat | jc --iostat-s $ iostat | jc --iostat-s
> Note: When piping `jc` converted `iostat` output to other processes it may > Note: When piping `jc` converted `iostat` output to other processes it may
appear the output is hanging due to the OS pipe buffers. This is because > appear the output is hanging due to the OS pipe buffers. This is because
`iostat` output is too small to quickly fill up the buffer. Use the `-u` > `iostat` output is too small to quickly fill up the buffer. Use the `-u`
option to unbuffer the `jc` output if you would like immediate output. See > option to unbuffer the `jc` output if you would like immediate output. See
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):

View File

@ -12,8 +12,8 @@ Supports files containing simple key/value pairs.
- If duplicate keys are found, only the last value will be used. - If duplicate keys are found, only the last value will be used.
> Note: Values starting and ending with quotation marks will have the marks > Note: Values starting and ending with quotation marks will have the marks
removed. If you would like to keep the quotation marks, use the `-r` > removed. If you would like to keep the quotation marks, use the `-r`
command-line argument or the `raw=True` argument in `parse()`. > command-line argument or the `raw=True` argument in `parse()`.
Usage (cli): Usage (cli):
@ -26,8 +26,8 @@ Usage (module):
Schema: Schema:
key/value document converted to a dictionary - see the key/value document converted to a dictionary - see the configparser standard
configparser standard library documentation for more details. library documentation for more details.
{ {
"key1": string, "key1": string,

View File

@ -9,11 +9,12 @@ Options supported:
- `lbaR1` - `lbaR1`
- `--time-style=full-iso` - `--time-style=full-iso`
Note: The `-1`, `-l`, or `-b` option of `ls` should be used to correctly > Note: The `-1`, `-l`, or `-b` option of `ls` should be used to correctly
parse filenames that include newline characters. Since `ls` does not encode > parse filenames that include newline characters. Since `ls` does not
newlines in filenames when outputting to a pipe it will cause `jc` to see > encode newlines in filenames when outputting to a pipe it will cause `jc`
multiple files instead of a single file if `-1`, `-l`, or `-b` is not used. > to see multiple files instead of a single file if `-1`, `-l`, or `-b` is
Alternatively, `vdir` can be used, which is the same as running `ls -lb`. > not used. Alternatively, `vdir` can be used, which is the same as running
> `ls -lb`.
The `epoch` calculated timestamp field is naive. (i.e. based on the local The `epoch` calculated timestamp field is naive. (i.e. based on the local
time of the system the parser is run on) time of the system the parser is run on)

View File

@ -6,7 +6,7 @@
jc - JSON Convert `ls` and `vdir` command output streaming parser jc - JSON Convert `ls` and `vdir` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Requires the `-l` option to be used on `ls`. If there are newline characters Requires the `-l` option to be used on `ls`. If there are newline characters
in the filename, then make sure to use the `-b` option on `ls`. in the filename, then make sure to use the `-b` option on `ls`.

View File

@ -22,9 +22,9 @@ Usage (module):
Schema: Schema:
Note: <item> object keynames are assigned directly from the lsusb > Note: <item> object keynames are assigned directly from the lsusb
output. If there are duplicate <item> names in a section, only the > output. If there are duplicate <item> names in a section, only the
last one is converted. > last one is converted.
[ [
{ {

View File

@ -5,7 +5,7 @@
jc - JSON Convert `mpstat` command output parser jc - JSON Convert `mpstat` command output parser
Note: Latest versions of `mpstat` support JSON output (v11.5.1+) > Note: Latest versions of `mpstat` support JSON output (v11.5.1+)
Usage (cli): Usage (cli):

View File

@ -6,9 +6,9 @@
jc - JSON Convert `mpstat` command output streaming parser jc - JSON Convert `mpstat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Note: Latest versions of `mpstat` support JSON output (v11.5.1+) > Note: Latest versions of `mpstat` support JSON output (v11.5.1+)
Usage (cli): Usage (cli):

View File

@ -29,18 +29,18 @@ Usage (module):
Schema: Schema:
Because there are so many options, the schema is not strictly defined. Because there are so many options, the schema is not strictly defined.
Integer and Float value conversions are attempted and the original Integer and Float value conversions are attempted and the original
values are kept if they fail. If you don't want automatic conversion, values are kept if they fail. If you don't want automatic conversion,
then use the -r or raw=True option to disable it. then use the `-r` or `raw=True` option to disable it.
The structure is flat, for the most part, but there are a couple of The structure is flat, for the most part, but there are a couple of
"well-known" keys that are further parsed into objects for convenience. "well-known" keys that are further parsed into objects for convenience.
These are documented below. These are documented below.
[ [
{ {
"<key>": string/integer/float, [0] "<key>": string/integer/float, # [0]
"dhcp4_option_x": { "dhcp4_option_x": {
"name": string, "name": string,
"value": string/integer/float, "value": string/integer/float,

View File

@ -3,7 +3,7 @@
# jc.parsers.pidstat # jc.parsers.pidstat
jc - JSON Convert `pidstat` command output parser jc - JSON Convert `pidstat -h` command output parser
Must use the `-h` option in `pidstat`. All other `pidstat` options are Must use the `-h` option in `pidstat`. All other `pidstat` options are
supported in combination with `-h`. supported in combination with `-h`.

View File

@ -3,10 +3,10 @@
# jc.parsers.pidstat\_s # jc.parsers.pidstat\_s
jc - JSON Convert `pidstat` command output streaming parser jc - JSON Convert `pidstat -h` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Must use the `-h` option in `pidstat`. All other `pidstat` options are Must use the `-h` option in `pidstat`. All other `pidstat` options are
supported in combination with `-h`. supported in combination with `-h`.
@ -16,11 +16,11 @@ Usage (cli):
$ pidstat | jc --pidstat-s $ pidstat | jc --pidstat-s
> Note: When piping `jc` converted `pidstat` output to other processes it > Note: When piping `jc` converted `pidstat` output to other processes it
may appear the output is hanging due to the OS pipe buffers. This is > may appear the output is hanging due to the OS pipe buffers. This is
because `pidstat` output is too small to quickly fill up the buffer. Use > because `pidstat` output is too small to quickly fill up the buffer. Use
the `-u` option to unbuffer the `jc` output if you would like immediate > the `-u` option to unbuffer the `jc` output if you would like immediate
output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):

View File

@ -9,8 +9,8 @@ Supports `ping` and `ping6` output.
Usage (cli): Usage (cli):
Note: Use the ping `-c` (count) option, otherwise data will not be > Note: Use the ping `-c` (count) option, otherwise data will not be
piped to `jc`. > piped to `jc`.
$ ping -c 3 1.2.3.4 | jc --ping $ ping -c 3 1.2.3.4 | jc --ping

View File

@ -6,20 +6,20 @@
jc - JSON Convert `ping` command output streaming parser jc - JSON Convert `ping` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Supports `ping` and `ping6` output. Supports `ping` and `ping6` output.
Usage (cli): Usage (cli):
$ ping | jc --ping-s $ ping 1.2.3.4 | jc --ping-s
> Note: When piping `jc` converted `ping` output to other processes it may > Note: When piping `jc` converted `ping` output to other processes it may
appear the output is hanging due to the OS pipe buffers. This is because > appear the output is hanging due to the OS pipe buffers. This is because
`ping` output is too small to quickly fill up the buffer. Use the `-u` > `ping` output is too small to quickly fill up the buffer. Use the `-u`
option to unbuffer the `jc` output if you would like immediate output. > option to unbuffer the `jc` output if you would like immediate output.
See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):

View File

@ -70,7 +70,7 @@ Examples:
### parse ### parse
```python ```python
def parse(data, raw=False, quiet=False) def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
``` ```
Main text parsing function Main text parsing function
@ -88,4 +88,4 @@ Returns:
### Parser Information ### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com) Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -22,20 +22,20 @@ Schema:
[ [
{ {
"destination": string, "destination": string,
"gateway": string, "gateway": string,
"genmask": string, "genmask": string,
"flags": string, "flags": string,
"flags_pretty": [ "flags_pretty": [
string string
] ]
"metric": integer, "metric": integer,
"ref": integer, "ref": integer,
"use": integer, "use": integer,
"mss": integer, "mss": integer,
"window": integer, "window": integer,
"irtt": integer, "irtt": integer,
"iface": string "iface": string
} }
] ]

View File

@ -10,7 +10,7 @@ Works with `rpm -qi [package]` or `rpm -qia`.
The `..._epoch` calculated timestamp fields are naive. (i.e. based on the The `..._epoch` calculated timestamp fields are naive. (i.e. based on the
local time of the system the parser is run on) local time of the system the parser is run on)
The `..._epoch_utc` calculated timestamp fields are timezone-aware and is The `..._epoch_utc` calculated timestamp fields are timezone-aware and are
only available if the timezone field is UTC. only available if the timezone field is UTC.
Usage (cli): Usage (cli):

View File

@ -6,7 +6,7 @@
jc - JSON Convert `rsync` command output parser jc - JSON Convert `rsync` command output parser
Supports the `-i` or `--itemize-changes` options with all levels of Supports the `-i` or `--itemize-changes` options with all levels of
verbosity. This parser will process the STDOUT output or a log file verbosity. This parser will process the `STDOUT` output or a log file
generated with the `--log-file` option. generated with the `--log-file` option.
Usage (cli): Usage (cli):
@ -51,8 +51,8 @@ Schema:
"time": string, "time": string,
"process": integer, "process": integer,
"metadata": string, "metadata": string,
"update_type": string/null, [0] "update_type": string/null, # [0]
"file_type": string/null, [1] "file_type": string/null, # [1]
"checksum_or_value_different": bool/null, "checksum_or_value_different": bool/null,
"size_different": bool/null, "size_different": bool/null,
"modification_time_different": bool/null, "modification_time_different": bool/null,
@ -61,7 +61,7 @@ Schema:
"group_different": bool/null, "group_different": bool/null,
"acl_different": bool/null, "acl_different": bool/null,
"extended_attribute_different": bool/null, "extended_attribute_different": bool/null,
"epoch": integer, [2] "epoch": integer, # [2]
} }
] ]
} }

View File

@ -6,10 +6,10 @@
jc - JSON Convert `rsync` command output streaming parser jc - JSON Convert `rsync` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Supports the `-i` or `--itemize-changes` options with all levels of Supports the `-i` or `--itemize-changes` options with all levels of
verbosity. This parser will process the STDOUT output or a log file verbosity. This parser will process the `STDOUT` output or a log file
generated with the `--log-file` option. generated with the `--log-file` option.
Usage (cli): Usage (cli):
@ -49,8 +49,8 @@ Schema:
"time": string, "time": string,
"process": integer, "process": integer,
"metadata": string, "metadata": string,
"update_type": string/null, [0] "update_type": string/null, # [0]
"file_type": string/null, [1] "file_type": string/null, # [1]
"checksum_or_value_different": bool/null, "checksum_or_value_different": bool/null,
"size_different": bool/null, "size_different": bool/null,
"modification_time_different": bool/null, "modification_time_different": bool/null,
@ -59,7 +59,7 @@ Schema:
"group_different": bool/null, "group_different": bool/null,
"acl_different": bool/null, "acl_different": bool/null,
"extended_attribute_different": bool/null, "extended_attribute_different": bool/null,
"epoch": integer, [2] "epoch": integer, # [2]
# below object only exists if using -qq or ignore_exceptions=True # below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": { "_jc_meta": {

View File

@ -5,8 +5,8 @@
jc - JSON Convert `ss` command output parser jc - JSON Convert `ss` command output parser
Extended information options like -e and -p are not supported and may cause Extended information options like `-e` and `-p` are not supported and may
parsing irregularities. cause parsing irregularities.
Usage (cli): Usage (cli):
@ -23,8 +23,8 @@ Usage (module):
Schema: Schema:
Information from https://www.cyberciti.biz/files/ss.html used to define Information from https://www.cyberciti.biz/files/ss.html used to define
field names field names
[ [
{ {

View File

@ -6,7 +6,7 @@
jc - JSON Convert `stat` command output streaming parser jc - JSON Convert `stat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
The `xxx_epoch` calculated timestamp fields are naive. (i.e. based on the The `xxx_epoch` calculated timestamp fields are naive. (i.e. based on the
local time of the system the parser is run on). local time of the system the parser is run on).

View File

@ -5,10 +5,10 @@
jc - JSON Convert `sysctl -a` command output parser jc - JSON Convert `sysctl -a` command output parser
Note: Since `sysctl` output is not easily parsable only a very simple > Note: Since `sysctl` output is not easily parsable only a very simple
key/value object will be output. An attempt is made to convert obvious > key/value object will be output. An attempt is made to convert obvious
integers and floats. If no conversion is desired, use the `-r` > integers and floats. If no conversion is desired, use the `-r`
command-line argument or the `raw=True` argument in `parse()`. > command-line argument or the `raw=True` argument in `parse()`.
Usage (cli): Usage (cli):

View File

@ -11,8 +11,8 @@ used to redirect the output to a file that can be read by `jc`.
Alternatively, the output from `/usr/bin/time` can be redirected to `STDOUT` Alternatively, the output from `/usr/bin/time` can be redirected to `STDOUT`
so `jc` can receive it. so `jc` can receive it.
Note: `/usr/bin/time` is similar but different from the Bash builtin > Note: `/usr/bin/time` is similar but different from the Bash builtin
`time` command. > `time` command.
Usage (cli): Usage (cli):
@ -26,8 +26,8 @@ Usage (module):
Schema: Schema:
Source: https://www.freebsd.org/cgi/man.cgi?query=getrusage Source: https://www.freebsd.org/cgi/man.cgi?query=getrusage,
https://man7.org/linux/man-pages/man1/time.1.html https://man7.org/linux/man-pages/man1/time.1.html
{ {
"real_time": float, "real_time": float,

339
docs/parsers/top.md Normal file
View File

@ -0,0 +1,339 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.top"></a>
# jc.parsers.top
jc - JSON Convert `top -b` command output parser
Requires batch mode (`-b`). The `-n` option must also be used to limit
the number of times `top` is run.
Warning messages will be printed to `STDERR` if truncated fields are
detected. These warnings can be suppressed with the `-q` or `quiet=True`
option.
Usage (cli):
$ top -b -n 3 | jc --top
or
$ jc top -b -n 3
Usage (module):
import jc
result = jc.parse('top', top_command_output)
Schema:
All `-` values are converted to `null`
[
{
"time": string,
"uptime": integer,
"users": integer,
"load_1m": float,
"load_5m": float,
"load_15m": float,
"tasks_total": integer,
"tasks_running": integer,
"tasks_sleeping": integer,
"tasks_stopped": integer,
"tasks_zombie": integer,
"cpu_user": float,
"cpu_sys": float,
"cpu_nice": float,
"cpu_idle": float,
"cpu_wait": float,
"cpu_hardware": float,
"cpu_software": float,
"cpu_steal": float,
"mem_total": float, # [0]
"mem_free": float, # [0]
"mem_used": float, # [0]
"mem_buff_cache": float, # [0]
"swap_total": float, # [0]
"swap_free": float, # [0]
"swap_used": float, # [0]
"mem_available": float, # [0]
"processes": [
{
"pid": integer,
"user": string,
"priority": integer,
"nice": integer,
"virtual_mem": float, # [1]
"resident_mem": float, # [1]
"shared_mem": float, # [1]
"status": string,
"percent_cpu": float,
"percent_mem": float,
"time_hundredths": string,
"command": string,
"parent_pid": integer,
"uid": integer,
"real_uid": integer,
"real_user": string,
"saved_uid": integer,
"saved_user": string,
"gid": integer,
"group": string,
"pgrp": integer,
"tty": string,
"tty_process_gid": integer,
"session_id": integer,
"thread_count": integer,
"last_used_processor": integer,
"time": string,
"swap": float, # [1]
"code": float, # [1]
"data": float, # [1]
"major_page_fault_count": integer,
"minor_page_fault_count": integer,
"dirty_pages_count": integer,
"sleeping_in_function": string,
"flags": string,
"cgroups": string,
"supplementary_gids": [
integer
],
"supplementary_groups": [
string
],
"thread_gid": integer,
"environment_variables": [
string
]
"major_page_fault_count_delta": integer,
"minor_page_fault_count_delta": integer,
"used": float, # [1]
"ipc_namespace_inode": integer,
"mount_namespace_inode": integer,
"net_namespace_inode": integer,
"pid_namespace_inode": integer,
"user_namespace_inode": integer,
"nts_namespace_inode": integer,
"control_group_name": string,
"lxc_container_name": string,
"numa_node": integer,
"out_of_mem_adjustment": integer,
"out_of_mem_score": integer,
"resident_anon_mem": integer,
"resident_file_backed_mem": integer,
"resident_locked_mem": integer,
"resident_shared_mem": integer
}
]
}
]
[0] Values are in the units output by `top`
[1] Unit suffix stripped during float conversion
Examples:
$ top -b -n 3 | jc --top -p
[
{
"time": "11:20:43",
"uptime": 118,
"users": 2,
"load_1m": 0.0,
"load_5m": 0.01,
"load_15m": 0.05,
"tasks_total": 108,
"tasks_running": 2,
"tasks_sleeping": 106,
"tasks_stopped": 0,
"tasks_zombie": 0,
"cpu_user": 5.6,
"cpu_sys": 11.1,
"cpu_nice": 0.0,
"cpu_idle": 83.3,
"cpu_wait": 0.0,
"cpu_hardware": 0.0,
"cpu_software": 0.0,
"cpu_steal": 0.0,
"mem_total": 3.7,
"mem_free": 3.3,
"mem_used": 0.2,
"mem_buff_cache": 0.2,
"swap_total": 2.0,
"swap_free": 2.0,
"swap_used": 0.0,
"mem_available": 3.3,
"processes": [
{
"pid": 2225,
"user": "kbrazil",
"priority": 20,
"nice": 0,
"virtual_mem": 158.1,
"resident_mem": 2.2,
"shared_mem": 1.6,
"status": "running",
"percent_cpu": 12.5,
"percent_mem": 0.1,
"time_hundredths": "0:00.02",
"command": "top",
"parent_pid": 1884,
"uid": 1000,
"real_uid": 1000,
"real_user": "kbrazil",
"saved_uid": 1000,
"saved_user": "kbrazil",
"gid": 1000,
"group": "kbrazil",
"pgrp": 2225,
"tty": "pts/0",
"tty_process_gid": 2225,
"session_id": 1884,
"thread_count": 1,
"last_used_processor": 0,
"time": "0:00",
"swap": 0.0,
"code": 0.1,
"data": 1.0,
"major_page_fault_count": 0,
"minor_page_fault_count": 736,
"dirty_pages_count": 0,
"sleeping_in_function": null,
"flags": "..4.2...",
"cgroups": "1:name=systemd:/user.slice/user-1000.+",
"supplementary_gids": [
10,
1000
],
"supplementary_groups": [
"wheel",
"kbrazil"
],
"thread_gid": 2225,
"environment_variables": [
"XDG_SESSION_ID=2",
"HOSTNAME=localhost"
],
"major_page_fault_count_delta": 0,
"minor_page_fault_count_delta": 4,
"used": 2.2,
"ipc_namespace_inode": 4026531839,
"mount_namespace_inode": 4026531840,
"net_namespace_inode": 4026531956,
"pid_namespace_inode": 4026531836,
"user_namespace_inode": 4026531837,
"nts_namespace_inode": 4026531838
},
...
]
}
]
$ top -b -n 3 | jc --top -p -r
[
{
"time": "11:20:43",
"uptime": "1:18",
"users": "2",
"load_1m": "0.00",
"load_5m": "0.01",
"load_15m": "0.05",
"tasks_total": "108",
"tasks_running": "2",
"tasks_sleeping": "106",
"tasks_stopped": "0",
"tasks_zombie": "0",
"cpu_user": "5.6",
"cpu_sys": "11.1",
"cpu_nice": "0.0",
"cpu_idle": "83.3",
"cpu_wait": "0.0",
"cpu_hardware": "0.0",
"cpu_software": "0.0",
"cpu_steal": "0.0",
"swap_total": "2.0",
"swap_free": "2.0",
"swap_used": "0.0",
"mem_available": "3.3",
"processes": [
{
"PID": "2225",
"USER": "kbrazil",
"PR": "20",
"NI": "0",
"VIRT": "158.1m",
"RES": "2.2m",
"SHR": "1.6m",
"S": "R",
"%CPU": "12.5",
"%MEM": "0.1",
"TIME+": "0:00.02",
"COMMAND": "top",
"PPID": "1884",
"UID": "1000",
"RUID": "1000",
"RUSER": "kbrazil",
"SUID": "1000",
"SUSER": "kbrazil",
"GID": "1000",
"GROUP": "kbrazil",
"PGRP": "2225",
"TTY": "pts/0",
"TPGID": "2225",
"SID": "1884",
"nTH": "1",
"P": "0",
"TIME": "0:00",
"SWAP": "0.0m",
"CODE": "0.1m",
"DATA": "1.0m",
"nMaj": "0",
"nMin": "736",
"nDRT": "0",
"WCHAN": "-",
"Flags": "..4.2...",
"CGROUPS": "1:name=systemd:/user.slice/user-1000.+",
"SUPGIDS": "10,1000",
"SUPGRPS": "wheel,kbrazil",
"TGID": "2225",
"ENVIRON": "XDG_SESSION_ID=2 HOSTNAME=localhost S+",
"vMj": "0",
"vMn": "4",
"USED": "2.2m",
"nsIPC": "4026531839",
"nsMNT": "4026531840",
"nsNET": "4026531956",
"nsPID": "4026531836",
"nsUSER": "4026531837",
"nsUTS": "4026531838"
},
...
]
}
]
<a id="jc.parsers.top.parse"></a>
### parse
```python
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
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

180
docs/parsers/top_s.md Normal file
View File

@ -0,0 +1,180 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.top_s"></a>
# jc.parsers.top\_s
jc - JSON Convert `top -b` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
Requires batch mode (`-b`).
Warning messages will be printed to `STDERR` if truncated fields are
detected. These warnings can be suppressed with the `-q` or `quiet=True`
option.
Usage (cli):
$ top -b | jc --top-s
Usage (module):
import jc
result = jc.parse('top_s', top_command_output.splitlines())
for item in result:
# do something
Schema:
{
"time": string,
"uptime": integer,
"users": integer,
"load_1m": float,
"load_5m": float,
"load_15m": float,
"tasks_total": integer,
"tasks_running": integer,
"tasks_sleeping": integer,
"tasks_stopped": integer,
"tasks_zombie": integer,
"cpu_user": float,
"cpu_sys": float,
"cpu_nice": float,
"cpu_idle": float,
"cpu_wait": float,
"cpu_hardware": float,
"cpu_software": float,
"cpu_steal": float,
"mem_total": float, # [0]
"mem_free": float, # [0]
"mem_used": float, # [0]
"mem_buff_cache": float, # [0]
"swap_total": float, # [0]
"swap_free": float, # [0]
"swap_used": float, # [0]
"mem_available": float, # [0]
"processes": [
{
"pid": integer,
"user": string,
"priority": integer,
"nice": integer,
"virtual_mem": float, # [1]
"resident_mem": float, # [1]
"shared_mem": float, # [1]
"status": string,
"percent_cpu": float,
"percent_mem": float,
"time_hundredths": string,
"command": string,
"parent_pid": integer,
"uid": integer,
"real_uid": integer,
"real_user": string,
"saved_uid": integer,
"saved_user": string,
"gid": integer,
"group": string,
"pgrp": integer,
"tty": string,
"tty_process_gid": integer,
"session_id": integer,
"thread_count": integer,
"last_used_processor": integer,
"time": string,
"swap": float, # [1]
"code": float, # [1]
"data": float, # [1]
"major_page_fault_count": integer,
"minor_page_fault_count": integer,
"dirty_pages_count": integer,
"sleeping_in_function": string,
"flags": string,
"cgroups": string,
"supplementary_gids": [
integer
],
"supplementary_groups": [
string
],
"thread_gid": integer,
"environment_variables": [
string
]
"major_page_fault_count_delta": integer,
"minor_page_fault_count_delta": integer,
"used": float, # [1]
"ipc_namespace_inode": integer,
"mount_namespace_inode": integer,
"net_namespace_inode": integer,
"pid_namespace_inode": integer,
"user_namespace_inode": integer,
"nts_namespace_inode": integer,
"control_group_name": string,
"lxc_container_name": string,
"numa_node": integer,
"out_of_mem_adjustment": integer,
"out_of_mem_score": integer,
"resident_anon_mem": integer,
"resident_file_backed_mem": integer,
"resident_locked_mem": integer,
"resident_shared_mem": integer
}
],
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
[0] Values are in the units output by `top`
[1] Unit suffix stripped during float conversion
Examples:
$ top -b | jc --top-s
{"time":"11:24:50","uptime":2,"users":2,"load_1m":0.23,"load_5m":...}
...
$ top -b | jc --top-s -r
{"time":"11:24:50","uptime":"2 min","users":"2","load_1m":"0.23","lo...}
...
<a id="jc.parsers.top_s.parse"></a>
### parse
```python
@add_jc_meta
def parse(data: Iterable[str],
raw: bool = False,
quiet: bool = False,
ignore_exceptions: bool = False) -> Union[Iterable[Dict], tuple]
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -7,12 +7,12 @@ jc - JSON Convert `traceroute` command output parser
Supports `traceroute` and `traceroute6` output. Supports `traceroute` and `traceroute6` output.
Note: On some operating systems you will need to redirect `STDERR` to > Note: On some operating systems you will need to redirect `STDERR` to
`STDOUT` for destination info since the header line is sent to > `STDOUT` for destination info since the header line is sent to
`STDERR`. A warning message will be printed to `STDERR` if the > `STDERR`. A warning message will be printed to `STDERR` if the
header row is not found. > header row is not found.
>
e.g. `$ traceroute 8.8.8.8 2>&1 | jc --traceroute` > e.g. `$ traceroute 8.8.8.8 2>&1 | jc --traceroute`
Usage (cli): Usage (cli):

View File

@ -5,7 +5,7 @@
jc - JSON Convert `uname -a` command output parser jc - JSON Convert `uname -a` command output parser
Note: Must use `uname -a` > Note: Must use `uname -a`
Usage (cli): Usage (cli):

View File

@ -6,7 +6,7 @@
jc - JSON Convert `vmstat` command output streaming parser jc - JSON Convert `vmstat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Options supported: `-a`, `-w`, `-d`, `-t` Options supported: `-a`, `-w`, `-d`, `-t`
@ -21,11 +21,11 @@ Usage (cli):
$ vmstat | jc --vmstat-s $ vmstat | jc --vmstat-s
> Note: When piping `jc` converted `vmstat` output to other processes it may > Note: When piping `jc` converted `vmstat` output to other processes it may
appear the output is hanging due to the OS pipe buffers. This is because > appear the output is hanging due to the OS pipe buffers. This is because
`vmstat` output is too small to quickly fill up the buffer. Use the `-u` > `vmstat` output is too small to quickly fill up the buffer. Use the `-u`
option to unbuffer the `jc` output if you would like immediate output. See > option to unbuffer the `jc` output if you would like immediate output. See
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):
@ -75,9 +75,9 @@ Schema:
# below object only exists if using -qq or ignore_exceptions=True # below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": { "_jc_meta": {
"success": boolean, # [2] "success": boolean, # [2]
"error": string, # [3] "error": string, # [3]
"line": string # [3] "line": string # [3]
} }
} }

View File

@ -16,8 +16,8 @@ Usage (module):
Schema: Schema:
XML Document converted to a Dictionary XML Document converted to a Dictionary. See https://github.com/martinblech/xmltodict
See https://github.com/martinblech/xmltodict for details for details.
{ {
"key1": string/object, "key1": string/object,

View File

@ -5,7 +5,7 @@
jc - JSON Convert `YAML` file parser jc - JSON Convert `YAML` file parser
Note: datetime objects will be converted to strings. > Note: `datetime` objects will be converted to strings.
Usage (cli): Usage (cli):

View File

@ -5,10 +5,7 @@
jc - JSON Convert `zipinfo` command output parser jc - JSON Convert `zipinfo` command output parser
Options supported: > Note: No `zipinfo` options are supported.
- none
Note: The default listing format.
Usage (cli): Usage (cli):

View File

@ -3,6 +3,7 @@
* [jc.utils](#jc.utils) * [jc.utils](#jc.utils)
* [warning\_message](#jc.utils.warning_message) * [warning\_message](#jc.utils.warning_message)
* [error\_message](#jc.utils.error_message) * [error\_message](#jc.utils.error_message)
* [is\_compatible](#jc.utils.is_compatible)
* [compatibility](#jc.utils.compatibility) * [compatibility](#jc.utils.compatibility)
* [has\_data](#jc.utils.has_data) * [has\_data](#jc.utils.has_data)
* [convert\_to\_int](#jc.utils.convert_to_int) * [convert\_to\_int](#jc.utils.convert_to_int)
@ -26,8 +27,8 @@ jc - JSON Convert utils
def warning_message(message_lines: List[str]) -> None def warning_message(message_lines: List[str]) -> None
``` ```
Prints warning message for non-fatal issues. The first line is Prints warning message to `STDERR` for non-fatal issues. The first line
prepended with 'jc: Warning - ' and subsequent lines are indented. is prepended with 'jc: Warning - ' and subsequent lines are indented.
Wraps text as needed based on the terminal width. Wraps text as needed based on the terminal width.
Parameters: Parameters:
@ -46,7 +47,7 @@ Returns:
def error_message(message_lines: List[str]) -> None def error_message(message_lines: List[str]) -> None
``` ```
Prints an error message for fatal issues. The first line is Prints an error message to `STDERR` for fatal issues. The first line is
prepended with 'jc: Error - ' and subsequent lines are indented. prepended with 'jc: Error - ' and subsequent lines are indented.
Wraps text as needed based on the terminal width. Wraps text as needed based on the terminal width.
@ -58,6 +59,16 @@ Returns:
None - just prints output to STDERR None - just prints output to STDERR
<a id="jc.utils.is_compatible"></a>
### is\_compatible
```python
def is_compatible(compatible: List) -> bool
```
Returns True if the parser is compatible with the running OS platform.
<a id="jc.utils.compatibility"></a> <a id="jc.utils.compatibility"></a>
### compatibility ### compatibility
@ -68,8 +79,8 @@ def compatibility(mod_name: str,
quiet: bool = False) -> None quiet: bool = False) -> None
``` ```
Checks for the parser's compatibility with the running OS Checks for the parser's compatibility with the running OS platform and
platform. prints a warning message to `STDERR` if not compatible and quiet=False.
Parameters: Parameters:

155
jc/cli.py
View File

@ -2,15 +2,16 @@
JC cli module JC cli module
""" """
import io
import sys import sys
import os import os
import textwrap import textwrap
import signal import signal
import shlex import shlex
import subprocess import subprocess
import json
from .lib import (__version__, parser_info, all_parser_info, parsers, from .lib import (__version__, parser_info, all_parser_info, parsers,
_get_parser, _parser_is_streaming) _get_parser, _parser_is_streaming, standard_parser_mod_list,
plugin_parser_mod_list, streaming_parser_mod_list)
from . import utils from . import utils
from . import tracebackplus from . import tracebackplus
from .exceptions import LibraryNotInstalled, ParseError from .exceptions import LibraryNotInstalled, ParseError
@ -21,13 +22,12 @@ try:
from pygments import highlight from pygments import highlight
from pygments.style import Style from pygments.style import Style
from pygments.token import (Name, Number, String, Keyword) from pygments.token import (Name, Number, String, Keyword)
from pygments.lexers import JsonLexer from pygments.lexers.data import JsonLexer, YamlLexer
from pygments.formatters import Terminal256Formatter from pygments.formatters import Terminal256Formatter
PYGMENTS_INSTALLED = True PYGMENTS_INSTALLED = True
except Exception: except Exception:
PYGMENTS_INSTALLED = False PYGMENTS_INSTALLED = False
JC_ERROR_EXIT = 100 JC_ERROR_EXIT = 100
@ -134,7 +134,7 @@ def set_env_colors(env_colors=None):
def piped_output(force_color): def piped_output(force_color):
""" """
Return False if stdout is a TTY. True if output is being piped to Return False if `STDOUT` is a TTY. True if output is being piped to
another program and foce_color is True. This allows forcing of ANSI another program and foce_color is True. This allows forcing of ANSI
color codes even when using pipes. color codes even when using pipes.
""" """
@ -180,6 +180,9 @@ def about_jc():
'python_version': '.'.join((str(sys.version_info.major), str(sys.version_info.minor), str(sys.version_info.micro))), 'python_version': '.'.join((str(sys.version_info.major), str(sys.version_info.minor), str(sys.version_info.micro))),
'python_path': sys.executable, 'python_path': sys.executable,
'parser_count': len(all_parser_info()), 'parser_count': len(all_parser_info()),
'standard_parser_count': len(standard_parser_mod_list()),
'streaming_parser_count': len(streaming_parser_mod_list()),
'plugin_parser_count': len(plugin_parser_mod_list()),
'parsers': all_parser_info() 'parsers': all_parser_info()
} }
@ -210,6 +213,7 @@ def helptext():
-r raw JSON output -r raw JSON output
-u unbuffer output -u unbuffer output
-v version info -v version info
-y YAML output
Examples: Examples:
Standard Syntax: Standard Syntax:
@ -263,11 +267,52 @@ def versiontext():
return textwrap.dedent(versiontext_string) return textwrap.dedent(versiontext_string)
def yaml_out(data, pretty=False, env_colors=None, mono=False, piped_out=False, ascii_only=False):
"""
Return a YAML formatted string. String may include color codes. If the
YAML library is not installed, output will fall back to JSON with a
warning message to STDERR"""
# make ruamel.yaml import optional
try:
from ruamel.yaml import YAML
YAML_INSTALLED = True
except Exception:
YAML_INSTALLED = False
if YAML_INSTALLED:
y_string_buf = io.BytesIO()
# monkey patch to disable plugins since we don't use them and in
# ruamel.yaml versions prior to 0.17.0 the use of __file__ in the
# plugin code is incompatible with the pyoxidizer packager
YAML.official_plug_ins = lambda a: []
yaml=YAML()
yaml.default_flow_style = False
yaml.explicit_start = True
yaml.allow_unicode = not ascii_only
yaml.encoding = 'utf-8'
yaml.dump(data, y_string_buf)
y_string = y_string_buf.getvalue().decode('utf-8')[:-1]
if not mono and not piped_out:
# set colors
class JcStyle(Style):
styles = set_env_colors(env_colors)
return str(highlight(y_string, YamlLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
return y_string
utils.warning_message(['YAML Library not installed. Reverting to JSON output.'])
return json_out(data, pretty=pretty, env_colors=env_colors, mono=mono, piped_out=piped_out, ascii_only=ascii_only)
def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False, ascii_only=False): def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False, ascii_only=False):
""" """
Return a JSON formatted string. String may include color codes or be Return a JSON formatted string. String may include color codes or be
pretty printed. pretty printed.
""" """
import json
separators = (',', ':') separators = (',', ':')
indent = None indent = None
@ -287,24 +332,42 @@ def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False, a
return j_string return j_string
def safe_print_json(list_or_dict, pretty=None, env_colors=None, mono=None, def safe_print_out(list_or_dict, pretty=None, env_colors=None, mono=None,
piped_out=None, flush=None): piped_out=None, flush=None, yaml=None):
"""Safely prints JSON output in both UTF-8 and ASCII systems""" """Safely prints JSON or YAML output in both UTF-8 and ASCII systems"""
try: if yaml:
print(json_out(list_or_dict, try:
pretty=pretty, print(yaml_out(list_or_dict,
env_colors=env_colors, pretty=pretty,
mono=mono, env_colors=env_colors,
piped_out=piped_out), mono=mono,
flush=flush) piped_out=piped_out),
except UnicodeEncodeError: flush=flush)
print(json_out(list_or_dict, except UnicodeEncodeError:
pretty=pretty, print(yaml_out(list_or_dict,
env_colors=env_colors, pretty=pretty,
mono=mono, env_colors=env_colors,
piped_out=piped_out, mono=mono,
ascii_only=True), piped_out=piped_out,
flush=flush) ascii_only=True),
flush=flush)
else:
try:
print(json_out(list_or_dict,
pretty=pretty,
env_colors=env_colors,
mono=mono,
piped_out=piped_out),
flush=flush)
except UnicodeEncodeError:
print(json_out(list_or_dict,
pretty=pretty,
env_colors=env_colors,
mono=mono,
piped_out=piped_out,
ascii_only=True),
flush=flush)
def magic_parser(args): def magic_parser(args):
@ -435,6 +498,7 @@ def main():
raw = 'r' in options raw = 'r' in options
unbuffer = 'u' in options unbuffer = 'u' in options
version_info = 'v' in options version_info = 'v' in options
yaml_out = 'y' in options
if verbose_debug: if verbose_debug:
tracebackplus.enable(context=11) tracebackplus.enable(context=11)
@ -443,11 +507,12 @@ def main():
mono = True mono = True
if about: if about:
safe_print_json(about_jc(), safe_print_out(about_jc(),
pretty=pretty, pretty=pretty,
env_colors=jc_colors, env_colors=jc_colors,
mono=mono, mono=mono,
piped_out=piped_output(force_color)) piped_out=piped_output(force_color),
yaml=yaml_out)
sys.exit(0) sys.exit(0)
if help_me: if help_me:
@ -534,12 +599,13 @@ def main():
quiet=quiet, quiet=quiet,
ignore_exceptions=ignore_exceptions) ignore_exceptions=ignore_exceptions)
for line in result: for line in result:
safe_print_json(line, safe_print_out(line,
pretty=pretty, pretty=pretty,
env_colors=jc_colors, env_colors=jc_colors,
mono=mono, mono=mono,
piped_out=piped_output(force_color), piped_out=piped_output(force_color),
flush=unbuffer) flush=unbuffer,
yaml=yaml_out)
sys.exit(combined_exit_code(magic_exit_code, 0)) sys.exit(combined_exit_code(magic_exit_code, 0))
@ -550,12 +616,13 @@ def main():
raw=raw, raw=raw,
quiet=quiet) quiet=quiet)
safe_print_json(result, safe_print_out(result,
pretty=pretty, pretty=pretty,
env_colors=jc_colors, env_colors=jc_colors,
mono=mono, mono=mono,
piped_out=piped_output(force_color), piped_out=piped_output(force_color),
flush=unbuffer) flush=unbuffer,
yaml=yaml_out)
sys.exit(combined_exit_code(magic_exit_code, 0)) sys.exit(combined_exit_code(magic_exit_code, 0))
@ -570,14 +637,6 @@ def main():
]) ])
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT)) sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
except json.JSONDecodeError:
if debug:
raise
utils.error_message(['There was an issue generating the JSON output.',
'For details use the -d or -dd option.'])
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
except Exception: except Exception:
if debug: if debug:
raise raise

View File

@ -6,7 +6,7 @@ import importlib
from typing import Dict, List, Iterable, Union, Iterator from typing import Dict, List, Iterable, Union, Iterator
from jc import appdirs from jc import appdirs
__version__ = '1.19.0' __version__ = '1.20.0'
parsers = [ parsers = [
'acpi', 'acpi',
@ -91,6 +91,8 @@ parsers = [
'systeminfo', 'systeminfo',
'time', 'time',
'timedatectl', 'timedatectl',
'top',
'top-s',
'tracepath', 'tracepath',
'traceroute', 'traceroute',
'ufw', 'ufw',

View File

@ -3,7 +3,12 @@
This parser converts ASCII and Unicode text tables with single-line rows. This parser converts ASCII and Unicode text tables with single-line rows.
Column headers must be at least two spaces apart from each other and must Column headers must be at least two spaces apart from each other and must
be unique. be unique. For best results, column headers should be left-justified. If
column separators are present, then non-left-justified headers will be fixed
automatically.
Row separators are optional and are ignored. Each non-row-separator line is
considered a separate row in the table.
For example: For example:
@ -117,7 +122,7 @@ from jc.parsers.universal import sparse_table_parse
class info(): class info():
"""Provides parser metadata (version, author, etc.)""" """Provides parser metadata (version, author, etc.)"""
version = '1.0' version = '1.1'
description = 'ASCII and Unicode table parser' description = 'ASCII and Unicode table parser'
author = 'Kelly Brazil' author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com' author_email = 'kellyjonbrazil@gmail.com'
@ -222,18 +227,20 @@ def _is_separator(line: str) -> bool:
def _snake_case(line: str) -> str: def _snake_case(line: str) -> str:
""" """
replace spaces between words and special characters with an underscore Replace spaces between words and special characters with an underscore
and set to lowercase and set to lowercase. Ignore the replacement char (�) used for header
padding.
""" """
line = re.sub(r'[^a-zA-Z0-9 ]', '_', line) line = re.sub(r'[^a-zA-Z0-9 ]', '_', line) # special characters
return re.sub(r'\b \b', '_', line).lower() line = re.sub(r'\b \b', '_', line).lower() # spaces betwee words
return line
def _normalize_rows(table: str) -> List[str]: def _normalize_rows(table: str) -> List[str]:
""" """
returns a List of row strings. Header is snake-cased returns a List of row strings. Header is snake-cased
""" """
result = [] result: List[str] = []
for line in table.splitlines(): for line in table.splitlines():
# skip blank lines # skip blank lines
if not line.strip(): if not line.strip():
@ -243,7 +250,36 @@ def _normalize_rows(table: str) -> List[str]:
if _is_separator(line): if _is_separator(line):
continue continue
# data row - remove column separators # header or data row found - remove column separators
if not result: # this is the header row
# normalize the separator
line = line.replace('', '|')\
.replace('', '|')\
.replace('', '|')\
.replace('', '|')\
.replace('', '|')\
.replace('', '|')\
.replace('', '|')\
.replace('', '|')\
.replace('', '|')
# find the number of chars to pad in front of headers that are too
# far away from the separator. Replace spaces with unicode char: �
# we will remove this char from headers after sparse_table_parse
problem_header_pattern = re.compile(r'(?:\| )( +)([^|]+)')
problem_headers = problem_header_pattern.findall(line)
if problem_headers:
for p_header in problem_headers:
old_header = p_header[0] + p_header[1]
sub_chars = '' * len(p_header[0])
new_header = sub_chars + p_header[1]
line = line.replace(old_header, new_header)
line = line.replace('|', ' ')
result.append(_snake_case(line))
continue
# this is a data row
line = line.replace('|', ' ')\ line = line.replace('|', ' ')\
.replace('', ' ')\ .replace('', ' ')\
.replace('', ' ')\ .replace('', ' ')\
@ -256,7 +292,6 @@ def _normalize_rows(table: str) -> List[str]:
.replace('', ' ') .replace('', ' ')
result.append(line) result.append(line)
result[0] = _snake_case(result[0])
return result return result
@ -266,7 +301,8 @@ def _fixup_headers(table: List[Dict]) -> List[Dict]:
for row in table: for row in table:
new_row = row.copy() new_row = row.copy()
for k in row: for k in row:
k_new = k # remove replacement character
k_new = k.replace('', '')
# remove consecutive underscores # remove consecutive underscores
k_new = re.sub(r'__+', '_', k_new) k_new = re.sub(r'__+', '_', k_new)
# remove trailing underscores # remove trailing underscores

View File

@ -25,9 +25,10 @@ headers are joined with an underscore. All values are returned as strings,
except empty strings, which are converted to None/null. except empty strings, which are converted to None/null.
> Note: table column separator characters (e.g. `|`) cannot be present > Note: table column separator characters (e.g. `|`) cannot be present
inside the cell data. If detected, a warning message will be printed to > inside the cell data. If detected, a warning message will be printed to
STDERR and the line will be skipped. The warning message can be suppressed > `STDERR` and the line will be skipped. The warning message can be
by using the `-q` command option or by setting `quiet=True` in `parse()`. > suppressed by using the `-q` command option or by setting `quiet=True` in
> `parse()`.
Usage (cli): Usage (cli):

View File

@ -1,14 +1,14 @@
"""jc - JSON Convert `csv` file streaming parser """jc - JSON Convert `csv` file streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
The `csv` streaming parser will attempt to automatically detect the The `csv` streaming parser will attempt to automatically detect the
delimiter character. If the delimiter cannot be detected it will default delimiter character. If the delimiter cannot be detected it will default
to comma. The first row of the file must be a header row. to comma. The first row of the file must be a header row.
Note: The first 100 rows are read into memory to enable delimiter detection, > Note: The first 100 rows are read into memory to enable delimiter
then the rest of the rows are loaded lazily. > detection, then the rest of the rows are loaded lazily.
Usage (cli): Usage (cli):

View File

@ -14,7 +14,7 @@ time of the system the parser is run on)
Usage (cli): Usage (cli):
C:> dir | jc --dir C:\> dir | jc --dir
Usage (module): Usage (module):
@ -37,7 +37,7 @@ Schema:
Examples: Examples:
C:> dir | jc --dir -p C:\> dir | jc --dir -p
[ [
{ {
"date": "03/24/2021", "date": "03/24/2021",
@ -78,7 +78,7 @@ Examples:
... ...
] ]
C:> dir | jc --dir -p -r C:\> dir | jc --dir -p -r
[ [
{ {
"date": "03/24/2021", "date": "03/24/2021",

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `foo` command output streaming parser """jc - JSON Convert `foo` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
<<Short foo description and caveats>> <<Short foo description and caveats>>

View File

@ -38,8 +38,8 @@ Schema:
"author": string, "author": string,
"author_email": string, "author_email": string,
"date": string, "date": string,
"epoch": integer, [0] "epoch": integer, # [0]
"epoch_utc": integer, [1] "epoch_utc": integer, # [1]
"commit_by": string, "commit_by": string,
"commit_by_email": string, "commit_by_email": string,
"commit_by_date": string, "commit_by_date": string,

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `git log` command output streaming parser """jc - JSON Convert `git log` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Can be used with the following format options: Can be used with the following format options:
- `oneline` - `oneline`
@ -39,8 +39,8 @@ Schema:
"author": string, "author": string,
"author_email": string, "author_email": string,
"date": string, "date": string,
"epoch": integer, [0] "epoch": integer, # [0]
"epoch_utc": integer, [1] "epoch_utc": integer, # [1]
"commit_by": string, "commit_by": string,
"commit_by_email": string, "commit_by_email": string,
"commit_by_date": string, "commit_by_date": string,

View File

@ -1,6 +1,6 @@
"""jc - JSON Convert `ifconfig` command output parser """jc - JSON Convert `ifconfig` command output parser
Note: No `ifconfig` options are supported. > Note: No `ifconfig` options are supported.
Usage (cli): Usage (cli):

View File

@ -7,8 +7,8 @@ Parses standard `INI` files and files containing simple key/value pairs.
- If duplicate keys are found, only the last value will be used. - If duplicate keys are found, only the last value will be used.
> Note: Values starting and ending with quotation marks will have the marks > Note: Values starting and ending with quotation marks will have the marks
removed. If you would like to keep the quotation marks, use the `-r` > removed. If you would like to keep the quotation marks, use the `-r`
command-line argument or the `raw=True` argument in `parse()`. > command-line argument or the `raw=True` argument in `parse()`.
Usage (cli): Usage (cli):
@ -21,8 +21,8 @@ Usage (module):
Schema: Schema:
ini or key/value document converted to a dictionary - see the ini or key/value document converted to a dictionary - see the configparser
configparser standard library documentation for more details. standard library documentation for more details.
{ {
"key1": string, "key1": string,

View File

@ -1,6 +1,6 @@
"""jc - JSON Convert `iostat` command output parser """jc - JSON Convert `iostat` command output parser
Note: `iostat` version 11 and higher include a JSON output option > Note: `iostat` version 11 and higher include a JSON output option
Usage (cli): Usage (cli):

View File

@ -1,20 +1,20 @@
"""jc - JSON Convert `iostat` command output streaming parser """jc - JSON Convert `iostat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Note: `iostat` version 11 and higher include a JSON output option > Note: `iostat` version 11 and higher include a JSON output option
Usage (cli): Usage (cli):
$ iostat | jc --iostat-s $ iostat | jc --iostat-s
> Note: When piping `jc` converted `iostat` output to other processes it may > Note: When piping `jc` converted `iostat` output to other processes it may
appear the output is hanging due to the OS pipe buffers. This is because > appear the output is hanging due to the OS pipe buffers. This is because
`iostat` output is too small to quickly fill up the buffer. Use the `-u` > `iostat` output is too small to quickly fill up the buffer. Use the `-u`
option to unbuffer the `jc` output if you would like immediate output. See > option to unbuffer the `jc` output if you would like immediate output. See
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):

View File

@ -7,8 +7,8 @@ Supports files containing simple key/value pairs.
- If duplicate keys are found, only the last value will be used. - If duplicate keys are found, only the last value will be used.
> Note: Values starting and ending with quotation marks will have the marks > Note: Values starting and ending with quotation marks will have the marks
removed. If you would like to keep the quotation marks, use the `-r` > removed. If you would like to keep the quotation marks, use the `-r`
command-line argument or the `raw=True` argument in `parse()`. > command-line argument or the `raw=True` argument in `parse()`.
Usage (cli): Usage (cli):
@ -21,8 +21,8 @@ Usage (module):
Schema: Schema:
key/value document converted to a dictionary - see the key/value document converted to a dictionary - see the configparser standard
configparser standard library documentation for more details. library documentation for more details.
{ {
"key1": string, "key1": string,

View File

@ -4,11 +4,12 @@ Options supported:
- `lbaR1` - `lbaR1`
- `--time-style=full-iso` - `--time-style=full-iso`
Note: The `-1`, `-l`, or `-b` option of `ls` should be used to correctly > Note: The `-1`, `-l`, or `-b` option of `ls` should be used to correctly
parse filenames that include newline characters. Since `ls` does not encode > parse filenames that include newline characters. Since `ls` does not
newlines in filenames when outputting to a pipe it will cause `jc` to see > encode newlines in filenames when outputting to a pipe it will cause `jc`
multiple files instead of a single file if `-1`, `-l`, or `-b` is not used. > to see multiple files instead of a single file if `-1`, `-l`, or `-b` is
Alternatively, `vdir` can be used, which is the same as running `ls -lb`. > not used. Alternatively, `vdir` can be used, which is the same as running
> `ls -lb`.
The `epoch` calculated timestamp field is naive. (i.e. based on the local The `epoch` calculated timestamp field is naive. (i.e. based on the local
time of the system the parser is run on) time of the system the parser is run on)

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `ls` and `vdir` command output streaming parser """jc - JSON Convert `ls` and `vdir` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Requires the `-l` option to be used on `ls`. If there are newline characters Requires the `-l` option to be used on `ls`. If there are newline characters
in the filename, then make sure to use the `-b` option on `ls`. in the filename, then make sure to use the `-b` option on `ls`.

View File

@ -17,9 +17,9 @@ Usage (module):
Schema: Schema:
Note: <item> object keynames are assigned directly from the lsusb > Note: <item> object keynames are assigned directly from the lsusb
output. If there are duplicate <item> names in a section, only the > output. If there are duplicate <item> names in a section, only the
last one is converted. > last one is converted.
[ [
{ {

View File

@ -1,6 +1,6 @@
"""jc - JSON Convert `mpstat` command output parser """jc - JSON Convert `mpstat` command output parser
Note: Latest versions of `mpstat` support JSON output (v11.5.1+) > Note: Latest versions of `mpstat` support JSON output (v11.5.1+)
Usage (cli): Usage (cli):

View File

@ -1,9 +1,9 @@
"""jc - JSON Convert `mpstat` command output streaming parser """jc - JSON Convert `mpstat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Note: Latest versions of `mpstat` support JSON output (v11.5.1+) > Note: Latest versions of `mpstat` support JSON output (v11.5.1+)
Usage (cli): Usage (cli):

View File

@ -24,18 +24,18 @@ Usage (module):
Schema: Schema:
Because there are so many options, the schema is not strictly defined. Because there are so many options, the schema is not strictly defined.
Integer and Float value conversions are attempted and the original Integer and Float value conversions are attempted and the original
values are kept if they fail. If you don't want automatic conversion, values are kept if they fail. If you don't want automatic conversion,
then use the -r or raw=True option to disable it. then use the `-r` or `raw=True` option to disable it.
The structure is flat, for the most part, but there are a couple of The structure is flat, for the most part, but there are a couple of
"well-known" keys that are further parsed into objects for convenience. "well-known" keys that are further parsed into objects for convenience.
These are documented below. These are documented below.
[ [
{ {
"<key>": string/integer/float, [0] "<key>": string/integer/float, # [0]
"dhcp4_option_x": { "dhcp4_option_x": {
"name": string, "name": string,
"value": string/integer/float, "value": string/integer/float,

View File

@ -1,4 +1,4 @@
"""jc - JSON Convert `pidstat` command output parser """jc - JSON Convert `pidstat -h` command output parser
Must use the `-h` option in `pidstat`. All other `pidstat` options are Must use the `-h` option in `pidstat`. All other `pidstat` options are
supported in combination with `-h`. supported in combination with `-h`.
@ -129,7 +129,7 @@ from jc.exceptions import ParseError
class info(): class info():
"""Provides parser metadata (version, author, etc.)""" """Provides parser metadata (version, author, etc.)"""
version = '1.0' version = '1.0'
description = '`pidstat` command parser' description = '`pidstat -h` command parser'
author = 'Kelly Brazil' author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com' author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux'] compatible = ['linux']

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `pidstat` command output streaming parser """jc - JSON Convert `pidstat -h` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Must use the `-h` option in `pidstat`. All other `pidstat` options are Must use the `-h` option in `pidstat`. All other `pidstat` options are
supported in combination with `-h`. supported in combination with `-h`.
@ -11,11 +11,11 @@ Usage (cli):
$ pidstat | jc --pidstat-s $ pidstat | jc --pidstat-s
> Note: When piping `jc` converted `pidstat` output to other processes it > Note: When piping `jc` converted `pidstat` output to other processes it
may appear the output is hanging due to the OS pipe buffers. This is > may appear the output is hanging due to the OS pipe buffers. This is
because `pidstat` output is too small to quickly fill up the buffer. Use > because `pidstat` output is too small to quickly fill up the buffer. Use
the `-u` option to unbuffer the `jc` output if you would like immediate > the `-u` option to unbuffer the `jc` output if you would like immediate
output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):
@ -84,7 +84,7 @@ from jc.exceptions import ParseError
class info(): class info():
"""Provides parser metadata (version, author, etc.)""" """Provides parser metadata (version, author, etc.)"""
version = '1.0' version = '1.0'
description = '`pidstat` command streaming parser' description = '`pidstat -h` command streaming parser'
author = 'Kelly Brazil' author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com' author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux'] compatible = ['linux']

View File

@ -4,8 +4,8 @@ Supports `ping` and `ping6` output.
Usage (cli): Usage (cli):
Note: Use the ping `-c` (count) option, otherwise data will not be > Note: Use the ping `-c` (count) option, otherwise data will not be
piped to `jc`. > piped to `jc`.
$ ping -c 3 1.2.3.4 | jc --ping $ ping -c 3 1.2.3.4 | jc --ping

View File

@ -1,20 +1,20 @@
"""jc - JSON Convert `ping` command output streaming parser """jc - JSON Convert `ping` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Supports `ping` and `ping6` output. Supports `ping` and `ping6` output.
Usage (cli): Usage (cli):
$ ping | jc --ping-s $ ping 1.2.3.4 | jc --ping-s
> Note: When piping `jc` converted `ping` output to other processes it may > Note: When piping `jc` converted `ping` output to other processes it may
appear the output is hanging due to the OS pipe buffers. This is because > appear the output is hanging due to the OS pipe buffers. This is because
`ping` output is too small to quickly fill up the buffer. Use the `-u` > `ping` output is too small to quickly fill up the buffer. Use the `-u`
option to unbuffer the `jc` output if you would like immediate output. > option to unbuffer the `jc` output if you would like immediate output.
See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > See the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):

View File

@ -60,12 +60,13 @@ Examples:
} }
] ]
""" """
from typing import List, Dict, Optional
import jc.utils import jc.utils
class info(): class info():
"""Provides parser metadata (version, author, etc.)""" """Provides parser metadata (version, author, etc.)"""
version = '1.3' version = '1.4'
description = '`pip show` command parser' description = '`pip show` command parser'
author = 'Kelly Brazil' author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com' author_email = 'kellyjonbrazil@gmail.com'
@ -76,7 +77,7 @@ class info():
__version__ = info.version __version__ = info.version
def _process(proc_data): def _process(proc_data: List[Dict]) -> List[Dict]:
""" """
Final processing to conform to the schema. Final processing to conform to the schema.
@ -92,7 +93,11 @@ def _process(proc_data):
return proc_data return proc_data
def parse(data, raw=False, quiet=False): def parse(
data: str,
raw: bool = False,
quiet: bool = False
) -> List[Dict]:
""" """
Main text parsing function Main text parsing function
@ -109,8 +114,10 @@ def parse(data, raw=False, quiet=False):
jc.utils.compatibility(__name__, info.compatible, quiet) jc.utils.compatibility(__name__, info.compatible, quiet)
jc.utils.input_type_check(data) jc.utils.input_type_check(data)
raw_output = [] raw_output: List = []
package = {} package: Dict = {}
last_key: str = ''
last_key_data: List = []
# Clear any blank lines # Clear any blank lines
cleandata = list(filter(None, data.splitlines())) cleandata = list(filter(None, data.splitlines()))
@ -119,21 +126,38 @@ def parse(data, raw=False, quiet=False):
for row in cleandata: for row in cleandata:
if row.startswith('---'): if row.startswith('---'):
if last_key_data:
package[last_key] = package[last_key] + '\n' + '\n'.join(last_key_data)
raw_output.append(package) raw_output.append(package)
package = {} package = {}
last_key = ''
last_key_data = []
continue continue
item_key = row.split(': ', maxsplit=1)[0].lower().replace('-', '_') if not row.startswith(' '):
item_value = row.split(': ', maxsplit=1)[1] item_key = row.split(': ', maxsplit=1)[0].lower().replace('-', '_')
item_value: Optional[str] = row.split(': ', maxsplit=1)[1]
if item_value == '': if item_value == '':
item_value = None item_value = None
package.update({item_key: item_value}) if last_key_data and last_key != item_key:
package[last_key] = package[last_key] + '\n' + '\n'.join(last_key_data)
last_key_data = []
raw_output.append(package) package[item_key] = item_value
last_key = item_key
continue
if raw: if row.startswith(' '):
return raw_output last_key_data.append(row.strip())
else: continue
return _process(raw_output)
if package:
if last_key_data:
package[last_key] = package[last_key] + '\n' + '\n'.join(last_key_data)
raw_output.append(package)
return raw_output if raw else _process(raw_output)

View File

@ -17,20 +17,20 @@ Schema:
[ [
{ {
"destination": string, "destination": string,
"gateway": string, "gateway": string,
"genmask": string, "genmask": string,
"flags": string, "flags": string,
"flags_pretty": [ "flags_pretty": [
string string
] ]
"metric": integer, "metric": integer,
"ref": integer, "ref": integer,
"use": integer, "use": integer,
"mss": integer, "mss": integer,
"window": integer, "window": integer,
"irtt": integer, "irtt": integer,
"iface": string "iface": string
} }
] ]

View File

@ -5,7 +5,7 @@ Works with `rpm -qi [package]` or `rpm -qia`.
The `..._epoch` calculated timestamp fields are naive. (i.e. based on the The `..._epoch` calculated timestamp fields are naive. (i.e. based on the
local time of the system the parser is run on) local time of the system the parser is run on)
The `..._epoch_utc` calculated timestamp fields are timezone-aware and is The `..._epoch_utc` calculated timestamp fields are timezone-aware and are
only available if the timezone field is UTC. only available if the timezone field is UTC.
Usage (cli): Usage (cli):

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `rsync` command output parser """jc - JSON Convert `rsync` command output parser
Supports the `-i` or `--itemize-changes` options with all levels of Supports the `-i` or `--itemize-changes` options with all levels of
verbosity. This parser will process the STDOUT output or a log file verbosity. This parser will process the `STDOUT` output or a log file
generated with the `--log-file` option. generated with the `--log-file` option.
Usage (cli): Usage (cli):
@ -46,8 +46,8 @@ Schema:
"time": string, "time": string,
"process": integer, "process": integer,
"metadata": string, "metadata": string,
"update_type": string/null, [0] "update_type": string/null, # [0]
"file_type": string/null, [1] "file_type": string/null, # [1]
"checksum_or_value_different": bool/null, "checksum_or_value_different": bool/null,
"size_different": bool/null, "size_different": bool/null,
"modification_time_different": bool/null, "modification_time_different": bool/null,
@ -56,7 +56,7 @@ Schema:
"group_different": bool/null, "group_different": bool/null,
"acl_different": bool/null, "acl_different": bool/null,
"extended_attribute_different": bool/null, "extended_attribute_different": bool/null,
"epoch": integer, [2] "epoch": integer, # [2]
} }
] ]
} }

View File

@ -1,10 +1,10 @@
"""jc - JSON Convert `rsync` command output streaming parser """jc - JSON Convert `rsync` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Supports the `-i` or `--itemize-changes` options with all levels of Supports the `-i` or `--itemize-changes` options with all levels of
verbosity. This parser will process the STDOUT output or a log file verbosity. This parser will process the `STDOUT` output or a log file
generated with the `--log-file` option. generated with the `--log-file` option.
Usage (cli): Usage (cli):
@ -44,8 +44,8 @@ Schema:
"time": string, "time": string,
"process": integer, "process": integer,
"metadata": string, "metadata": string,
"update_type": string/null, [0] "update_type": string/null, # [0]
"file_type": string/null, [1] "file_type": string/null, # [1]
"checksum_or_value_different": bool/null, "checksum_or_value_different": bool/null,
"size_different": bool/null, "size_different": bool/null,
"modification_time_different": bool/null, "modification_time_different": bool/null,
@ -54,7 +54,7 @@ Schema:
"group_different": bool/null, "group_different": bool/null,
"acl_different": bool/null, "acl_different": bool/null,
"extended_attribute_different": bool/null, "extended_attribute_different": bool/null,
"epoch": integer, [2] "epoch": integer, # [2]
# below object only exists if using -qq or ignore_exceptions=True # below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": { "_jc_meta": {

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `ss` command output parser """jc - JSON Convert `ss` command output parser
Extended information options like -e and -p are not supported and may cause Extended information options like `-e` and `-p` are not supported and may
parsing irregularities. cause parsing irregularities.
Usage (cli): Usage (cli):
@ -18,8 +18,8 @@ Usage (module):
Schema: Schema:
Information from https://www.cyberciti.biz/files/ss.html used to define Information from https://www.cyberciti.biz/files/ss.html used to define
field names field names
[ [
{ {

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `stat` command output streaming parser """jc - JSON Convert `stat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
The `xxx_epoch` calculated timestamp fields are naive. (i.e. based on the The `xxx_epoch` calculated timestamp fields are naive. (i.e. based on the
local time of the system the parser is run on). local time of the system the parser is run on).

View File

@ -1,9 +1,9 @@
"""jc - JSON Convert `sysctl -a` command output parser """jc - JSON Convert `sysctl -a` command output parser
Note: Since `sysctl` output is not easily parsable only a very simple > Note: Since `sysctl` output is not easily parsable only a very simple
key/value object will be output. An attempt is made to convert obvious > key/value object will be output. An attempt is made to convert obvious
integers and floats. If no conversion is desired, use the `-r` > integers and floats. If no conversion is desired, use the `-r`
command-line argument or the `raw=True` argument in `parse()`. > command-line argument or the `raw=True` argument in `parse()`.
Usage (cli): Usage (cli):

View File

@ -6,8 +6,8 @@ used to redirect the output to a file that can be read by `jc`.
Alternatively, the output from `/usr/bin/time` can be redirected to `STDOUT` Alternatively, the output from `/usr/bin/time` can be redirected to `STDOUT`
so `jc` can receive it. so `jc` can receive it.
Note: `/usr/bin/time` is similar but different from the Bash builtin > Note: `/usr/bin/time` is similar but different from the Bash builtin
`time` command. > `time` command.
Usage (cli): Usage (cli):
@ -21,8 +21,8 @@ Usage (module):
Schema: Schema:
Source: https://www.freebsd.org/cgi/man.cgi?query=getrusage Source: https://www.freebsd.org/cgi/man.cgi?query=getrusage,
https://man7.org/linux/man-pages/man1/time.1.html https://man7.org/linux/man-pages/man1/time.1.html
{ {
"real_time": float, "real_time": float,

640
jc/parsers/top.py Normal file
View File

@ -0,0 +1,640 @@
"""jc - JSON Convert `top -b` command output parser
Requires batch mode (`-b`). The `-n` option must also be used to limit
the number of times `top` is run.
Warning messages will be printed to `STDERR` if truncated fields are
detected. These warnings can be suppressed with the `-q` or `quiet=True`
option.
Usage (cli):
$ top -b -n 3 | jc --top
or
$ jc top -b -n 3
Usage (module):
import jc
result = jc.parse('top', top_command_output)
Schema:
All `-` values are converted to `null`
[
{
"time": string,
"uptime": integer,
"users": integer,
"load_1m": float,
"load_5m": float,
"load_15m": float,
"tasks_total": integer,
"tasks_running": integer,
"tasks_sleeping": integer,
"tasks_stopped": integer,
"tasks_zombie": integer,
"cpu_user": float,
"cpu_sys": float,
"cpu_nice": float,
"cpu_idle": float,
"cpu_wait": float,
"cpu_hardware": float,
"cpu_software": float,
"cpu_steal": float,
"mem_total": float, # [0]
"mem_free": float, # [0]
"mem_used": float, # [0]
"mem_buff_cache": float, # [0]
"swap_total": float, # [0]
"swap_free": float, # [0]
"swap_used": float, # [0]
"mem_available": float, # [0]
"processes": [
{
"pid": integer,
"user": string,
"priority": integer,
"nice": integer,
"virtual_mem": float, # [1]
"resident_mem": float, # [1]
"shared_mem": float, # [1]
"status": string,
"percent_cpu": float,
"percent_mem": float,
"time_hundredths": string,
"command": string,
"parent_pid": integer,
"uid": integer,
"real_uid": integer,
"real_user": string,
"saved_uid": integer,
"saved_user": string,
"gid": integer,
"group": string,
"pgrp": integer,
"tty": string,
"tty_process_gid": integer,
"session_id": integer,
"thread_count": integer,
"last_used_processor": integer,
"time": string,
"swap": float, # [1]
"code": float, # [1]
"data": float, # [1]
"major_page_fault_count": integer,
"minor_page_fault_count": integer,
"dirty_pages_count": integer,
"sleeping_in_function": string,
"flags": string,
"cgroups": string,
"supplementary_gids": [
integer
],
"supplementary_groups": [
string
],
"thread_gid": integer,
"environment_variables": [
string
]
"major_page_fault_count_delta": integer,
"minor_page_fault_count_delta": integer,
"used": float, # [1]
"ipc_namespace_inode": integer,
"mount_namespace_inode": integer,
"net_namespace_inode": integer,
"pid_namespace_inode": integer,
"user_namespace_inode": integer,
"nts_namespace_inode": integer,
"control_group_name": string,
"lxc_container_name": string,
"numa_node": integer,
"out_of_mem_adjustment": integer,
"out_of_mem_score": integer,
"resident_anon_mem": integer,
"resident_file_backed_mem": integer,
"resident_locked_mem": integer,
"resident_shared_mem": integer
}
]
}
]
[0] Values are in the units output by `top`
[1] Unit suffix stripped during float conversion
Examples:
$ top -b -n 3 | jc --top -p
[
{
"time": "11:20:43",
"uptime": 118,
"users": 2,
"load_1m": 0.0,
"load_5m": 0.01,
"load_15m": 0.05,
"tasks_total": 108,
"tasks_running": 2,
"tasks_sleeping": 106,
"tasks_stopped": 0,
"tasks_zombie": 0,
"cpu_user": 5.6,
"cpu_sys": 11.1,
"cpu_nice": 0.0,
"cpu_idle": 83.3,
"cpu_wait": 0.0,
"cpu_hardware": 0.0,
"cpu_software": 0.0,
"cpu_steal": 0.0,
"mem_total": 3.7,
"mem_free": 3.3,
"mem_used": 0.2,
"mem_buff_cache": 0.2,
"swap_total": 2.0,
"swap_free": 2.0,
"swap_used": 0.0,
"mem_available": 3.3,
"processes": [
{
"pid": 2225,
"user": "kbrazil",
"priority": 20,
"nice": 0,
"virtual_mem": 158.1,
"resident_mem": 2.2,
"shared_mem": 1.6,
"status": "running",
"percent_cpu": 12.5,
"percent_mem": 0.1,
"time_hundredths": "0:00.02",
"command": "top",
"parent_pid": 1884,
"uid": 1000,
"real_uid": 1000,
"real_user": "kbrazil",
"saved_uid": 1000,
"saved_user": "kbrazil",
"gid": 1000,
"group": "kbrazil",
"pgrp": 2225,
"tty": "pts/0",
"tty_process_gid": 2225,
"session_id": 1884,
"thread_count": 1,
"last_used_processor": 0,
"time": "0:00",
"swap": 0.0,
"code": 0.1,
"data": 1.0,
"major_page_fault_count": 0,
"minor_page_fault_count": 736,
"dirty_pages_count": 0,
"sleeping_in_function": null,
"flags": "..4.2...",
"cgroups": "1:name=systemd:/user.slice/user-1000.+",
"supplementary_gids": [
10,
1000
],
"supplementary_groups": [
"wheel",
"kbrazil"
],
"thread_gid": 2225,
"environment_variables": [
"XDG_SESSION_ID=2",
"HOSTNAME=localhost"
],
"major_page_fault_count_delta": 0,
"minor_page_fault_count_delta": 4,
"used": 2.2,
"ipc_namespace_inode": 4026531839,
"mount_namespace_inode": 4026531840,
"net_namespace_inode": 4026531956,
"pid_namespace_inode": 4026531836,
"user_namespace_inode": 4026531837,
"nts_namespace_inode": 4026531838
},
...
]
}
]
$ top -b -n 3 | jc --top -p -r
[
{
"time": "11:20:43",
"uptime": "1:18",
"users": "2",
"load_1m": "0.00",
"load_5m": "0.01",
"load_15m": "0.05",
"tasks_total": "108",
"tasks_running": "2",
"tasks_sleeping": "106",
"tasks_stopped": "0",
"tasks_zombie": "0",
"cpu_user": "5.6",
"cpu_sys": "11.1",
"cpu_nice": "0.0",
"cpu_idle": "83.3",
"cpu_wait": "0.0",
"cpu_hardware": "0.0",
"cpu_software": "0.0",
"cpu_steal": "0.0",
"swap_total": "2.0",
"swap_free": "2.0",
"swap_used": "0.0",
"mem_available": "3.3",
"processes": [
{
"PID": "2225",
"USER": "kbrazil",
"PR": "20",
"NI": "0",
"VIRT": "158.1m",
"RES": "2.2m",
"SHR": "1.6m",
"S": "R",
"%CPU": "12.5",
"%MEM": "0.1",
"TIME+": "0:00.02",
"COMMAND": "top",
"PPID": "1884",
"UID": "1000",
"RUID": "1000",
"RUSER": "kbrazil",
"SUID": "1000",
"SUSER": "kbrazil",
"GID": "1000",
"GROUP": "kbrazil",
"PGRP": "2225",
"TTY": "pts/0",
"TPGID": "2225",
"SID": "1884",
"nTH": "1",
"P": "0",
"TIME": "0:00",
"SWAP": "0.0m",
"CODE": "0.1m",
"DATA": "1.0m",
"nMaj": "0",
"nMin": "736",
"nDRT": "0",
"WCHAN": "-",
"Flags": "..4.2...",
"CGROUPS": "1:name=systemd:/user.slice/user-1000.+",
"SUPGIDS": "10,1000",
"SUPGRPS": "wheel,kbrazil",
"TGID": "2225",
"ENVIRON": "XDG_SESSION_ID=2 HOSTNAME=localhost S+",
"vMj": "0",
"vMn": "4",
"USED": "2.2m",
"nsIPC": "4026531839",
"nsMNT": "4026531840",
"nsNET": "4026531956",
"nsPID": "4026531836",
"nsUSER": "4026531837",
"nsUTS": "4026531838"
},
...
]
}
]
"""
from typing import List, Dict
import jc.utils
from jc.parsers.uptime import parse as parse_uptime
from jc.parsers.universal import sparse_table_parse as parse_table
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = '`top -b` command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux']
magic_commands = ['top -b']
__version__ = info.version
def _safe_split(string: str, path: str, delim: str = ' ', quiet=False) -> List[str]:
split_string = string.split(delim)
split_string = [x for x in split_string if not x.endswith('+')]
if string.endswith('+') and not quiet:
jc.utils.warning_message([f'{path} list was truncated by top'])
return split_string
def _process(proc_data: List[Dict], quiet=False) -> List[Dict]:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (List of Dictionaries) raw structured data to process
Returns:
List of Dictionaries. Structured to conform to the schema.
"""
key_map: Dict = {
'%CPU': 'percent_cpu',
'%MEM': 'percent_mem',
'CGNAME': 'control_group_name',
'CGROUPS': 'cgroups',
'CODE': 'code',
'COMMAND': 'command',
'DATA': 'data',
'ENVIRON': 'environment_variables',
'Flags': 'flags',
'GID': 'gid',
'GROUP': 'group',
'LXC': 'lxc_container_name',
'NI': 'nice',
'NU': 'numa_node',
'OOMa': 'out_of_mem_adjustment',
'OOMs': 'out_of_mem_score',
'P': 'last_used_processor',
'PGRP': 'pgrp',
'PID': 'pid',
'PPID': 'parent_pid',
'PR': 'priority',
'RES': 'resident_mem',
'RSan': 'resident_anon_mem',
'RSfd': 'resident_file_backed_mem',
'RSlk': 'resident_locked_mem',
'RSsh': 'resident_shared_mem',
'RUID': 'real_uid',
'RUSER': 'real_user',
'S': 'status',
'SHR': 'shared_mem',
'SID': 'session_id',
'SUID': 'saved_uid',
'SUPGIDS': 'supplementary_gids',
'SUPGRPS': 'supplementary_groups',
'SUSER': 'saved_user',
'SWAP': 'swap',
'TGID': 'thread_gid',
'TIME': 'time',
'TIME+': 'time_hundredths',
'TPGID': 'tty_process_gid',
'TTY': 'tty',
'UID': 'uid',
'USED': 'used',
'USER': 'user',
'VIRT': 'virtual_mem',
'WCHAN': 'sleeping_in_function',
'nDRT': 'dirty_pages_count',
'nMaj': 'major_page_fault_count',
'nMin': 'minor_page_fault_count',
'nTH': 'thread_count',
'nsIPC': 'ipc_namespace_inode',
'nsMNT': 'mount_namespace_inode',
'nsNET': 'net_namespace_inode',
'nsPID': 'pid_namespace_inode',
'nsUSER': 'user_namespace_inode',
'nsUTS': 'nts_namespace_inode',
'vMj': 'major_page_fault_count_delta',
'vMn': 'minor_page_fault_count_delta'
}
status_map: Dict = {
'D': 'uninterruptible sleep',
'I': 'idle',
'R': 'running',
'S': 'sleeping',
'T': 'stopped by job control signal',
't': 'stopped by debugger during trace',
'Z': 'zombie'
}
int_list: List = [
'uptime', 'users', 'tasks_total', 'tasks_running', 'tasks_sleeping', 'tasks_stopped',
'tasks_zombie', 'pid', 'priority', 'nice', 'parent_pid', 'uid', 'real_uid', 'saved_uid',
'gid', 'pgrp', 'tty_process_gid', 'session_id', 'thread_count', 'last_used_processor',
'major_page_fault_count', 'minor_page_fault_count', 'dirty_pages_count', 'thread_gid',
'major_page_fault_count_delta', 'minor_page_fault_count_delta', 'ipc_namespace_inode',
'mount_namespace_inode', 'net_namespace_inode', 'pid_namespace_inode',
'user_namespace_inode', 'nts_namespace_inode', 'numa_node', 'out_of_mem_adjustment',
'out_of_mem_score', 'resident_anon_mem', 'resident_file_backed_mem', 'resident_locked_mem',
'resident_shared_mem'
]
float_list: List = [
'load_1m', 'load_5m', 'load_15m', 'cpu_user', 'cpu_sys', 'cpu_nice', 'cpu_idle', 'cpu_wait',
'cpu_hardware', 'cpu_software', 'cpu_steal', 'percent_cpu', 'percent_mem', 'mem_total',
'mem_free', 'mem_used', 'mem_buff_cache', 'swap_total', 'swap_free', 'swap_used',
'mem_available', 'virtual_mem', 'resident_mem', 'shared_mem', 'swap', 'code', 'data', 'used'
]
for idx, item in enumerate(proc_data):
for key in item:
# root truncation warnings
if isinstance(item[key], str) and item[key].endswith('+') and not quiet:
jc.utils.warning_message([f'item[{idx}]["{key}"] was truncated by top'])
# root int and float conversions
if key in int_list:
item[key] = jc.utils.convert_to_int(item[key])
if key in float_list:
item[key] = jc.utils.convert_to_float(item[key])
for p_idx, proc in enumerate(item['processes']):
# rename processes keys to conform to schema
proc_copy = proc.copy()
for old_key in proc_copy.keys():
if old_key in proc:
proc[key_map[old_key]] = proc.pop(old_key)
else:
jc.utils.warning_message([f'Unknown field detected at item[{idx}]["processes"]: {old_key}'])
# cleanup values
for key in proc.keys():
# set dashes to nulls
if proc[key] == '-':
proc[key] = None
# because of ambiguous column spacing (right-justified numbers
# with left-justified dashes for null values) there are some hanging
# dashes that need to be cleaned up in some values. Seems the correct
# values are kept in the assigned columns, so this should not affect
# data integrity.
if proc[key] and proc[key].endswith(' -'):
new_val = proc[key][::-1]
new_val = new_val.replace('- ', '')
new_val = new_val[::-1]
proc[key] = new_val
# do int/float conversions for the process objects
if proc[key]:
if key in int_list:
proc[key] = jc.utils.convert_to_int(proc[key])
if key in float_list:
proc[key] = jc.utils.convert_to_float(proc[key])
# set status string
if proc.get('status'):
proc['status'] = status_map[proc['status']]
# split supplementary_gids to a list of integers
if proc.get('supplementary_gids'):
proc['supplementary_gids'] = _safe_split(
proc['supplementary_gids'],
f'item[{idx}]["processes"][{p_idx}]["supplementary_gids"]',
',', quiet=quiet
)
proc['supplementary_gids'] = [jc.utils.convert_to_int(x) for x in proc['supplementary_gids']]
# split supplementary_groups to a list of strings
if proc.get('supplementary_groups'):
proc['supplementary_groups'] = _safe_split(
proc['supplementary_groups'],
f'item[{idx}]["processes"][{p_idx}]["supplementary_groups"]',
',', quiet=quiet
)
# split environment_variables to a list of strings
if proc.get('environment_variables'):
proc['environment_variables'] = _safe_split(
proc['environment_variables'],
f'item[{idx}]["processes"][{p_idx}]["environment_variables"]',
quiet=quiet
)
for key in proc.keys():
# print final warnings for truncated string values
if isinstance(proc[key], str) and proc[key].endswith('+') and not quiet:
jc.utils.warning_message([f'item[{idx}]["processes"][{p_idx}]["{key}"] was truncated by top'])
return proc_data
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.
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
jc.utils.input_type_check(data)
raw_output: List = []
item_obj: Dict = {}
process_table = False
process_list: List = []
if jc.utils.has_data(data):
for line in data.splitlines():
if line.startswith('top - '):
if item_obj:
if process_list:
item_obj['processes'] = parse_table(process_list)
raw_output.append(item_obj)
process_table = False
process_list = []
item_obj = {}
uptime_str = line[6:]
item_obj.update(parse_uptime(uptime_str, raw=True))
continue
if line.startswith('Tasks:'):
# Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
line_list = line.split()
item_obj.update(
{
'tasks_total': line_list[1],
'tasks_running': line_list[3],
'tasks_sleeping': line_list[5],
'tasks_stopped': line_list[7],
'tasks_zombie': line_list[9]
}
)
continue
if line.startswith('%Cpu(s):'):
# %Cpu(s): 5.9 us, 5.9 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
line_list = line.split()
item_obj.update(
{
'cpu_user': line_list[1],
'cpu_sys': line_list[3],
'cpu_nice': line_list[5],
'cpu_idle': line_list[7],
'cpu_wait': line_list[9],
'cpu_hardware': line_list[11],
'cpu_software': line_list[13],
'cpu_steal': line_list[15]
}
)
continue
if line[1:].startswith('iB Mem :'):
# KiB Mem : 3861332 total, 3446476 free, 216940 used, 197916 buff/cache
line_list = line.split()
item_obj.update(
{
'mem_total': line_list[3],
'mem_free': line_list[5],
'mem_used': line_list[7],
'mem_buff_cache': line_list[9]
}
)
continue
if line[1:].startswith('iB Swap:'):
# KiB Swap: 2097148 total, 2097148 free, 0 used. 3419356 avail Mem
line_list = line.split()
item_obj.update(
{
'swap_total': line_list[2],
'swap_free': line_list[4],
'swap_used': line_list[6],
'mem_available': line_list[8]
}
)
continue
if not process_table and line == '':
process_table = True
continue
if process_table and not line == '':
process_list.append(line)
continue
if item_obj:
if process_list:
item_obj['processes'] = parse_table(process_list)
raw_output.append(item_obj)
return raw_output if raw else _process(raw_output, quiet=quiet)

490
jc/parsers/top_s.py Normal file
View File

@ -0,0 +1,490 @@
"""jc - JSON Convert `top -b` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
Requires batch mode (`-b`).
Warning messages will be printed to `STDERR` if truncated fields are
detected. These warnings can be suppressed with the `-q` or `quiet=True`
option.
Usage (cli):
$ top -b | jc --top-s
Usage (module):
import jc
result = jc.parse('top_s', top_command_output.splitlines())
for item in result:
# do something
Schema:
{
"time": string,
"uptime": integer,
"users": integer,
"load_1m": float,
"load_5m": float,
"load_15m": float,
"tasks_total": integer,
"tasks_running": integer,
"tasks_sleeping": integer,
"tasks_stopped": integer,
"tasks_zombie": integer,
"cpu_user": float,
"cpu_sys": float,
"cpu_nice": float,
"cpu_idle": float,
"cpu_wait": float,
"cpu_hardware": float,
"cpu_software": float,
"cpu_steal": float,
"mem_total": float, # [0]
"mem_free": float, # [0]
"mem_used": float, # [0]
"mem_buff_cache": float, # [0]
"swap_total": float, # [0]
"swap_free": float, # [0]
"swap_used": float, # [0]
"mem_available": float, # [0]
"processes": [
{
"pid": integer,
"user": string,
"priority": integer,
"nice": integer,
"virtual_mem": float, # [1]
"resident_mem": float, # [1]
"shared_mem": float, # [1]
"status": string,
"percent_cpu": float,
"percent_mem": float,
"time_hundredths": string,
"command": string,
"parent_pid": integer,
"uid": integer,
"real_uid": integer,
"real_user": string,
"saved_uid": integer,
"saved_user": string,
"gid": integer,
"group": string,
"pgrp": integer,
"tty": string,
"tty_process_gid": integer,
"session_id": integer,
"thread_count": integer,
"last_used_processor": integer,
"time": string,
"swap": float, # [1]
"code": float, # [1]
"data": float, # [1]
"major_page_fault_count": integer,
"minor_page_fault_count": integer,
"dirty_pages_count": integer,
"sleeping_in_function": string,
"flags": string,
"cgroups": string,
"supplementary_gids": [
integer
],
"supplementary_groups": [
string
],
"thread_gid": integer,
"environment_variables": [
string
]
"major_page_fault_count_delta": integer,
"minor_page_fault_count_delta": integer,
"used": float, # [1]
"ipc_namespace_inode": integer,
"mount_namespace_inode": integer,
"net_namespace_inode": integer,
"pid_namespace_inode": integer,
"user_namespace_inode": integer,
"nts_namespace_inode": integer,
"control_group_name": string,
"lxc_container_name": string,
"numa_node": integer,
"out_of_mem_adjustment": integer,
"out_of_mem_score": integer,
"resident_anon_mem": integer,
"resident_file_backed_mem": integer,
"resident_locked_mem": integer,
"resident_shared_mem": integer
}
],
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
[0] Values are in the units output by `top`
[1] Unit suffix stripped during float conversion
Examples:
$ top -b | jc --top-s
{"time":"11:24:50","uptime":2,"users":2,"load_1m":0.23,"load_5m":...}
...
$ top -b | jc --top-s -r
{"time":"11:24:50","uptime":"2 min","users":"2","load_1m":"0.23","lo...}
...
"""
from typing import List, Dict, Iterable, Union
import jc.utils
from jc.streaming import (
add_jc_meta, streaming_input_type_check, streaming_line_input_type_check, raise_or_yield
)
from jc.exceptions import ParseError
from jc.parsers.uptime import parse as parse_uptime
from jc.parsers.universal import sparse_table_parse as parse_table
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = '`top -b` command streaming parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux']
streaming = True
__version__ = info.version
def _safe_split(string: str, path: str, delim: str = ' ', quiet=False) -> List[str]:
split_string = string.split(delim)
split_string = [x for x in split_string if not x.endswith('+')]
if string.endswith('+') and not quiet:
jc.utils.warning_message([f'{path} list was truncated by top'])
return split_string
def _process(proc_data: Dict, idx=0, quiet=False) -> Dict:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (Dictionary) raw structured data to process
Returns:
Dictionary. Structured data to conform to the schema.
"""
key_map: Dict = {
'%CPU': 'percent_cpu',
'%MEM': 'percent_mem',
'CGNAME': 'control_group_name',
'CGROUPS': 'cgroups',
'CODE': 'code',
'COMMAND': 'command',
'DATA': 'data',
'ENVIRON': 'environment_variables',
'Flags': 'flags',
'GID': 'gid',
'GROUP': 'group',
'LXC': 'lxc_container_name',
'NI': 'nice',
'NU': 'numa_node',
'OOMa': 'out_of_mem_adjustment',
'OOMs': 'out_of_mem_score',
'P': 'last_used_processor',
'PGRP': 'pgrp',
'PID': 'pid',
'PPID': 'parent_pid',
'PR': 'priority',
'RES': 'resident_mem',
'RSan': 'resident_anon_mem',
'RSfd': 'resident_file_backed_mem',
'RSlk': 'resident_locked_mem',
'RSsh': 'resident_shared_mem',
'RUID': 'real_uid',
'RUSER': 'real_user',
'S': 'status',
'SHR': 'shared_mem',
'SID': 'session_id',
'SUID': 'saved_uid',
'SUPGIDS': 'supplementary_gids',
'SUPGRPS': 'supplementary_groups',
'SUSER': 'saved_user',
'SWAP': 'swap',
'TGID': 'thread_gid',
'TIME': 'time',
'TIME+': 'time_hundredths',
'TPGID': 'tty_process_gid',
'TTY': 'tty',
'UID': 'uid',
'USED': 'used',
'USER': 'user',
'VIRT': 'virtual_mem',
'WCHAN': 'sleeping_in_function',
'nDRT': 'dirty_pages_count',
'nMaj': 'major_page_fault_count',
'nMin': 'minor_page_fault_count',
'nTH': 'thread_count',
'nsIPC': 'ipc_namespace_inode',
'nsMNT': 'mount_namespace_inode',
'nsNET': 'net_namespace_inode',
'nsPID': 'pid_namespace_inode',
'nsUSER': 'user_namespace_inode',
'nsUTS': 'nts_namespace_inode',
'vMj': 'major_page_fault_count_delta',
'vMn': 'minor_page_fault_count_delta'
}
status_map: Dict = {
'D': 'uninterruptible sleep',
'I': 'idle',
'R': 'running',
'S': 'sleeping',
'T': 'stopped by job control signal',
't': 'stopped by debugger during trace',
'Z': 'zombie'
}
int_list: List = [
'uptime', 'users', 'tasks_total', 'tasks_running', 'tasks_sleeping', 'tasks_stopped',
'tasks_zombie', 'pid', 'priority', 'nice', 'parent_pid', 'uid', 'real_uid', 'saved_uid',
'gid', 'pgrp', 'tty_process_gid', 'session_id', 'thread_count', 'last_used_processor',
'major_page_fault_count', 'minor_page_fault_count', 'dirty_pages_count', 'thread_gid',
'major_page_fault_count_delta', 'minor_page_fault_count_delta', 'ipc_namespace_inode',
'mount_namespace_inode', 'net_namespace_inode', 'pid_namespace_inode',
'user_namespace_inode', 'nts_namespace_inode', 'numa_node', 'out_of_mem_adjustment',
'out_of_mem_score', 'resident_anon_mem', 'resident_file_backed_mem', 'resident_locked_mem',
'resident_shared_mem'
]
float_list: List = [
'load_1m', 'load_5m', 'load_15m', 'cpu_user', 'cpu_sys', 'cpu_nice', 'cpu_idle', 'cpu_wait',
'cpu_hardware', 'cpu_software', 'cpu_steal', 'percent_cpu', 'percent_mem', 'mem_total',
'mem_free', 'mem_used', 'mem_buff_cache', 'swap_total', 'swap_free', 'swap_used',
'mem_available', 'virtual_mem', 'resident_mem', 'shared_mem', 'swap', 'code', 'data', 'used'
]
for key in proc_data:
# root truncation warnings
if isinstance(proc_data[key], str) and proc_data[key].endswith('+') and not quiet:
jc.utils.warning_message([f'item[{idx}]["{key}"] was truncated by top'])
# root int and float conversions
if key in int_list:
proc_data[key] = jc.utils.convert_to_int(proc_data[key])
if key in float_list:
proc_data[key] = jc.utils.convert_to_float(proc_data[key])
for p_idx, proc in enumerate(proc_data['processes']):
# rename processes keys to conform to schema
proc_copy = proc.copy()
for old_key in proc_copy.keys():
if old_key in proc:
proc[key_map[old_key]] = proc.pop(old_key)
else:
jc.utils.warning_message([f'Unknown field detected at item[{idx}]["processes"]: {old_key}'])
# cleanup values
for key in proc.keys():
# set dashes to nulls
if proc[key] == '-':
proc[key] = None
# because of ambiguous column spacing (right-justified numbers
# with left-justified dashes for null values) there are some hanging
# dashes that need to be cleaned up in some values. Seems the correct
# values are kept in the assigned columns, so this should not affect
# data integrity.
if proc[key] and proc[key].endswith(' -'):
new_val = proc[key][::-1]
new_val = new_val.replace('- ', '')
new_val = new_val[::-1]
proc[key] = new_val
# do int/float conversions for the process objects
if proc[key]:
if key in int_list:
proc[key] = jc.utils.convert_to_int(proc[key])
if key in float_list:
proc[key] = jc.utils.convert_to_float(proc[key])
# set status string
if proc.get('status'):
proc['status'] = status_map[proc['status']]
# split supplementary_gids to a list of integers
if proc.get('supplementary_gids'):
proc['supplementary_gids'] = _safe_split(
proc['supplementary_gids'],
f'item[{idx}]["processes"][{p_idx}]["supplementary_gids"]',
',', quiet=quiet
)
proc['supplementary_gids'] = [jc.utils.convert_to_int(x) for x in proc['supplementary_gids']]
# split supplementary_groups to a list of strings
if proc.get('supplementary_groups'):
proc['supplementary_groups'] = _safe_split(
proc['supplementary_groups'],
f'item[{idx}]["processes"][{p_idx}]["supplementary_groups"]',
',', quiet=quiet
)
# split environment_variables to a list of strings
if proc.get('environment_variables'):
proc['environment_variables'] = _safe_split(
proc['environment_variables'],
f'item[{idx}]["processes"][{p_idx}]["environment_variables"]',
quiet=quiet
)
for key in proc.keys():
# print final warnings for truncated string values
if isinstance(proc[key], str) and proc[key].endswith('+') and not quiet:
jc.utils.warning_message([f'item[{idx}]["processes"][{p_idx}]["{key}"] was truncated by top'])
return proc_data
@add_jc_meta
def parse(
data: Iterable[str],
raw: bool = False,
quiet: bool = False,
ignore_exceptions: bool = False
) -> Union[Iterable[Dict], tuple]:
"""
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
streaming_input_type_check(data)
output_line: Dict = {}
process_table = False
process_list: List = []
idx = 0
for line in data:
try:
streaming_line_input_type_check(line)
if line.startswith('top - '):
if output_line:
if process_list:
output_line['processes'] = parse_table(process_list)
yield output_line if raw else _process(output_line, idx=idx, quiet=quiet)
process_table = False
process_list = []
output_line = {}
idx += 1
uptime_str = line[6:]
output_line.update(parse_uptime(uptime_str, raw=True))
continue
if line.startswith('Tasks:'):
# Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
line_list = line.split()
output_line.update(
{
'tasks_total': line_list[1],
'tasks_running': line_list[3],
'tasks_sleeping': line_list[5],
'tasks_stopped': line_list[7],
'tasks_zombie': line_list[9]
}
)
continue
if line.startswith('%Cpu(s):'):
# %Cpu(s): 5.9 us, 5.9 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
line_list = line.split()
output_line.update(
{
'cpu_user': line_list[1],
'cpu_sys': line_list[3],
'cpu_nice': line_list[5],
'cpu_idle': line_list[7],
'cpu_wait': line_list[9],
'cpu_hardware': line_list[11],
'cpu_software': line_list[13],
'cpu_steal': line_list[15]
}
)
continue
if line[1:].startswith('iB Mem :'):
# KiB Mem : 3861332 total, 3446476 free, 216940 used, 197916 buff/cache
line_list = line.split()
output_line.update(
{
'mem_total': line_list[3],
'mem_free': line_list[5],
'mem_used': line_list[7],
'mem_buff_cache': line_list[9]
}
)
continue
if line[1:].startswith('iB Swap:'):
# KiB Swap: 2097148 total, 2097148 free, 0 used. 3419356 avail Mem
line_list = line.split()
output_line.update(
{
'swap_total': line_list[2],
'swap_free': line_list[4],
'swap_used': line_list[6],
'mem_available': line_list[8]
}
)
continue
if not process_table and line.rstrip() == '':
process_table = True
continue
if process_table and not line.rstrip() == '':
process_list.append(line.rstrip())
continue
if process_table and line.rstrip() == '':
continue
raise ParseError('Not top data')
except Exception as e:
yield raise_or_yield(ignore_exceptions, e, line)
if output_line:
if process_list:
output_line['processes'] = parse_table(process_list)
yield output_line if raw else _process(output_line, idx=idx, quiet=quiet)

View File

@ -2,12 +2,12 @@
Supports `traceroute` and `traceroute6` output. Supports `traceroute` and `traceroute6` output.
Note: On some operating systems you will need to redirect `STDERR` to > Note: On some operating systems you will need to redirect `STDERR` to
`STDOUT` for destination info since the header line is sent to > `STDOUT` for destination info since the header line is sent to
`STDERR`. A warning message will be printed to `STDERR` if the > `STDERR`. A warning message will be printed to `STDERR` if the
header row is not found. > header row is not found.
>
e.g. `$ traceroute 8.8.8.8 2>&1 | jc --traceroute` > e.g. `$ traceroute 8.8.8.8 2>&1 | jc --traceroute`
Usage (cli): Usage (cli):

View File

@ -1,6 +1,6 @@
"""jc - JSON Convert `uname -a` command output parser """jc - JSON Convert `uname -a` command output parser
Note: Must use `uname -a` > Note: Must use `uname -a`
Usage (cli): Usage (cli):

View File

@ -1,7 +1,7 @@
"""jc - JSON Convert `vmstat` command output streaming parser """jc - JSON Convert `vmstat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of > This streaming parser outputs JSON Lines (cli) or returns an Iterable of
Dictionaries (module) > Dictionaries (module)
Options supported: `-a`, `-w`, `-d`, `-t` Options supported: `-a`, `-w`, `-d`, `-t`
@ -16,11 +16,11 @@ Usage (cli):
$ vmstat | jc --vmstat-s $ vmstat | jc --vmstat-s
> Note: When piping `jc` converted `vmstat` output to other processes it may > Note: When piping `jc` converted `vmstat` output to other processes it may
appear the output is hanging due to the OS pipe buffers. This is because > appear the output is hanging due to the OS pipe buffers. This is because
`vmstat` output is too small to quickly fill up the buffer. Use the `-u` > `vmstat` output is too small to quickly fill up the buffer. Use the `-u`
option to unbuffer the `jc` output if you would like immediate output. See > option to unbuffer the `jc` output if you would like immediate output. See
the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output) > the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
for more information. > for more information.
Usage (module): Usage (module):
@ -70,9 +70,9 @@ Schema:
# below object only exists if using -qq or ignore_exceptions=True # below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": { "_jc_meta": {
"success": boolean, # [2] "success": boolean, # [2]
"error": string, # [3] "error": string, # [3]
"line": string # [3] "line": string # [3]
} }
} }

View File

@ -11,8 +11,8 @@ Usage (module):
Schema: Schema:
XML Document converted to a Dictionary XML Document converted to a Dictionary. See https://github.com/martinblech/xmltodict
See https://github.com/martinblech/xmltodict for details for details.
{ {
"key1": string/object, "key1": string/object,

View File

@ -1,6 +1,6 @@
"""jc - JSON Convert `YAML` file parser """jc - JSON Convert `YAML` file parser
Note: datetime objects will be converted to strings. > Note: `datetime` objects will be converted to strings.
Usage (cli): Usage (cli):

View File

@ -1,9 +1,6 @@
"""jc - JSON Convert `zipinfo` command output parser """jc - JSON Convert `zipinfo` command output parser
Options supported: > Note: No `zipinfo` options are supported.
- none
Note: The default listing format.
Usage (cli): Usage (cli):

View File

@ -31,8 +31,8 @@ def _safe_print(string: str, sep=' ', end='\n', file=sys.stdout, flush=False) ->
def warning_message(message_lines: List[str]) -> None: def warning_message(message_lines: List[str]) -> None:
""" """
Prints warning message for non-fatal issues. The first line is Prints warning message to `STDERR` for non-fatal issues. The first line
prepended with 'jc: Warning - ' and subsequent lines are indented. is prepended with 'jc: Warning - ' and subsequent lines are indented.
Wraps text as needed based on the terminal width. Wraps text as needed based on the terminal width.
Parameters: Parameters:
@ -67,7 +67,7 @@ def warning_message(message_lines: List[str]) -> None:
def error_message(message_lines: List[str]) -> None: def error_message(message_lines: List[str]) -> None:
""" """
Prints an error message for fatal issues. The first line is Prints an error message to `STDERR` for fatal issues. The first line is
prepended with 'jc: Error - ' and subsequent lines are indented. prepended with 'jc: Error - ' and subsequent lines are indented.
Wraps text as needed based on the terminal width. Wraps text as needed based on the terminal width.
@ -97,10 +97,24 @@ def error_message(message_lines: List[str]) -> None:
_safe_print(message, file=sys.stderr) _safe_print(message, file=sys.stderr)
def is_compatible(compatible: List) -> bool:
"""
Returns True if the parser is compatible with the running OS platform.
"""
platform_found = False
for platform in compatible:
if sys.platform.startswith(platform):
platform_found = True
break
return platform_found
def compatibility(mod_name: str, compatible: List, quiet: bool = False) -> None: def compatibility(mod_name: str, compatible: List, quiet: bool = False) -> None:
""" """
Checks for the parser's compatibility with the running OS Checks for the parser's compatibility with the running OS platform and
platform. prints a warning message to `STDERR` if not compatible and quiet=False.
Parameters: Parameters:
@ -116,21 +130,13 @@ def compatibility(mod_name: str, compatible: List, quiet: bool = False) -> None:
None - just prints output to STDERR None - just prints output to STDERR
""" """
if not quiet: if not quiet and not is_compatible(compatible):
platform_found = False mod = mod_name.split('.')[-1]
compat_list = ', '.join(compatible)
for platform in compatible: warning_message([
if sys.platform.startswith(platform): f'{mod} parser is not compatible with your OS ({sys.platform}).',
platform_found = True f'Compatible platforms: {compat_list}'
break ])
if not platform_found:
mod = mod_name.split('.')[-1]
compat_list = ', '.join(compatible)
warning_message([
f'{mod} parser is not compatible with your OS ({sys.platform}).',
f'Compatible platforms: {compat_list}'
])
def has_data(data: str) -> bool: def has_data(data: str) -> bool:

View File

@ -1,4 +1,4 @@
.TH jc 1 2022-05-13 1.19.0 "JSON Convert" .TH jc 1 2022-05-31 1.20.0 "JSON Convert"
.SH NAME .SH NAME
\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools and file-types \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools and file-types
.SH SYNOPSIS .SH SYNOPSIS
@ -310,12 +310,12 @@ Key/Value file parser
.TP .TP
.B .B
\fB--pidstat\fP \fB--pidstat\fP
`pidstat` command parser `pidstat -h` command parser
.TP .TP
.B .B
\fB--pidstat-s\fP \fB--pidstat-s\fP
`pidstat` command streaming parser `pidstat -h` command streaming parser
.TP .TP
.B .B
@ -427,6 +427,16 @@ Key/Value file parser
\fB--timedatectl\fP \fB--timedatectl\fP
`timedatectl status` command parser `timedatectl status` command parser
.TP
.B
\fB--top\fP
`top -b` command parser
.TP
.B
\fB--top-s\fP
`top -b` command streaming parser
.TP .TP
.B .B
\fB--tracepath\fP \fB--tracepath\fP
@ -527,7 +537,7 @@ Options:
.TP .TP
.B .B
\fB-a\fP \fB-a\fP
about \fBjc\fP (JSON output) about \fBjc\fP (JSON or YAML output)
.TP .TP
.B .B
\fB-C\fP \fB-C\fP
@ -564,6 +574,10 @@ unbuffer output (useful for slow streaming data with streaming parsers)
.B .B
\fB-v\fP \fB-v\fP
version information version information
.TP
.B
\fB-y\fP
YAML output
.SH EXIT CODES .SH EXIT CODES
Any fatal errors within \fBjc\fP will generate an exit code of \fB100\fP, otherwise the exit code will be \fB0\fP. When using the "Magic" syntax (e.g. \fBjc ifconfig eth0\fP), \fBjc\fP will store the exit code of the program being parsed and add it to the \fBjc\fP exit code. This way it is easier to determine if an error was from the parsed program or \fBjc\fP. Any fatal errors within \fBjc\fP will generate an exit code of \fB100\fP, otherwise the exit code will be \fB0\fP. When using the "Magic" syntax (e.g. \fBjc ifconfig eth0\fP), \fBjc\fP will store the exit code of the program being parsed and add it to the \fBjc\fP exit code. This way it is easier to determine if an error was from the parsed program or \fBjc\fP.

View File

@ -5,7 +5,7 @@ with open('README.md', 'r') as f:
setuptools.setup( setuptools.setup(
name='jc', name='jc',
version='1.19.0', version='1.20.0',
author='Kelly Brazil', author='Kelly Brazil',
author_email='kellyjonbrazil@gmail.com', author_email='kellyjonbrazil@gmail.com',
description='Converts the output of popular command-line tools and file-types to JSON.', description='Converts the output of popular command-line tools and file-types to JSON.',

View File

@ -32,7 +32,7 @@ Options:
.TP .TP
.B .B
\fB-a\fP \fB-a\fP
about \fBjc\fP (JSON output) about \fBjc\fP (JSON or YAML output)
.TP .TP
.B .B
\fB-C\fP \fB-C\fP
@ -69,6 +69,10 @@ unbuffer output (useful for slow streaming data with streaming parsers)
.B .B
\fB-v\fP \fB-v\fP
version information version information
.TP
.B
\fB-y\fP
YAML output
.SH EXIT CODES .SH EXIT CODES
Any fatal errors within \fBjc\fP will generate an exit code of \fB100\fP, otherwise the exit code will be \fB0\fP. When using the "Magic" syntax (e.g. \fBjc ifconfig eth0\fP), \fBjc\fP will store the exit code of the program being parsed and add it to the \fBjc\fP exit code. This way it is easier to determine if an error was from the parsed program or \fBjc\fP. Any fatal errors within \fBjc\fP will generate an exit code of \fB100\fP, otherwise the exit code will be \fB0\fP. When using the "Magic" syntax (e.g. \fBjc ifconfig eth0\fP), \fBjc\fP will store the exit code of the program being parsed and add it to the \fBjc\fP exit code. This way it is easier to determine if an error was from the parsed program or \fBjc\fP.

View File

@ -144,13 +144,13 @@ option.
### Parsers ### Parsers
| Argument | Command or Filetype | Documentation | | Argument | Command or Filetype | Documentation |
|--------------|-------------------------|-------------------|{% for parser in jc.parsers %} |-------------------|---------------------------------------------------------|-------------------------------------------------------------------------|{% for parser in jc.parsers %}
| `{{ parser.argument }}` | {{ parser.description }} | [📃](https://kellyjonbrazil.github.io/jc/docs/parsers/{{ parser.name }}) |{% endfor %} | `{{ "{:>15}".format(parser.argument) }}` | {{ "{:<55}".format(parser.description) }} | {{ "{:<70}".format("[📃](https://kellyjonbrazil.github.io/jc/docs/parsers/" + parser.name + ")") }} |{% endfor %}
### Options ### Options
- `-a` about `jc`. Prints information about `jc` and the parsers (in JSON, of - `-a` about `jc`. Prints information about `jc` and the parsers (in JSON or
course!) YAML, of course!)
- `-C` force color output even when using pipes (overrides `-m` and the - `-C` force color output even when using pipes (overrides `-m` and the
`NO_COLOR` env variable) `NO_COLOR` env variable)
- `-d` debug mode. Prints trace messages if parsing issues are encountered (use - `-d` debug mode. Prints trace messages if parsing issues are encountered (use
@ -164,6 +164,7 @@ option.
values and no additional semantic processing values and no additional semantic processing
- `-u` unbuffer output - `-u` unbuffer output
- `-v` version information - `-v` version information
- `-y` YAML output
### Exit Codes ### Exit Codes
Any fatal errors within `jc` will generate an exit code of `100`, otherwise the Any fatal errors within `jc` will generate an exit code of `100`, otherwise the
@ -210,11 +211,11 @@ color output will override both the `NO_COLOR` environment variable and the `-m`
option. option.
### Streaming Parsers ### Streaming Parsers
Most parsers load all of the data from STDIN, parse it, then output the entire Most parsers load all of the data from `STDIN`, parse it, then output the entire
JSON document serially. There are some streaming parsers (e.g. `ls-s` and JSON document serially. There are some streaming parsers (e.g. `ls-s` and
`ping-s`) that immediately start processing and outputing the data line-by-line `ping-s`) that immediately start processing and outputing the data line-by-line
as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while
it is being received from STDIN. This can significantly reduce the amount of it is being received from `STDIN`. This can significantly reduce the amount of
memory required to parse large amounts of command output (e.g. `ls -lR /`) and memory required to parse large amounts of command output (e.g. `ls -lR /`) and
can sometimes process the data more quickly. Streaming parsers have slightly can sometimes process the data more quickly. Streaming parsers have slightly
different behavior than standard parsers as outlined below. different behavior than standard parsers as outlined below.
@ -343,15 +344,30 @@ If a UTC timezone can be detected in the text of the command output, the
timestamp will be timezone aware and have a `_utc` suffix on the key name. timestamp will be timezone aware and have a `_utc` suffix on the key name.
(e.g. `epoch_utc`) No other timezones are supported for aware timestamps. (e.g. `epoch_utc`) No other timezones are supported for aware timestamps.
## Use In Other Shells
`jc` can be used in most any shell. Some modern shells have JSON deserialization
and filtering capabilities built-in which makes using `jc` even more convenient.
For example, the following is possible in [NGS](https://ngs-lang.org/)
(Next Generation Shell):
```bash
myvar = ``jc dig www.google.com``[0].answer[0].data
```
This runs `jc`, parses the output JSON, and assigs the resulting data structure
to a variable in a single line of code.
For more examples of how to use `jc` in other shells, see this
[wiki page](https://github.com/kellyjonbrazil/jc/wiki/Using-jc-With-Different-Shells).
## Compatibility ## Compatibility
Some parsers like `dig`, `xml`, `csv`, etc. will work on any platform. Other Some parsers like `dig`, `xml`, `csv`, etc. will work on any platform. Other
parsers that convert platform-specific output will generate a warning message if parsers that convert platform-specific output will generate a warning message if
they are run on an unsupported platform. To see all parser information, they are run on an unsupported platform. To see all parser information,
including compatibility, run `jc -ap`. including compatibility, run `jc -ap`.
You may still use a parser on an unsupported platform - for example, you may want You may still use a parser on an unsupported platform - for example, you may
to parse a file with linux `lsof` output on an macOS or Windows laptop. In that want to parse a file with linux `lsof` output on an macOS or Windows laptop. In
case you can suppress the warning message with the `-q` cli option or the that case you can suppress the warning message with the `-q` cli option or the
`quiet=True` function parameter in `parse()`: `quiet=True` function parameter in `parse()`:
macOS: macOS:
@ -380,7 +396,8 @@ Tested on:
## Contributions ## Contributions
Feel free to add/improve code or parsers! You can use the Feel free to add/improve code or parsers! You can use the
[`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py) [`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py)
or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py) parsers as a template and submit your parser with a pull request. or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py) parsers as a template and submit your parser with a pull
request.
Please see the [Contributing Guidelines](https://github.com/kellyjonbrazil/jc/blob/master/CONTRIBUTING.md) for more information. Please see the [Contributing Guidelines](https://github.com/kellyjonbrazil/jc/blob/master/CONTRIBUTING.md) for more information.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,115 @@
top - 11:20:43 up 1:18, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 108 total, 2 running, 106 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.6 us, 11.1 sy, 0.0 ni, 83.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
GiB Mem : 3.7 total, 3.3 free, 0.2 used, 0.2 buff/cache
GiB Swap: 2.0 total, 2.0 free, 0.0 used. 3.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND PPID UID RUID RUSER SUID SUSER GID GROUP PGRP TTY TPGID SID nTH P TIME SWAP CODE DATA nMaj nMin nDRT WCHAN Flags CGROUPS SUPGIDS SUPGRPS TGID ENVIRON vMj vMn USED nsIPC nsMNT nsNET nsPID nsUSER nsUTS
2225 kbrazil 20 0 158.1m 2.2m 1.6m R 12.5 0.1 0:00.02 top 1884 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 2225 pts/0 2225 1884 1 0 0:00 0.0m 0.1m 1.0m 0 736 0 - ..4.2... 1:name=systemd:/user.slice/user-1000.+ 10,1000 wheel,kbrazil 2225 XDG_SESSION_ID=2 HOSTNAME=localhost S+ 0 4 2.2m 4026531839 4026531840 4026531956 4026531836 4026531837 4026531838
1 root 20 0 125.1m 6.5m 4.1m S 0.0 0.2 0:01.47 systemd 0 0 0 root 0 root 0 root 1 ? -1 1 1 0 0:01 0.0m 1.4m 82.4m 63 13k 0 ep_poll ..4.21.. - - - 1 - 0 0 6.5m - - - - - -
2 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kthreadd 0 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 kthreadd ..2.a.4. - - - 2 - 0 0 0.0m - - - - - -
4 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/0:0H 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 4 - 0 0 0.0m - - - - - -
6 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.10 ksoftirqd/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 smpboot_t+ .42.a.4. - - - 6 - 0 0 0.0m - - - - - -
7 root rt 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 migration/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 smpboot_t+ .42.a.4. - - - 7 - 0 0 0.0m - - - - - -
8 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 rcu_bh 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rcu_gp_kt+ ..2.a.4. - - - 8 - 0 0 0.0m - - - - - -
9 root 20 0 0.0m 0.0m 0.0m R 0.0 0.0 0:00.49 rcu_sched 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 ? ..2.a.4. - - - 9 - 0 0 0.0m - - - - - -
10 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 lru-add-drain 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 10 - 0 0 0.0m - - - - - -
11 root rt 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.08 watchdog/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 smpboot_t+ .42.a14. - - - 11 - 0 0 0.0m - - - - - -
13 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kdevtmpfs 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 devtmpfsd ..2.a14. - - - 13 - 0 0 0.0m - - - - - -
14 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 netns 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 14 - 0 0 0.0m - - - - - -
15 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 khungtaskd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 watchdog ..2.a.4. - - - 15 - 0 0 0.0m - - - - - -
16 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 writeback 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 16 - 0 0 0.0m - - - - - -
17 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kintegrityd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 17 - 0 0 0.0m - - - - - -
18 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 18 - 0 0 0.0m - - - - - -
19 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 19 - 0 0 0.0m - - - - - -
20 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 20 - 0 0 0.0m - - - - - -
21 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kblockd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 21 - 0 0 0.0m - - - - - -
22 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 md 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 22 - 0 0 0.0m - - - - - -
23 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 edac-poller 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 23 - 0 0 0.0m - - - - - -
24 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 watchdogd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 24 - 0 0 0.0m - - - - - -
30 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kswapd0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 kswapd ..a4284. - - - 30 - 0 0 0.0m - - - - - -
31 root 25 5 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ksmd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 ksm_scan_+ 4.2.2.4. - - - 31 - 0 0 0.0m - - - - - -
32 root 39 19 0.0m 0.0m 0.0m S 0.0 0.0 0:00.03 khugepaged 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 khugepaged 4.2.2.4. - - - 32 - 0 0 0.0m - - - - - -
33 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 crypto 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 33 - 0 0 0.0m - - - - - -
41 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kthrotld 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 41 - 0 0 0.0m - - - - - -
43 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kmpath_rdacd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 43 - 0 0 0.0m - - - - - -
44 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kaluad 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 44 - 0 0 0.0m - - - - - -
45 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kpsmoused 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 45 - 0 0 0.0m - - - - - -
47 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ipv6_addrconf 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 47 - 0 0 0.0m - - - - - -
60 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 deferwq 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 60 - 0 0 0.0m - - - - - -
95 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kauditd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 kauditd_t+ ..2.2.4. - - - 95 - 0 0 0.0m - - - - - -
272 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 nfit 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 272 - 0 0 0.0m - - - - - -
273 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 mpt_poll_0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 273 - 0 0 0.0m - - - - - -
274 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 mpt/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 274 - 0 0 0.0m - - - - - -
275 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ata_sff 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 275 - 0 0 0.0m - - - - - -
321 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_eh_0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 scsi_erro+ ..2.a.4. - - - 321 - 0 0 0.0m - - - - - -
326 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_tmf_0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 326 - 0 0 0.0m - - - - - -
345 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 scsi_eh_1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 scsi_erro+ ..2.a.4. - - - 345 - 0 0 0.0m - - - - - -
346 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_tmf_1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 346 - 0 0 0.0m - - - - - -
347 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 scsi_eh_2 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 scsi_erro+ ..2.a.4. - - - 347 - 0 0 0.0m - - - - - -
350 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_tmf_2 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 350 - 0 0 0.0m - - - - - -
356 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/u256:4 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 356 - 0 0 0.0m - - - - - -
359 root -51 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.02 irq/16-vmwgfx 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 irq_thread ..2.a14. - - - 359 - 0 0 0.0m - - - - - -
360 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ttm_swap 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 360 - 0 0 0.0m - - - - - -
431 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kdmflush 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 431 - 0 0 0.0m - - - - - -
432 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 432 - 0 0 0.0m - - - - - -
442 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kdmflush 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 442 - 0 0 0.0m - - - - - -
443 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 443 - 0 0 0.0m - - - - - -
455 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 455 - 0 0 0.0m - - - - - -
456 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfsalloc 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 456 - 0 0 0.0m - - - - - -
457 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs_mru_cache 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 457 - 0 0 0.0m - - - - - -
458 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-buf/dm-0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 458 - 0 0 0.0m - - - - - -
459 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-data/dm-0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 459 - 0 0 0.0m - - - - - -
460 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-conv/dm-0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 460 - 0 0 0.0m - - - - - -
461 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-cil/dm-0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 461 - 0 0 0.0m - - - - - -
462 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-reclaim/dm- 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 462 - 0 0 0.0m - - - - - -
463 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-log/dm-0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 463 - 0 0 0.0m - - - - - -
464 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-eofblocks/d 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 464 - 0 0 0.0m - - - - - -
465 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.81 xfsaild/dm-0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 xfsaild 4.2.284. - - - 465 - 0 0 0.0m - - - - - -
466 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.03 kworker/0:1H 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 466 - 0 0 0.0m - - - - - -
544 root 20 0 38.2m 3.2m 2.9m S 0.0 0.1 0:00.22 systemd-journal 1 0 0 root 0 root 0 root 544 ? -1 544 1 0 0:00 0.0m 0.3m 0.4m 7 3534 0 ep_poll ..4.21.. 3:devices:/system.slice/systemd-journ+ - - 544 - 0 0 3.2m - - - - - -
565 root 20 0 196.4m 4.1m 2.5m S 0.0 0.1 0:00.01 lvmetad 1 0 0 root 0 root 0 root 565 ? -1 565 1 0 0:00 0.0m 0.1m 153.5m 1 1536 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/lvm2-lvmetad.+ - - 565 - 0 0 4.1m - - - - - -
575 root 20 0 47.0m 5.1m 2.8m S 0.0 0.1 0:00.20 systemd-udevd 1 0 0 root 0 root 0 root 575 ? -1 575 1 0 0:00 0.0m 0.4m 2.4m 3 3107 0 ep_poll ..4.21.. 3:devices:/system.slice/systemd-udevd+ - - 575 - 0 0 5.1m - - - - - -
631 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/u257:0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 631 - 0 0 0.0m - - - - - -
635 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 hci0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 635 - 0 0 0.0m - - - - - -
636 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 hci0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 636 - 0 0 0.0m - - - - - -
637 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/u257:1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 637 - 0 0 0.0m - - - - - -
649 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-buf/sda1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 649 - 0 0 0.0m - - - - - -
654 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-data/sda1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 654 - 0 0 0.0m - - - - - -
659 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-conv/sda1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 659 - 0 0 0.0m - - - - - -
660 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-cil/sda1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 660 - 0 0 0.0m - - - - - -
665 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-reclaim/sda 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 665 - 0 0 0.0m - - - - - -
668 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-log/sda1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 668 - 0 0 0.0m - - - - - -
673 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-eofblocks/s 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 rescuer_t+ .42.a.6. - - - 673 - 0 0 0.0m - - - - - -
675 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfsaild/sda1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 xfsaild 4.2.284. - - - 675 - 0 0 0.0m - - - - - -
757 root 16 -4 54.2m 0.9m 0.5m S 0.0 0.0 0:00.01 auditd 1 0 0 root 0 root 0 root 757 ? -1 757 2 0 0:00 0.0m 0.1m 8.5m 0 218 0 ep_poll ..4.214. 3:devices:/system.slice/auditd.servic+ - - 757 - 0 0 0.9m - - - - - -
784 root 20 0 56.2m 2.5m 2.1m S 0.0 0.1 0:00.01 bluetoothd 1 0 0 root 0 root 0 root 784 ? -1 784 1 0 0:00 0.0m 0.9m 0.4m 14 979 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/bluetooth.ser+ - - 784 - 0 0 2.5m - - - - - -
785 root 20 0 25.8m 1.8m 1.4m S 0.0 0.0 0:00.08 systemd-logind 1 0 0 root 0 root 0 root 785 ? -1 785 1 0 0:00 0.0m 0.6m 0.4m 4 820 0 ep_poll ..4.21.. 3:devices:/system.slice/systemd-login+ - - 785 - 0 0 1.8m - - - - - -
788 root 20 0 51.6m 2.7m 1.9m S 0.0 0.1 0:00.02 smartd 1 0 0 root 0 root 0 root 788 ? -1 788 1 0 0:00 0.0m 0.6m 0.6m 9 1004 0 hrtimer_n+ 4.4.21.. 3:devices:/system.slice/smartd.servic+ - - 788 - 0 0 2.7m - - - - - -
789 polkitd 20 0 598.6m 12.7m 4.8m S 0.0 0.3 0:00.11 polkitd 1 999 999 polkitd 999 polkitd 998 polkitd 789 ? -1 789 7 0 0:00 0.0m 0.1m 512.3m 48 2646 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/polkit.servic+ 998 polkitd 789 - 0 0 12.7m - - - - - -
790 dbus 20 0 64.9m 2.6m 1.8m S 0.0 0.1 0:00.21 dbus-daemon 1 81 81 dbus 81 dbus 81 dbus 790 ? -1 790 2 0 0:00 0.0m 0.2m 8.7m 2 869 0 ep_poll ..4.21.. 3:devices:/system.slice/dbus.service,+ - - 790 - 0 0 2.6m - - - - - -
797 chrony 20 0 115.0m 1.8m 1.3m S 0.0 0.0 0:00.08 chronyd 1 998 998 chrony 998 chrony 996 chrony 796 ? -1 796 1 0 0:00 0.0m 0.2m 72.4m 3 462 0 poll_sche+ 4.4.214. 3:devices:/system.slice/chronyd.servi+ - - 797 - 0 0 1.8m - - - - - -
838 root 20 0 123.3m 1.6m 1.0m S 0.0 0.0 0:00.50 crond 1 0 0 root 0 root 0 root 838 ? -1 838 1 0 0:00 0.0m 0.1m 1.3m 1 771 0 hrtimer_n+ 4.4.21.. 3:devices:/system.slice/crond.service+ - - 838 - 0 0 1.6m - - - - - -
858 root 20 0 350.3m 28.8m 6.9m S 0.0 0.8 0:00.64 firewalld 1 0 0 root 0 root 0 root 858 ? -1 858 2 0 0:00 0.0m 0.0m 93.1m 64 53k 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/firewalld.ser+ - - 858 - 0 0 28.8m - - - - - -
859 root 20 0 107.5m 0.8m 0.7m S 0.0 0.0 0:00.00 agetty 1 0 0 root 0 root 0 root 859 ttyS0 859 859 1 0 0:00 0.0m 0.0m 0.3m 1 394 0 n_tty_read ..4.21.. 3:devices:/system.slice/system-serial+ - - 859 - 0 0 0.8m - - - - - -
860 root 20 0 94.3m 2.5m 1.8m S 0.0 0.1 0:00.13 login 1 0 0 root 0 root 1000 kbrazil 860 ? -1 860 1 0 0:00 0.0m 0.0m 0.8m 9 1265 0 do_wait ..4.21.. 1:name=systemd:/user.slice/user-1000.+ 10,1000 wheel,kbrazil 860 - 0 0 2.5m - - - - - -
883 root 20 0 813.4m 8.8m 6.7m S 0.0 0.2 0:00.28 NetworkManager 1 0 0 root 0 root 0 root 883 ? -1 883 3 0 0:00 0.0m 2.7m 561.5m 51 2944 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/NetworkManage+ - - 883 - 0 0 8.8m - - - - - -
1033 root 20 0 100.5m 5.3m 3.3m S 0.0 0.1 0:00.02 dhclient 883 0 0 root 0 root 0 root 1033 ? -1 883 1 0 0:00 0.0m 0.4m 1.7m 15 1840 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/NetworkManage+ - - 1033 - 0 0 5.3m - - - - - -
1224 root 20 0 560.7m 17.0m 6.0m S 0.0 0.5 0:00.97 tuned 1 0 0 root 0 root 0 root 1224 ? -1 1224 5 0 0:00 0.0m 0.0m 297.9m 5 9147 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/tuned.service+ - - 1224 - 0 0 17.0m - - - - - -
1225 root 20 0 565.2m 25.1m 12.9m S 0.0 0.7 0:06.57 dockerd-current 1 0 0 root 0 root 0 root 1225 ? -1 1225 9 0 0:06 0.0m 31.1m 464.2m 234 7475 0 do_wait ..4.21.. 3:devices:/system.slice/docker.servic+ - - 1225 - 0 0 25.1m - - - - - -
1227 root 20 0 110.3m 4.2m 3.2m S 0.0 0.1 0:00.01 sshd 1 0 0 root 0 root 0 root 1227 ? -1 1227 1 0 0:00 0.0m 0.8m 0.7m 8 1323 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/sshd.service,+ - - 1227 - 0 0 4.2m - - - - - -
1228 root 20 0 213.4m 4.3m 3.3m S 0.0 0.1 0:00.65 rsyslogd 1 0 0 root 0 root 0 root 1228 ? -1 1228 3 0 0:00 0.0m 0.6m 145.3m 9 1533 0 poll_sche+ 4.4.21.. 3:devices:/system.slice/rsyslog.servi+ - - 1228 - 0 0 4.3m - - - - - -
1272 root 20 0 280.5m 10.9m 5.1m S 0.0 0.3 0:03.09 docker-containe 1225 0 0 root 0 root 0 root 1272 ? -1 1272 8 0 0:03 0.0m 6.5m 255.8m 46 3932 0 futex_wai+ 4.4.21.. 3:devices:/system.slice/docker.servic+ - - 1272 - 0 0 10.9m - - - - - -
1501 root 20 0 87.6m 2.1m 1.1m S 0.0 0.1 0:00.04 master 1 0 0 root 0 root 0 root 1501 ? -1 1501 1 0 0:00 0.0m 0.2m 0.8m 0 423 0 ep_poll ..4.214. 3:devices:/system.slice/postfix.servi+ 0 root 1501 - 0 0 2.1m - - - - - -
1511 postfix 20 0 87.7m 4.0m 3.0m S 0.0 0.1 0:00.01 pickup 1501 89 89 postfix 89 postfix 89 postfix 1501 ? -1 1501 1 0 0:00 0.0m 0.3m 0.8m 1 1166 0 ep_poll ..4.21.. 3:devices:/system.slice/postfix.servi+ 12,89 mail,postfix 1511 - 0 0 4.0m - - - - - -
1512 postfix 20 0 87.8m 4.0m 3.0m S 0.0 0.1 0:00.01 qmgr 1501 89 89 postfix 89 postfix 89 postfix 1501 ? -1 1501 1 0 0:00 0.0m 0.3m 0.8m 1 1195 0 ep_poll ..4.21.. 3:devices:/system.slice/postfix.servi+ 12,89 mail,postfix 1512 - 0 0 4.0m - - - - - -
1859 kbrazil 20 0 113.0m 2.3m 1.5m S 0.0 0.1 0:00.01 bash 860 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1859 tty1 1859 1859 1 0 0:00 0.0m 0.9m 0.7m 1 1226 0 n_tty_read ..4.21.. 1:name=systemd:/user.slice/user-1000.+ 10,1000 wheel,kbrazil 1859 HOME=/home/kbrazil USER=kbrazil SHELL+ 0 0 2.3m 4026531839 4026531840 4026531956 4026531836 4026531837 4026531838
1879 root 20 0 155.2m 5.6m 4.3m S 0.0 0.1 0:00.16 sshd 1227 0 0 root 0 root 0 root 1879 ? -1 1879 1 0 0:00 0.0m 0.8m 0.9m 0 1849 0 poll_sche+ 4.4.21.. 1:name=systemd:/user.slice/user-1000.+ - - 1879 - 0 0 5.6m - - - - - -
1883 kbrazil 20 0 155.2m 2.4m 1.1m S 0.0 0.1 0:01.29 sshd 1879 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1879 ? -1 1879 1 0 0:01 0.0m 0.8m 0.9m 0 362 0 poll_sche+ 4.4.214. 1:name=systemd:/user.slice/user-1000.+ 10,1000 wheel,kbrazil 1883 - 0 0 2.4m - - - - - -
1884 kbrazil 20 0 112.9m 2.2m 1.6m S 0.0 0.1 0:00.07 bash 1883 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1884 pts/0 2225 1884 1 0 0:00 0.0m 0.9m 0.6m 0 2593 0 do_wait ..4.2... 1:name=systemd:/user.slice/user-1000.+ 10,1000 wheel,kbrazil 1884 LANG=en_US.UTF-8 USER=kbrazil LOGNAME+ 0 0 2.2m 4026531839 4026531840 4026531956 4026531836 4026531837 4026531838
2019 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.11 kworker/u256:0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 2019 - 0 0 0.0m - - - - - -
2117 root 20 0 122.4m 1.1m 0.9m S 0.0 0.0 0:00.00 anacron 1 0 0 root 0 root 0 root 2117 ? -1 2117 1 0 0:00 0.0m 0.0m 0.4m 0 281 0 sigsuspend ..4.2.4. 1:name=systemd:/user.slice/user-0.sli+ 0 root 2117 - 0 0 1.1m - - - - - -
2139 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.36 kworker/0:2 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 2139 - 0 0 0.0m - - - - - -
2197 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 kworker/0:3 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 2197 - 0 0 0.0m - - - - - -
2205 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 kworker/0:0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 2205 - 0 0 0.0m - - - - - -
2213 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/0:1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0.0m 0.0m 0.0m 0 0 0 worker_th+ .42.a.6. - - - 2213 - 0 0 0.0m - - 5678 - 1234 -

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,115 @@
top - 11:10:47 up 1:08, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 108 total, 2 running, 106 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.9 us, 5.9 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
GiB Mem : 3.7 total, 3.3 free, 0.2 used, 0.2 buff/cache
GiB Swap: 2.0 total, 2.0 free, 0.0 used. 3.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125.1m 6.5m 4.1m S 0.0 0.2 0:01.47 systemd
2 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.10 ksoftirqd/0
7 root rt 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0.0m 0.0m 0.0m R 0.0 0.0 0:00.49 rcu_sched
10 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.07 watchdog/0
13 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 netns
15 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset
20 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset
21 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kblockd
22 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 md
23 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 edac-poller
24 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 watchdogd
30 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kswapd0
31 root 25 5 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ksmd
32 root 39 19 0.0m 0.0m 0.0m S 0.0 0.0 0:00.02 khugepaged
33 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 crypto
41 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kthrotld
43 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kmpath_rdacd
44 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kaluad
45 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kpsmoused
47 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ipv6_addrconf
60 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 deferwq
95 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kauditd
272 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 nfit
273 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 mpt_poll_0
274 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 mpt/0
275 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ata_sff
321 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_eh_0
326 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_tmf_0
345 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 scsi_eh_1
346 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_tmf_1
347 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 scsi_eh_2
350 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 scsi_tmf_2
356 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/u256:4
359 root -51 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.02 irq/16-vmwgfx
360 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 ttm_swap
431 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kdmflush
432 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset
442 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kdmflush
443 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset
455 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 bioset
456 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfsalloc
457 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs_mru_cache
458 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-buf/dm-0
459 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-data/dm-0
460 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-conv/dm-0
461 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-cil/dm-0
462 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-reclaim/dm-
463 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-log/dm-0
464 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-eofblocks/d
465 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.61 xfsaild/dm-0
466 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.03 kworker/0:1H
544 root 20 0 38.2m 3.2m 2.9m S 0.0 0.1 0:00.22 systemd-journal
565 root 20 0 196.4m 4.1m 2.5m S 0.0 0.1 0:00.01 lvmetad
575 root 20 0 47.0m 5.1m 2.8m S 0.0 0.1 0:00.20 systemd-udevd
631 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/u257:0
635 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 hci0
636 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 hci0
637 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/u257:1
649 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-buf/sda1
654 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-data/sda1
659 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-conv/sda1
660 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-cil/sda1
665 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-reclaim/sda
668 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-log/sda1
673 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfs-eofblocks/s
675 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 xfsaild/sda1
757 root 16 -4 54.2m 0.9m 0.5m S 0.0 0.0 0:00.01 auditd
784 root 20 0 56.2m 2.5m 2.1m S 0.0 0.1 0:00.01 bluetoothd
785 root 20 0 25.8m 1.8m 1.4m S 0.0 0.0 0:00.08 systemd-logind
788 root 20 0 51.6m 2.7m 1.9m S 0.0 0.1 0:00.02 smartd
789 polkitd 20 0 598.6m 12.7m 4.8m S 0.0 0.3 0:00.11 polkitd
790 dbus 20 0 64.9m 2.6m 1.8m S 0.0 0.1 0:00.20 dbus-daemon
797 chrony 20 0 115.0m 1.7m 1.3m S 0.0 0.0 0:00.08 chronyd
838 root 20 0 123.3m 1.6m 1.0m S 0.0 0.0 0:00.49 crond
858 root 20 0 350.3m 28.8m 6.9m S 0.0 0.8 0:00.64 firewalld
859 root 20 0 107.5m 0.8m 0.7m S 0.0 0.0 0:00.00 agetty
860 root 20 0 94.3m 2.5m 1.8m S 0.0 0.1 0:00.13 login
883 root 20 0 813.4m 8.8m 6.7m S 0.0 0.2 0:00.27 NetworkManager
1033 root 20 0 100.5m 5.3m 3.3m S 0.0 0.1 0:00.02 dhclient
1224 root 20 0 560.7m 17.0m 6.0m S 0.0 0.5 0:00.86 tuned
1225 root 20 0 565.2m 25.1m 12.9m S 0.0 0.7 0:05.79 dockerd-current
1227 root 20 0 110.3m 4.2m 3.2m S 0.0 0.1 0:00.01 sshd
1228 root 20 0 213.4m 4.3m 3.3m S 0.0 0.1 0:00.58 rsyslogd
1272 root 20 0 280.5m 10.9m 5.1m S 0.0 0.3 0:02.70 docker-containe
1501 root 20 0 87.6m 2.1m 1.1m S 0.0 0.1 0:00.03 master
1511 postfix 20 0 87.7m 4.0m 3.0m S 0.0 0.1 0:00.01 pickup
1512 postfix 20 0 87.8m 4.0m 3.0m S 0.0 0.1 0:00.01 qmgr
1859 kbrazil 20 0 113.0m 2.3m 1.5m S 0.0 0.1 0:00.01 bash
1879 root 20 0 155.2m 5.6m 4.3m S 0.0 0.1 0:00.16 sshd
1883 kbrazil 20 0 155.2m 2.4m 1.1m S 0.0 0.1 0:00.99 sshd
1884 kbrazil 20 0 112.9m 2.1m 1.6m S 0.0 0.1 0:00.03 bash
1984 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.59 kworker/0:1
2019 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.07 kworker/u256:0
2080 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.01 kworker/0:0
2117 root 20 0 122.4m 1.1m 0.9m S 0.0 0.0 0:00.00 anacron
2139 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.03 kworker/0:2
2197 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/0:3
2198 kbrazil 20 0 158.1m 2.0m 1.5m R 0.0 0.1 0:00.01 top

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[{"name":"setuptools","version":"39.2.0","summary":"Easily download, build, install, upgrade, and uninstall Python packages","home_page":"https://github.com/pypa/setuptools","author":"Python Packaging Authority","author_email":"distutils-sig@python.org","license":"UNKNOWN","location":"/usr/lib/python3.6/site-packages","requires":null,"required_by":"twine"},{"name":"pkginfo","version":"1.5.0.1","summary":"Query metadatdata from sdists / bdists / installed packages.","home_page":"https://code.launchpad.net/~tseaver/pkginfo/trunk","author":"Tres Seaver, Agendaless Consulting","author_email":"tseaver@agendaless.com","license":"MIT","location":"/home/kbrazil/.local/lib/python3.6/site-packages","requires":null,"required_by":"twine"},{"name":"cppy","version":"1.2.1","summary":"UNKNOWN","home_page":"https://github.com/nucleic/cppy","author":"None","author_email":"The Nucleic Development Team <sccolbert@gmail.com>","license":"Copyright (c) 2014, Nucleic\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n* Neither the name of the copyright holder nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.","location":"/usr/home/bryder/.local/lib/python3.7/site-packages","requires":null,"required_by":null},{"name":"six","version":"1.12.0","summary":"Python 2 and 3 compatibility utilities","home_page":"https://github.com/benjaminp/six","author":"Benjamin Peterson","author_email":"benjamin@python.org","license":"MIT","location":"/home/kbrazil/.local/lib/python3.6/site-packages","requires":null,"required_by":"readme-renderer, bleach"},{"name":"cppy","version":"1.2.1","summary":"UNKNOWN","home_page":"https://github.com/nucleic/cppy","author":"None","author_email":"The Nucleic Development Team <sccolbert@gmail.com>","license":"Copyright (c) 2014, Nucleic\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n* Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n* Neither the name of the copyright holder nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.","location":"/usr/home/bryder/.local/lib/python3.7/site-packages","requires":null,"required_by":null}]

View File

@ -0,0 +1,96 @@
Name: setuptools
Version: 39.2.0
Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
Author-email: distutils-sig@python.org
License: UNKNOWN
Location: /usr/lib/python3.6/site-packages
Requires:
Required-by: twine
---
Name: pkginfo
Version: 1.5.0.1
Summary: Query metadatdata from sdists / bdists / installed packages.
Home-page: https://code.launchpad.net/~tseaver/pkginfo/trunk
Author: Tres Seaver, Agendaless Consulting
Author-email: tseaver@agendaless.com
License: MIT
Location: /home/kbrazil/.local/lib/python3.6/site-packages
Requires:
Required-by: twine
---
Name: cppy
Version: 1.2.1
Summary: UNKNOWN
Home-page: https://github.com/nucleic/cppy
Author: None
Author-email: The Nucleic Development Team <sccolbert@gmail.com>
License: Copyright (c) 2014, Nucleic
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Location: /usr/home/bryder/.local/lib/python3.7/site-packages
Requires:
Required-by:
---
Name: six
Version: 1.12.0
Summary: Python 2 and 3 compatibility utilities
Home-page: https://github.com/benjaminp/six
Author: Benjamin Peterson
Author-email: benjamin@python.org
License: MIT
Location: /home/kbrazil/.local/lib/python3.6/site-packages
Requires:
Required-by: readme-renderer, bleach
---
Name: cppy
Version: 1.2.1
Summary: UNKNOWN
Home-page: https://github.com/nucleic/cppy
Author: None
Author-email: The Nucleic Development Team <sccolbert@gmail.com>
License: Copyright (c) 2014, Nucleic
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Location: /usr/home/bryder/.local/lib/python3.7/site-packages
Requires:
Required-by:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,222 @@
top - 00:25:40 up 1:21, 3 users, load average: 0.17, 0.14, 0.10
Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 8.3 sy, 0.0 ni, 91.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3903.6 total, 2352.1 free, 329.9 used, 1221.5 buff/cache
MiB Swap: 3903.0 total, 3903.0 free, 0.0 used. 3333.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND PPID UID RUID RUSER SUID SUSER GID GROUP PGRP TTY TPGID SID nTH P TIME SWAP CODE DATA nMaj nMin nDRT WCHAN Flags CGROUPS SUPGIDS SUPGRPS TGID OOMa OOMs ENVIRON vMj vMn USED nsIPC nsMNT nsNET nsPID nsUSER nsUTS LXC RSan RSfd RSlk RSsh CGNAME NU
4810 kbrazil 20 0 10288 4052 3332 R 5.9 0.1 0:00.02 top 1580 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 4810 pts/0 4810 1580 1 0 0:00 0 76 1360 0 343 0 - ..4..... 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 4810 0 0 SHELL=/bin/bash PWD=/+ 0 8 4052 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 720 3332 0 0 systemd:/user.slice/u+ 0
1 root 20 0 104364 13212 8636 S 0.0 0.3 0:06.10 systemd 0 0 0 root 0 root 0 root 1 ? -1 1 1 1 0:06 0 808 20504 99 27k 0 - ..4..1.. 12:memory:/init.scope+ - - 1 0 0 - 0 0 13212 0 0 0 0 0 0 - 4576 8636 0 0 systemd:/init.scope,0+ 0
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 0 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 2 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 3 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 4 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 6 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 9 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.39 ksoftirqd/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.4. - - - 10 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
11 root 20 0 0 0 0 I 0.0 0.0 0:02.21 rcu_sched 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:02 0 0 0 0 0 0 - ..2.8.4. - - - 11 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.07 migration/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.4. - - - 12 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
13 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.814. - - - 13 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.4. - - - 14 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.4. - - - 15 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
16 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/1 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.814. - - - 16 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
17 root rt 0 0 0 0 S 0.0 0.0 0:01.36 migration/1 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:01 0 0 0 0 0 0 - .42.8.4. - - - 17 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
18 root 20 0 0 0 0 S 0.0 0.0 0:00.46 ksoftirqd/1 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.4. - - - 18 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
20 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H-kblockd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 20 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.814. - - - 21 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
22 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 22 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_kthre 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 23 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_ 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 24 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 25 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - 4.2...4. - - - 26 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 28 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
29 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - 4.2.8.4. - - - 29 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
30 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 30 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
31 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kcompactd0 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - 4.2...4. - - - 31 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
32 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - 4.2...4. - - - 32 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
33 root 39 19 0 0 0 S 0.0 0.0 0:00.05 khugepaged 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - 4.2...4. - - - 33 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
80 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kintegrityd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 80 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
81 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kblockd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 81 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
82 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 blkcg_punt_bio 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 82 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
84 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 tpm_dev_wq 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 84 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
85 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ata_sff 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 85 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
86 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 md 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 86 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
87 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 edac-poller 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 87 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
88 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 devfreq_wq 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 88 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
89 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdogd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 89 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
91 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 pm_wq 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 91 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
93 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..a2.84. - - - 93 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
94 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ecryptfs-kthrea 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - 4.2...4. - - - 94 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
96 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kthrotld 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 96 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
97 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/24-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 97 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
98 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/25-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 98 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
99 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/26-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 99 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
100 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/27-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 100 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
101 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/28-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 101 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
102 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/29-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 102 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
103 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/30-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 103 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
104 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/31-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 104 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
105 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/32-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 105 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
106 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/33-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 106 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
107 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/34-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 107 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
108 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/35-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 108 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
109 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/36-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 109 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
110 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/37-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 110 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
111 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/38-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 111 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
112 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/39-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 112 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
113 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/40-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 113 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
114 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/41-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 114 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
115 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/42-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 115 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
116 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/43-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 116 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
117 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/44-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 117 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
118 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/45-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 118 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
119 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/46-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 119 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
120 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/47-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 120 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
121 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/48-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 121 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
122 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/49-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 122 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
123 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/50-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 123 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
124 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/51-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 124 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
125 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/52-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 125 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
126 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/53-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 126 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
127 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/54-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 127 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
128 root -51 0 0 0 0 S 0.0 0.0 0:00.00 irq/55-pciehp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 128 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
129 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 acpi_thermal_pm 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 129 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
130 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 130 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
131 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_0 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 131 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
132 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 132 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
133 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_1 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 133 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
135 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 vfio-irqfd-clea 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 135 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
136 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ipv6_addrconf 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 136 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
146 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kstrp 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 146 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
149 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 zswap-shrink 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 149 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
150 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/u257:0-hci0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 150 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
155 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 charger_manager 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 155 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
200 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mpt_poll_0 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 200 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
201 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mpt/0 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 201 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
202 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_2 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 202 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
203 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_2 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 203 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
204 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_3 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 204 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
205 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_3 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 205 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
206 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_4 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 206 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
207 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_4 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 207 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
208 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_5 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 208 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
209 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_5 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 209 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
210 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_6 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 210 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
211 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_6 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 211 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
212 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_7 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 212 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
213 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_7 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 213 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
214 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_8 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 214 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
215 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_8 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 215 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
216 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_9 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 216 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
217 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_9 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 217 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
218 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_10 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 218 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
219 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_10 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 219 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
220 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_11 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 220 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
221 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_11 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 221 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
222 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_12 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 222 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
223 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_12 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 223 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
224 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_13 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 224 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
225 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_13 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 225 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
226 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_14 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 226 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
227 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_14 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 227 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
228 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_15 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 228 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
229 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_15 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 229 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
230 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_16 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 230 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
231 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_16 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 231 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
232 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_17 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 232 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
233 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_17 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 233 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
234 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_18 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 234 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
235 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_18 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 235 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
236 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_19 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 236 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
237 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_19 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 237 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
238 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_20 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 238 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
239 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_20 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 239 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
240 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_21 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 240 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
241 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_21 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 241 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
242 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_22 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 242 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
243 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_22 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 243 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
244 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_23 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 244 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
245 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_23 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 245 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
246 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_24 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 246 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
247 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_24 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 247 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
248 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_25 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 248 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
249 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_25 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 249 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
250 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_26 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 250 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
251 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_26 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 251 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
252 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_27 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 252 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
253 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_27 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 253 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
254 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_28 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 254 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
255 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_28 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 255 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
256 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_29 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 256 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
257 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_29 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 257 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
258 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_30 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 258 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
259 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_30 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 259 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
260 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_31 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 260 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
261 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_31 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 261 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
264 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 cryptd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 264 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
313 root -51 0 0 0 0 S 0.0 0.0 0:00.12 irq/16-vmwgfx 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 313 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
315 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ttm_swap 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 315 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
326 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_32 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..2.8.4. - - - 326 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
327 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_32 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 327 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
328 root 0 -20 0 0 0 I 0.0 0.0 0:00.33 kworker/1:1H-kblockd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 328 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
337 root 0 -20 0 0 0 I 0.0 0.0 0:00.34 kworker/0:1H-kblockd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 337 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
350 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kdmflush 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 350 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
376 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 raid5wq 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 376 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
420 root 20 0 0 0 0 S 0.0 0.0 0:00.29 jbd2/dm-0-8 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..24..4. - - - 420 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
421 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ext4-rsv-conver 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 421 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
492 root 19 -1 69032 18316 17096 S 0.0 0.5 0:01.72 systemd-journal 1 0 0 root 0 root 0 root 492 ? -1 492 1 0 0:01 0 96 27556 101 12k 0 - ..4..1.. 12:memory:/system.sli+ - - 492 -4 0 - 0 0 18316 0 0 0 0 0 0 - 1220 17092 0 4 systemd:/system.slice+ 0
521 root 20 0 22372 5520 4044 S 0.0 0.1 0:00.22 systemd-udevd 1 0 0 root 0 root 0 root 521 ? -1 521 1 1 0:00 0 580 1376 1 2204 0 - ..4..1.. 12:memory:/system.sli+ - - 521 -17 0 - 0 0 5520 0 0 0 0 0 0 - 1476 4044 0 0 systemd:/system.slice+ 0
561 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/u257:1-hci0 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 561 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
696 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kaluad 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 696 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
697 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kmpath_rdacd 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 697 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
698 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kmpathd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 698 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
699 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kmpath_handlerd 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 699 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
700 root rt 0 346720 19068 9132 S 0.0 0.5 0:03.47 multipathd 1 0 0 root 0 root 0 root 700 ? -1 700 7 1 0:03 0 72 10380 4 3130 0 - 4.4..1.. 12:memory:/system.sli+ - - 700 -17 0 - 0 0 19068 0 0 0 0 0 0 - 9936 9132 346696 0 systemd:/system.slice+ 0
710 root 20 0 0 0 0 S 0.0 0.0 0:00.00 jbd2/sda2-8 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..24..4. - - - 710 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
711 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ext4-rsv-conver 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 711 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
719 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 loop1 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..388.4. - - - 719 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
720 root 0 -20 0 0 0 S 0.0 0.0 0:00.01 loop2 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..388.4. - - - 720 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
723 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 loop5 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..388.4. - - - 723 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
726 root 0 -20 0 0 0 S 0.0 0.0 0:00.06 loop6 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..388.4. - - - 726 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
743 systemd+ 20 0 91388 6576 5692 S 0.0 0.2 0:00.09 systemd-timesyn 1 100 100 systemd+ 100 systemd+ 101 systemd+ 743 ? -1 743 2 0 0:00 0 24 9028 2 851 0 - ..4..1.. 12:memory:/system.sli+ 101 systemd-timesync 743 0 0 - 0 0 6576 0 0 0 0 0 0 - 884 5692 0 0 systemd:/system.slice+ 0
753 root 20 0 47920 10484 9052 S 0.0 0.3 0:00.02 VGAuthService 1 0 0 root 0 root 0 root 753 ? -1 753 1 0 0:00 0 72 1344 46 701 0 - ..4..1.. 12:memory:/system.sli+ - - 753 0 1 - 0 0 10484 0 0 0 0 0 0 - 1432 9052 0 0 systemd:/system.slice+ 0
754 root 20 0 238084 8184 6912 S 0.0 0.2 0:09.97 vmtoolsd 1 0 0 root 0 root 0 root 754 ? -1 754 3 1 0:09 0 28 27712 31 777 0 - ..4..1.. 12:memory:/system.sli+ - - 754 0 1 - 0 0 8184 0 0 0 0 0 0 - 1272 6912 0 0 systemd:/system.slice+ 0
828 systemd+ 20 0 28020 8016 7024 S 0.0 0.2 0:00.09 systemd-network 1 101 101 systemd+ 101 systemd+ 103 systemd+ 828 ? -1 828 1 0 0:00 0 1476 8856 22 862 0 - ..4..1.. 12:memory:/system.sli+ 103 systemd-network 828 0 1 - 0 0 8016 0 0 0 0 0 0 - 992 7024 0 0 systemd:/system.slice+ 0
830 systemd+ 20 0 25108 12452 8392 S 0.0 0.3 0:00.10 systemd-resolve 1 102 102 systemd+ 102 systemd+ 104 systemd+ 830 ? -1 830 1 0 0:00 0 268 3776 25 1738 0 - ..4..1.. 12:memory:/system.sli+ 104 systemd-resolve 830 0 1 - 0 0 12452 0 0 0 0 0 0 - 4060 8392 0 0 systemd:/system.slice+ 0
844 root 20 0 236544 7676 6744 S 0.0 0.2 0:00.47 accounts-daemon 1 0 0 root 0 root 0 root 844 ? -1 844 3 0 0:00 0 100 25868 13 678 0 - ..4..1.. 12:memory:/system.sli+ - - 844 0 0 - 0 0 7676 0 0 0 0 0 0 - 932 6744 0 0 systemd:/system.slice+ 0
847 root 20 0 6800 2924 2664 S 0.0 0.1 0:00.01 cron 1 0 0 root 0 root 0 root 847 ? -1 847 1 0 0:00 0 28 452 1 382 0 - 4.4..1.. 12:memory:/system.sli+ - - 847 0 0 - 0 0 2924 0 0 0 0 0 0 - 260 2664 0 0 systemd:/system.slice+ 0
848 message+ 20 0 8532 4924 4260 S 0.0 0.1 0:00.29 dbus-daemon 1 103 103 message+ 103 message+ 106 message+ 848 ? -1 848 1 1 0:00 0 148 1092 4 479 0 - ..4..1.. 12:memory:/system.sli+ - - 848 -15 0 - 0 0 4924 0 0 0 0 0 0 - 664 4260 0 0 systemd:/system.slice+ 0
854 root 20 0 82856 3852 3544 S 0.0 0.1 0:00.27 irqbalance 1 0 0 root 0 root 0 root 854 ? -1 854 2 0 0:00 0 40 8884 2 460 0 - ..4..1.. 12:memory:/system.sli+ - - 854 0 0 - 0 0 3852 0 0 0 0 0 0 - 308 3544 0 0 systemd:/system.slice+ 0
857 root 20 0 29748 17980 10328 S 0.0 0.4 0:00.07 networkd-dispat 1 0 0 root 0 root 0 root 857 ? -1 857 1 1 0:00 0 2428 7760 8 3165 0 - ..4..1.. 12:memory:/system.sli+ - - 857 0 2 - 0 0 17980 0 0 0 0 0 0 - 7652 10328 0 0 systemd:/system.slice+ 0
859 syslog 20 0 221128 5336 4028 S 0.0 0.1 0:00.34 rsyslogd 1 104 104 syslog 104 syslog 110 syslog 859 ? -1 859 4 1 0:00 0 384 18792 10 702 0 - ..4..1.. 12:memory:/system.sli+ 4,110 adm,syslog 859 0 0 - 0 0 5336 0 0 0 0 0 0 - 1308 4028 0 0 systemd:/system.slice+ 0
865 root 20 0 18268 7916 6908 S 0.0 0.2 0:00.17 systemd-logind 1 0 0 root 0 root 0 root 865 ? -1 865 1 1 0:00 0 140 1004 2 808 0 - ..4..1.. 12:memory:/system.sli+ - - 865 0 0 - 0 0 7916 0 0 0 0 0 0 - 1008 6908 0 0 systemd:/system.slice+ 0
869 daemon 20 0 3776 2096 1920 S 0.0 0.1 0:00.00 atd 1 1 0 root 1 daemon 1 daemon 869 ? -1 869 1 0 0:00 0 12 452 1 230 0 - 4.4..1.. 12:memory:/system.sli+ - - 869 0 0 - 0 0 2096 0 0 0 0 0 0 - 176 1920 0 0 systemd:/system.slice+ 0
888 root 20 0 5956 3884 3096 S 0.0 0.1 0:00.01 login 1 0 0 root 0 root 1000 kbrazil 888 tty1 1205 888 1 0 0:00 0 28 1216 11 603 0 - ..4..1.. 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 888 0 0 - 0 0 3884 0 0 0 0 0 0 - 788 3096 0 0 systemd:/user.slice/u+ 0
897 root 20 0 13084 7576 6640 S 0.0 0.2 0:00.01 sshd 1 0 0 root 0 root 0 root 897 ? -1 897 1 1 0:00 0 520 820 0 579 0 - ..4..1.. 12:memory:/system.sli+ - - 897 -17 0 - 0 0 7576 0 0 0 0 0 0 - 936 6640 0 0 systemd:/system.slice+ 0
911 root 20 0 107916 20632 12984 S 0.0 0.5 0:00.07 unattended-upgr 1 0 0 root 0 root 0 root 911 ? -1 911 2 0 0:00 0 2428 16220 18 2544 0 - ..4..1.. 12:memory:/system.sli+ - - 911 0 2 - 0 0 20632 0 0 0 0 0 0 - 7648 12984 0 0 systemd:/system.slice+ 0
912 root 20 0 233596 6868 6172 S 0.0 0.2 0:00.01 polkitd 1 0 0 root 0 root 0 root 912 ? -1 912 3 0 0:00 0 60 25768 2 502 0 - ..4..1.. 12:memory:/system.sli+ - - 912 0 0 - 0 0 6868 0 0 0 0 0 0 - 696 6172 0 0 systemd:/system.slice+ 0
1198 kbrazil 20 0 19744 10168 8460 S 0.0 0.3 0:00.10 systemd 1 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1198 ? -1 1198 1 1 0:00 0 808 1296 0 1468 0 ep_poll ..4..1.. 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 1198 0 1 LANG=en_US.UTF-8 PATH+ 0 0 10168 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 1708 8460 0 0 systemd:/user.slice/u+ 0
1199 kbrazil 20 0 104452 3608 16 S 0.0 0.1 0:00.00 (sd-pam) 1198 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1198 ? -1 1198 1 1 0:00 0 808 19544 0 49 0 - 4.4..14. 12:memory:/user.slice+ - - 1199 0 0 - 0 0 3608 0 0 0 0 0 0 - 3592 16 0 0 systemd:/user.slice/u+ 0
1205 kbrazil 20 0 8292 5220 3468 S 0.0 0.1 0:00.02 bash 888 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1205 tty1 1205 888 1 0 0:00 0 708 1760 1 1180 0 do_select ..4..1.. 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 1205 0 0 INVOCATION_ID=45b1807+ 0 0 5220 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 1752 3468 0 0 systemd:/user.slice/u+ 0
1318 root 0 -20 0 0 0 S 0.0 0.0 0:00.01 loop7 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..388.4. - - - 1318 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
1347 root 20 0 948032 49776 19700 S 0.0 1.2 0:07.87 snapd 1 0 0 root 0 root 0 root 1347 ? -1 1347 12 1 0:07 0 18800 195332 77 12k 0 - 4.4..1.. 12:memory:/system.sli+ - - 1347 -15 0 - 0 0 49776 0 0 0 0 0 0 - 30076 19700 0 0 systemd:/system.slice+ 0
1505 root 20 0 14840 8944 7480 S 0.0 0.2 0:00.01 sshd 897 0 0 root 0 root 0 root 1505 ? -1 1505 1 1 0:00 0 520 1560 0 796 0 - ..4..1.. 12:memory:/user.slice+ - - 1505 0 1 - 0 0 8944 0 0 0 0 0 0 - 1464 7480 0 0 systemd:/user.slice/u+ 0
1579 kbrazil 20 0 14840 6244 4596 S 0.0 0.2 0:00.97 sshd 1505 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1505 ? -1 1505 1 1 0:00 0 520 1560 0 344 0 - ..4..14. 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 1579 0 0 - 0 0 6244 0 0 0 0 0 0 - 1648 4596 0 0 systemd:/user.slice/u+ 0
1580 kbrazil 20 0 8524 5484 3616 S 0.0 0.1 0:00.08 bash 1579 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1580 pts/0 4810 1580 1 1 0:00 0 708 1992 0 3875 0 do_wait ..4..... 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 1580 0 0 LANG=en_US.UTF-8 USER+ 0 0 5484 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 1868 3616 0 0 systemd:/user.slice/u+ 0
1687 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 loop8 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..388.4. - - - 1687 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
1822 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 loop0 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - ..388.4. - - - 1822 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
1874 kbrazil 20 0 7968 4008 3648 S 0.0 0.1 0:00.00 dbus-daemon 1198 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 1874 ? -1 1874 1 0 0:00 0 148 528 0 356 0 ep_poll ..4..... 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 1874 0 0 HOME=/home/kbrazil LA+ 0 0 4008 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 360 3648 0 0 systemd:/user.slice/u+ 0
1968 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 loop3 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - ..388.4. - - - 1968 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
3780 root 20 0 14840 8964 7500 S 0.0 0.2 0:00.01 sshd 897 0 0 root 0 root 0 root 3780 ? -1 3780 1 0 0:00 0 520 1560 0 798 0 - ..4..1.. 12:memory:/user.slice+ - - 3780 0 1 - 0 0 8964 0 0 0 0 0 0 - 1464 7500 0 0 systemd:/user.slice/u+ 0
3853 kbrazil 20 0 14840 6100 4608 S 0.0 0.2 0:00.04 sshd 3780 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 3780 ? -1 3780 1 1 0:00 0 520 1560 0 278 0 - ..4..14. 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 3853 0 0 - 0 0 6100 0 0 0 0 0 0 - 1492 4608 0 0 systemd:/user.slice/u+ 0
3854 kbrazil 20 0 8284 5260 3528 S 0.0 0.1 0:00.02 bash 3853 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 3854 pts/1 4410 3854 1 0 0:00 0 708 1752 0 1202 0 do_wait ..4..... 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 3854 0 0 LANG=en_US.UTF-8 USER+ 0 0 5260 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 1732 3528 0 0 systemd:/user.slice/u+ 0
4021 root 20 0 0 0 0 I 0.0 0.0 0:05.12 kworker/0:2-events 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:05 0 0 0 0 0 0 - .42.8.6. - - - 4021 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4126 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/1:1-cgroup_de+ 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 4126 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4127 root 20 0 0 0 0 I 0.0 0.0 0:01.65 kworker/1:2-events 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:01 0 0 0 0 0 0 - .42.8.6. - - - 4127 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4180 root 20 0 0 0 0 I 0.0 0.0 0:00.30 kworker/u256:2-events+ 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 4180 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4410 kbrazil 20 0 7360 4072 2884 S 0.0 0.1 0:00.00 man 3854 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 4410 pts/1 4410 3854 1 1 0:00 0 68 1236 0 580 0 do_wait ..4..... 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 4410 0 0 SHELL=/bin/bash PWD=/+ 0 0 4072 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 1188 2884 0 0 systemd:/user.slice/u+ 0
4419 kbrazil 20 0 7360 1188 0 S 0.0 0.0 0:00.00 man 4410 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 4410 pts/1 4410 3854 1 0 0:00 0 68 1236 0 26 0 pipe_write ..4...4. 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 4419 0 0 SHELL=/bin/bash PWD=/+ 0 0 1188 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 1188 0 0 0 systemd:/user.slice/u+ 0
4420 kbrazil 20 0 6112 2948 2436 S 0.0 0.1 0:00.00 pager 4410 1000 1000 kbrazil 1000 kbrazil 1000 kbrazil 4410 pts/1 4410 3854 1 1 0:00 0 96 620 0 215 0 wait_woken ..4..... 12:memory:/user.slice+ 4,24,27,30,46,116,1000 adm,cdrom,sudo,dip,pl+ 4420 0 0 SHELL=/bin/bash PWD=/+ 0 0 2948 4026531839 4026531840 4026531992 4026531836 4026531837 4026531838 - 512 2436 0 0 systemd:/user.slice/u+ 0
4537 root 20 0 0 0 0 I 0.0 0.0 0:00.08 kworker/0:0-events 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:00 0 0 0 0 0 0 - .42.8.6. - - - 4537 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4552 root 20 0 0 0 0 I 0.0 0.0 0:00.12 kworker/u256:0-ext4-r+ 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 4552 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4662 root 20 0 0 0 0 I 0.0 0.0 0:01.12 kworker/0:1-pm 2 0 0 root 0 root 0 root 0 ? -1 0 1 0 0:01 0 0 0 0 0 0 - .42.8.6. - - - 4662 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0
4691 root 20 0 0 0 0 I 0.0 0.0 0:00.05 kworker/u256:1-flush-+ 2 0 0 root 0 root 0 root 0 ? -1 0 1 1 0:00 0 0 0 0 0 0 - .42.8.6. - - - 4691 0 0 - 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0

Some files were not shown because too many files have changed in this diff Show More