fwd/vendor/procfs/examples
John Doty 9c435dc440 Vendor dependencies
Let's see how I like this workflow.
2022-12-19 08:38:22 -08:00
..
diskstat.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
dump.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
interface_stats.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
lslocks.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
lsmod.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
mountinfo.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
netstat.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
pressure.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
process_hierarchy.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
ps.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
README.md Vendor dependencies 2022-12-19 08:38:22 -08:00
self_memory.rs Vendor dependencies 2022-12-19 08:38:22 -08:00
shm.rs Vendor dependencies 2022-12-19 08:38:22 -08:00

Examples

These examples can be run by running cargo run --example example_name

dump.rs

Prints out details about the current process (the dumper itself), or a process specifed by PID

interface_stats.rs

Runs continually and prints out how many bytes/packets are sent/received. Press ctrl-c to exit the example:

       Interface: bytes recv                         bytes sent
================  ====================               ====================
 br-883c4c992deb: 823307769                0.2 kbps  1537694158               0.5 kbps
 br-d73af6e6d094: 9137600399               0.9 kbps  2334717319               0.4 kbps
         docker0: 2938964881               0.6 kbps  19291691656             11.4 kbps
 docker_gwbridge: 1172300                  0.0 kbps  15649536                 0.0 kbps
        enp5s0f0: 44643307888420        5599.8 kbps  1509415976135           99.0 kbps
        enp5s0f1: 0                        0.0 kbps  0                        0.0 kbps
              lo: 161143108162             0.4 kbps  161143108162             0.4 kbps
     veth3154ff3: 3809619534               1.0 kbps  867529906                0.4 kbps
     veth487bc9b: 2650532684               0.8 kbps  2992458899               0.9 kbps
     veth8cb8ca8: 3234030733               0.7 kbps  16921098378             11.4 kbps
     vethbadbe14: 12007615348              3.8 kbps  15583195644              5.0 kbps
     vethc152f93: 978828                   0.0 kbps  3839134                  0.0 kbps
     vethe481f30: 1637142                  0.0 kbps  15805768                 0.0 kbps
     vethfac2e83: 19445827683              6.2 kbps  16194181515              5.1 kbps

netstat.rs

Prints out all open and listening TCP/UDP sockets, along with the owning process. The output format is very similar to the standard netstat linux utility:

Local address              Remote address             State           Inode    PID/Program name
0.0.0.0:53                 0.0.0.0:0                  Listen          30883        1409/pdns_server
0.0.0.0:51413              0.0.0.0:0                  Listen          24263        927/transmission-da
0.0.0.0:35445              0.0.0.0:0                  Listen          21777        942/rpc.mountd
0.0.0.0:22                 0.0.0.0:0                  Listen          27973        1149/sshd
0.0.0.0:25                 0.0.0.0:0                  Listen          28295        1612/master

pressure.rs

Prints out CPU/IO/Memory pressure information

ps.rs

Prints out all processes that share the same tty as the current terminal. This is very similar to the standard ps utility on linux when run with no arguments:

  PID TTY          TIME CMD
 8369 pty/13       4.05 bash
23124 pty/13       0.23 basic-http-serv
24206 pty/13       0.11 ps

self_memory.rs

Shows several ways to get the current memory usage of the current process

PID: 21867
Memory page size: 4096
== Data from /proc/self/stat:
Total virtual memory used: 3436544 bytes
Total resident set: 220 pages (901120 bytes)

== Data from /proc/self/statm:
Total virtual memory used: 839 pages (3436544 bytes)
Total resident set: 220 pages (901120 byte)s
Total shared memory: 191 pages (782336 bytes)

== Data from /proc/self/status:
Total virtual memory used: 3436544 bytes
Total resident set: 901120 bytes
Total shared memory: 782336 bytes

lsmod.rs

This lists all the loaded kernel modules, in a simple tree format.

diskstat.rs

Lists IO information for local disks:

sda1 mounted on /:
  total reads: 7325390 (13640070 ms)
  total writes: 124191552 (119109541 ms)
  total flushes: 0 (0 ms)

Note: only local disks will be shown (not NFS mounts, and disks used for ZFS will not be shown either).

lslocks.rs

Shows current file locks in a format that is similiar to the lslocks utility.

mountinfo.rs

Lists all mountpoints, along with their type and options:

sysfs on /sys type sysfs (noexec,relatime,nodev,rw,nosuid)
proc on /proc type proc (noexec,rw,nodev,relatime,nosuid)
udev on /dev type devtmpfs (rw,nosuid,relatime)
  mode = 755
  nr_inodes = 4109298
  size = 16437192k
devpts on /dev/pts type devpts (nosuid,rw,noexec,relatime)
  gid = 5
  ptmxmode = 000
  mode = 620
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime)
  size = 3291852k
  mode = 755
/dev/sda1 on / type ext4 (rw,relatime)
  errors = remount-ro

process_hierarchy.rs

Lists all processes as a tree. Sub-processes will be hierarchically ordered beneath their parents.

1       /usr/lib/systemd/systemd --system --deserialize 54
366         /usr/lib/systemd/systemd-journald
375         /usr/lib/systemd/systemd-udevd
383         /usr/bin/lvmetad -f
525         /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
529         /usr/bin/syncthing -no-browser -no-restart -logflags=0
608             /usr/bin/syncthing -no-browser -no-restart -logflags=0
530         /usr/lib/systemd/systemd-logind
...