Crate procfs

source ·
Expand description

This crate provides to an interface into the linux procfs filesystem, usually mounted at /proc.

This is a pseudo-filesystem which is available on most every linux system and provides an interface to kernel data structures.

Kernel support

Not all fields/data are available in each kernel. Some fields were added in specific kernel releases, and other fields are only present in certain kernel configuration options are enabled. These are represented as Option fields in this crate.

This crate aims to support all 2.6 kernels (and newer). WSL2 is also supported.

Documentation

In almost all cases, the documentation is taken from the proc.5 manual page. This means that sometimes the style of writing is not very “rusty”, or may do things like reference related files (instead of referencing related structs). Contributions to improve this are welcome.

Panicing

While previous versions of the library could panic, this current version aims to be panic-free in a many situations as possible. Whenever the procfs crate encounters a bug in its own parsing code, it will return an InternalError error. This should be considered a bug and should be reported. If you encounter a panic, please report that as well.

Cargo features

The following cargo features are available:

  • chrono – Default. Optional. This feature enables a few methods that return values as DateTime objects.
  • flate2 – Default. Optional. This feature enables parsing gzip compressed /proc/config.gz file via the procfs::kernel_config method.
  • backtrace – Optional. This feature lets you get a stack trace whenever an InternalError is raised.

Examples

Examples can be found in the various modules shown below, or in the examples folder of the code repository.

Re-exports

  • pub use crate::sys::kernel::BuildInfo as KernelBuildInfo;
  • pub use crate::sys::kernel::Type as KernelType;
  • pub use crate::sys::kernel::Version as KernelVersion;

Modules

  • Information about the networking layer.
  • Extension traits useful for importing wholesale.
  • Functions and structs related to process information
  • Sysctl is a means of configuring certain aspects of the kernel at run-time, and the /proc/sys/ directory is there so that you don’t even need special tools to do it!

Structs

Enums

  • Possible values for a kernel config option
  • The kind of a lock (read or write)
  • The mode of a lock (advisory or mandatory)
  • The type of a file lock
  • The various error conditions in the procfs crate.

Traits

Functions

  • The boot time of the system, as a DateTime object.
  • The boottime of the system, in seconds since the epoch
  • Information about the cgroup controllers that are compiled into the kernel
  • Get a list of the arguments passed to the Linux kernel at boot time
  • The current SystemInfo.
  • Get disk IO stat info from /proc/diskstats
  • Reads and parses the /proc/iomem, returning an error if there are problems.
  • Returns a configuration options used to build the currently running kernel
  • Get a list of current file locks and leases
  • Get a list of loaded kernel modules
  • Get a list of mountpoints from /proc/mounts
  • Memory page size, in bytes.
  • Get a list of partitions from /proc/partitions
  • Return the number of ticks per second.
  • Get various virtual memory statistics

Type Aliases