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 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.
    
5.1. A Virtual File 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 /proc/filesystems
	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.
      
5.1.1. Viewing Virtual Files
	  By using the cat, more, or
	  less commands on files within the
	  /proc/ directory, users can immediately access an
	  enormous amount 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.
	   | 
5.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
	  echo command and a >
	  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. 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/, see Section 5.3.9 /proc/sys/.