Appendix E. The proc File System
The Linux kernel has two primary functions: to control access to physical devices on the computer and to schedule when and how processes interact with these devices. The
/proc/
directory (also called the proc
file system) contains a hierarchy of special files which represent the current state of the kernel, allowing applications and users to peer into the kernel's view of the system.
The
/proc/
directory contains a wealth of information detailing system hardware and any running processes. In addition, some of the files within /proc/
can be manipulated by users and applications to communicate configuration changes to the kernel.
Note
Later versions of the 2.6 kernel have made the
/proc/ide/
and /proc/pci/
directories obsolete. The /proc/ide/
file system is now superseded by files in sysfs
; to retrieve information on PCI devices, use lspci
instead. For more information on sysfs
or lspci
, see their respective man
pages.
E.1. A Virtual File System
Linux systems store all data as files. Most users are familiar with the two primary types of files: text and binary. But the
/proc/
directory contains another type of file called a virtual file. As such, /proc/
is often referred to as a virtual file system.
Virtual files have unique qualities. Most of them are listed as zero bytes in size, but can still contain a large amount of information when viewed. In addition, most of the time and date stamps on virtual files reflect the current time and date, indicative of the fact they are constantly updated.
Virtual files such as
/proc/interrupts
, /proc/meminfo
, /proc/mounts
, and /proc/partitions
provide an up-to-the-moment glimpse of the system's hardware. Others, like the /proc/filesystems
file and the /proc/sys/
directory provide system configuration information and interfaces.
For organizational purposes, files containing information on a similar topic are grouped into virtual directories and sub-directories. Process directories contain information about each running process on the system.
E.1.1. Viewing Virtual Files
Most files within
/proc/
files operate similarly to text files, storing useful system and hardware data in human-readable text format. As such, you can use cat
, more
, or less
to view them. For example, to display information about the system's CPU, run cat /proc/cpuinfo
. This will return output similar to the following:
processor : 0 vendor_id : AuthenticAMD cpu family : 5 model : 9 model name : AMD-K6(tm) 3D+ Processor stepping : 1 cpu MHz : 400.919 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr bogomips : 799.53
Some files in
/proc/
contain information that is not human-readable. To retrieve information from such files, use tools such as lspci
, apm
, free
, and top
.
Note
Some of the virtual files in the
/proc/
directory are readable only by the root user.
E.1.2. Changing Virtual Files
As a general rule, most virtual files within the
/proc/
directory are read-only. However, some can be used to adjust settings in the kernel. This is especially true for files in the /proc/sys/
subdirectory.
To change the value of a virtual file, use the following command:
echo value > /proc/file
For example, to change the host name on the fly, run:
echo www.example.com > /proc/sys/kernel/hostname
Other files act as binary or Boolean switches. Typing
cat /proc/sys/net/ipv4/ip_forward
returns either a 0
(off or false) or a 1
(on or true). A 0
indicates that the kernel is not forwarding network packets. To turn packet forwarding on, run echo 1 > /proc/sys/net/ipv4/ip_forward
.
Note
Another command used to alter settings in the
/proc/sys/
subdirectory is /sbin/sysctl
. For more information on this command, see Section E.4, “Using the sysctl Command”
For a listing of some of the kernel configuration files available in the
/proc/sys/
subdirectory, see Section E.3.9, “/proc/sys/”.