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.
Under Linux, all data are stored 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. It is
for this reason that /proc/ is often
referred to as a virtual file system.
These virtual files have unique qualities. Most of them are
listed as zero bytes in size and yet when one is viewed, it can
contain a large amount of information. In addition, most of the
time and date settings 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. For instance, /proc/ide/
contains information for all physical IDE devices. Likewise,
process directories contain information about each running process
on the system.
By using the cat, more, or less commands on
files within the /proc/ directory, users
can immediately access enormous amounts of information about the
system. For example, to display the type of CPU a computer has,
type cat /proc/cpuinfo to receive 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
|
When viewing different virtual files in the /proc/ file system, some of the information is
easily understandable while some is not human-readable. This is in
part why utilities exist to pull data from virtual files and
display it in a useful way. Examples of these utilities include
lspci, apm,
free, and top.
|
Note |
|
Some of the virtual files in the /proc/ directory are readable only by the root
user.
|
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 echo command and a greater than symbol (>) to redirect the new value to the file. For
example, to change the hostname on the fly, type:
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 or a 1. A 0
indicates that the kernel is not forwarding network packets. Using
the echo command to change the value of
the ip_forward file to 1 immediately turns packet forwarding
on.
For a listing of some of the kernel configuration files
available in the /proc/sys/ subdirectory,
refer to Section
5.3.9 /proc/sys/.