# 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:
```text
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:
```text
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:
```text
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
```text
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:
```text
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:
```text
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.
```text
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
...
```