Below is a list of some of the more useful virtual files in the
top-level of the /proc/ directory.
Note
In most cases, the content of the files listed in this section will
not be the same on your machine. This is because much of the
information is specific to the hardware on which Red Hat Linux is running.
5.2.1. /proc/apm
This file provides information about the state of the
Advanced Power Management (APM) system and is
used by the apm command. If a system with no
battery is connected to an AC power source, this virtual file would
look similar to this:
1.16 1.2 0x07 0x01 0xff 0x80 -1% -1 ?
Running the apm -v command on such a system results
in output similar to this:
APM BIOS 1.2 (kernel driver 1.16)
AC on-line, no system battery
For systems which do not use a battery as a power source,
apm is able do little more than put the machine in
standby mode. The apm command is much more useful
on laptops. For example, the following output is from the command
cat /proc/apm on a laptop running Red Hat Linux while
plugged into a power outlet:
1.16 1.2 0x03 0x01 0x03 0x09 100% -1 ?
When the same laptop is unplugged from its power source for a few
minutes, the contents of the apm file change to
something like this:
1.16 1.2 0x03 0x00 0x00 0x01 99% 1792 min
The apm -v command will now yield more useful data,
such as the following:
APM BIOS 1.2 (kernel driver 1.16)
AC off-line, battery status high: 99% (1 day, 5:52)
5.2.2. /proc/cmdline
This file shows the parameters passed to the kernel at the time it is
started. A sample /proc/cmdline file looks
like this:
ro root=/dev/hda2
This tells us that the kernel is mounted read-only (signified
by (ro)) off of the second
partition on the first IDE device
(/dev/hda2).
5.2.3. /proc/cpuinfo
This virtual file identifies the type of processor used by your
system. The following is an example of the output typical of
/proc/cpuinfo:
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
processor — Provides
each processor with an identifying number. On systems that have
one processor, there will be only a
0.
cpu family —
Authoritatively identifies the type of processor you have in the
system. For an Intel-based system, place the number in front of
"86" to determine the value. This is particularly helpful for
those attempting to identify the architecture of an older system
such as a 586, 486, or 386. Because some RPM packages are compiled
for each of these particular architectures, this value also helps
users determine which packages to install.
model name — Displays
the common name of the processor, including its project name.
cpu MHz — Shows
the precise speed in megahertz for the processor to the
thousandth decimal point.
cache size — Displays
the amount of level 2 memory cache available to the processor.
flags — Defines
a number of different qualities about the processor, such as the
presence of a floating point unit (FPU) and the ability to process
MMX instructions.
5.2.4. /proc/devices
This file displays the various character and block devices currently
configured (not include devices whose modules are not loaded). Below
is a sample output from this file:
The output from /proc/devices includes the major
number and name of the device, and is broken into two major sections:
Character devices and
Block devices.
Character devices are similar to
block devices, except for two basic
differences:
Block devices have a buffer available, allowing them to order
requests before dealing with them. This is important for devices
designed to store information — such as hard drives —
because the ability to order the information before writing it to
the device allows it to be placed in a more efficient
order. Character devices do not require buffering.
Block devices can send and receive information in blocks of a
size configured per device. Character devices send data with no
preconfigured size.
For more information about devices see
/usr/src/linux-2.4/Documentation/devices.txt.
5.2.5. /proc/dma
This file contains a list of the registered ISA direct memory access
(DMA) channels in use. A sample /proc/dma files
looks like this:
4: cascade
5.2.6. /proc/execdomains
This file lists the execution domains currently supported by the
Linux kernel, along with the range of personalities they support.
0-0 Linux [kernel]
Think of execution domains as the "personality" for a particular
operating system. Because other binary formats, such as Solaris,
UnixWare, and FreeBSD, can be used with Linux, programmers can change
the way the operating system treats particular system calls from these
binaries by changing the personality of the task. Except for the
PER_LINUX execution domain, different
personalities can be implemented as dynamically loadable modules.
5.2.7. /proc/fb
This file contains a list of frame buffer devices, with the frame
buffer device number and the driver that controls it. Typical output
of /proc/fb for systems which contain frame buffer
devices looks similar to this:
0 VESA VGA
5.2.8. /proc/filesystems
This file displays a list of the file system types currently
supported by the kernel. Sample output from a generic
/proc/filesystems looks similar to this:
The first column signifies whether the file system is mounted on a
block device. Those beginning with
nodev are not mounted on a
device. The second column lists the names of the file systems
supported.
The mount command cycles through these file systems
listed here when one is not specified as an argument.
5.2.9. /proc/interrupts
This file records the number of interrupts per IRQ on the x86
architecture. A standard /proc/interrupts looks
similar to this:
The first column refers to the IRQ number. Each CPU in the system has
its own column and its own number of interrupts per IRQ. The next
column reports the type of interrupt, and the last column contains
the name of the device that is located at that IRQ.
Each of the types of interrupts seen in this file, which are
architecture-specific, mean something a little different. For x86
machines, the following values are common:
XT-PIC — This
is the old AT computer interrupts.
IO-APIC-edge — The
voltage signal on this interrupt transitions from low to high,
creating an edge, where the interrupt
occurs and is only signaled once. This kind of interrupt, as well
as the IO-APIC-level interrupt,
are only seen on systems with processors from the 586 family and
higher.
IO-APIC-level — Generates
interrupts when its voltage signal goes high until the signal goes
low again.
5.2.10. /proc/iomem
This file shows you the current map of the system's memory for
each physical device:
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-07ffffff : System RAM
00100000-00291ba8 : Kernel code
00291ba9-002e09cb : Kernel data
e0000000-e3ffffff : VIA Technologies, Inc. VT82C597 [Apollo VP3]
e4000000-e7ffffff : PCI Bus #01
e4000000-e4003fff : Matrox Graphics, Inc. MGA G200 AGP
e5000000-e57fffff : Matrox Graphics, Inc. MGA G200 AGP
e8000000-e8ffffff : PCI Bus #01
e8000000-e8ffffff : Matrox Graphics, Inc. MGA G200 AGP
ea000000-ea00007f : Digital Equipment Corporation DECchip 21140 [FasterNet]
ea000000-ea00007f : tulip
ffff0000-ffffffff : reserved
The first column displays the memory registers used by each of the
different types of memory. The second column lists the kind of memory
located within those registers. In particular, this column displays
which memory registers are used by the kernel within the system RAM
or, if the network interface card has multiple Ethernet ports, the
memory registers assigned for each port.
5.2.11. /proc/ioports
The output of /proc/ioports provides a list of
currently registered port regions used for input or output
communication with a device. This file can be quite long, with a
beginning similar to this:
The first column gives the I/O port address range reserved for
the device listed in the second column.
5.2.12. /proc/isapnp
This file lists installed Plug and Play (PnP)
cards in ISA slots on the system. This is most often seen with sound
cards but may include any number of devices. A
/proc/isapnp file with a Soundblaster entry in it
looks similar to this:
Card 1 'CTL0070:Creative ViBRA16C PnP' PnP version 1.0 Product version 1.0
Logical device 0 'CTL0001:Audio'
Device is not active
Active port 0x220,0x330,0x388
Active IRQ 5 [0x2]
Active DMA 1,5
Resources 0
Priority preferred
Port 0x220-0x220, align 0x0, size 0x10, 16-bit address decoding
Port 0x330-0x330, align 0x0, size 0x2, 16-bit address decoding
Port 0x388-0x3f8, align 0x0, size 0x4, 16-bit address decoding
IRQ 5 High-Edge
DMA 1 8-bit byte-count compatible
DMA 5 16-bit word-count compatible
Alternate resources 0:1
Priority acceptable
Port 0x220-0x280, align 0x1f, size 0x10, 16-bit address decoding
Port 0x300-0x330, align 0x2f, size 0x2, 16-bit address decoding
Port 0x388-0x3f8, align 0x0, size 0x4, 16-bit address decoding
IRQ 5,7,2/9,10 High-Edge
DMA 1,3 8-bit byte-count compatible
DMA 5,7 16-bit word-count compatible
This file can be quite long, depending on the number of devices
displayed and their resource requirements.
Each card lists its name, PnP version number, and product version
number. If the device is active and configured, this file will also
reveal the port and IRQ numbers for the device. In addition, to
ensure better compatibility, the card will specify
preferred and
acceptable values for a number of
different parameters. The goal here is to allow the PnP cards to
work around one another and avoid IRQ and port conflicts.
5.2.13. /proc/kcore
This file represents the physical memory of the system and is stored
in the core file format. Unlike most /proc/
files, kcore displays a size. This value is
given in bytes and is equal to the size of the physical memory (RAM)
used plus 4KB.
The contents of this file are designed to be examined by a debugger,
such as gdb, and is not human readable.
Warning
Do not view the /proc/kcore virtual file. The
contents of the file will scramble text output on the terminal. If
this file is accidentally viewed, press
[Ctrl]-[C] to stop
the process then type reset to bring back the
command line prompt.
5.2.14. /proc/kmsg
This file is used to hold messages generated by the kernel. These
messages are then picked up by other programs, such as
/sbin/klogd.
5.2.15. /proc/ksyms
This file contains the symbol definitions used by the module tools to
dynamically link and bind kernel modules.
The first column lists the memory address for the kernel function, the second
column refers to the name of the function, and the last column
reveals the name of the loaded module.
5.2.16. /proc/loadavg
This file provides a look at load average on the processor over time,
as well as additional data used by uptime and other
commands. A sample /proc/loadavg file looks
similar to this:
0.20 0.18 0.12 1/80 11206
The first three columns measure CPU utilization of the last 1, 5,
and 10 minute periods. The fourth column shows the number of
currently running processes and the total number of processes. The
last column displays the last process ID used.
5.2.17. /proc/locks
This file displays the files currently locked by the kernel. The
contents of this file contain internal kernel debugging data and can
vary tremendously, depending on the use of the system. A sample
/proc/locks file for a lightly loaded system
looks similar to this:
Each lock has its own line which starts with a unique number. The
second column refers to the class of lock used, with
FLOCK signifying the older-style UNIX
file locks from a flock system call and
POSIX representing the newer POSIX
locks from the lockf system call.
The third column can have two values:
ADVISORY or
MANDATORY.
ADVISORY means that the lock does not
prevent other people from accessing the data; it only prevents other
attempts to lock it. MANDATORY means
that no other access to the data is permitted while the lock is
held. The fourth column reveals whether the lock is allowing the
holder READ or
WRITE access to the file. The fifth
column shows the ID of the process holding the lock. The sixth column
shows the ID of the file being locked, in the format of
MAJOR-DEVICE:MINOR-DEVICE:INODE-NUMBER.
The seventh column shows the start and end of the file's locked
region. The remaining columns point to internal kernel data structures
used for specialized debugging and can be ignored.
5.2.18. /proc/mdstat
This file contains the current information for multiple-disk, RAID
configurations. If your system does not contain such a configuration,
then /proc/mdstat will look similar to
this:
Personalities :
read_ahead not set
unused devices: <none>
This file remains in the same state as seen above unless a software RAID or
md device is present. In that case, view
/proc/mdstat to view the current status of
mdX RAID devices.
The /proc/mdstat file below shows a system with
its md0 configured as a RAID 1 device, while it
is currently re-syncing the disks:
Much of the information here is used by the free,
top, and ps commands. In fact,
the output of the free command is even similar in
appearance to the contents and structure of
/proc/meminfo. But by looking directly at
/proc/meminfo, more details are revealed:
Mem — The
current state of physical RAM in the system, including a full breakdown
of total, used, free, shared, buffered, and cached memory
utilization in bytes.
Swap — The
total, used, and free amounts of swap space, in bytes.
MemTotal — Total amount
of physical RAM, in kilobytes.
MemFree — The amount of
physical RAM, in kilobytes, left unused by the system.
MemShared — Unused with
2.4 and higher kernels but left in for compatibility with earlier
kernel versions.
Buffers — The amount of
physical RAM, in kilobytes, used for file buffers.
Cached — The amount of
physical RAM, in kilobytes, used as cache memory.
Active — The total
amount of buffer or page cache memory, in kilobytes, that is in
active use.
Inact_dirty — The total
amount of buffer or cache pages, in kilobytes, that might be free
and available.
Inact_clean — The total
amount of buffer or cache pages, in kilobytes, that are
free and available.
Inact_target — The net
amount of allocations per second, in kilobytes, averaged over
one minute.
HighTotal and
HighFree — The total and
free amount of memory, in kilobytes, that is not directly mapped
into kernel space. The HighTotal
value can vary based on the type of kernel used.
LowTotal and
LowFree — The total and
free amount of memory, in kilobytes, that is directly mapped
into kernel space. The LowTotal
value can vary based on the type of kernel used.
SwapTotal — The total
amount of swap available, in kilobytes.
SwapFree — The total
amount of swap free, in kilobytes.
5.2.20. /proc/misc
This file lists miscellaneous drivers registered on the miscellaneous
major device, which is device number 10:
135 rtc
1 psaux
134 apm_bios
The first column is the minor number of each device, while the second
column shows the driver in use.
5.2.21. /proc/modules
This file displays a list of all modules loaded into the kernel. Its
contents will vary based on the configuration and use of your system,
but it should be organized in a similar manner to this sample
/proc/modules file output:
The first column contains the name of the module. The second column
refers to the memory size of the module, in bytes. The third column
lists whether the module is currently loaded
(1) or unloaded
(0). The final column states if the
module can unload itself automatically after a period without use
(autoclean) or if it is not being
utilized (unused). A module with a
line containing a name listed in brackets
([ or
]) indicates that the module depends
upon another module to be present in order to function.
5.2.22. /proc/mounts
This file provides a list of all mounts used by the system:
The output found here is similar to contents of
/etc/mtab, except that
/proc/mount is more up-to-date.
The first column specifies the device that is mounted, the
second column revealing the mountpoint, and the third column tells the
file system type, and the fourth column tells you if it is mounted
read-only (ro) or read-write
(rw). The fifth and sixth columns are
dummy values designed to match the format used in
/etc/mtab.
5.2.23. /proc/mtrr
This file refers to the current Memory Type Range Registers (MTRRs) in
use with the system. If the system architecture supports MTRRs, then
the /proc/mtrr file may look similar to this:
MTRRs are used with the Intel P6 family of processors (Pentium II and
higher), and they control processor access to memory
ranges. When using a video card on a PCI or AGP bus, a properly
configured /proc/mtrr file can increase performance
over 150%.
Most of the time, this value is properly configured by
default. More information on manually configuring this file,
can be found online at the following URL: http://web1.linuxhq.com/kernel/v2.3/doc/mtrr.txt.html.
5.2.24. /proc/partitions
Most of the information here is of little importance to the user,
except for the following columns:
major — The major number
of the device with this partition. The major number in our
example (3) corresponds with
the block device ide0 in
/proc/devices.
minor — The minor number
of the device with this partition. This serves to separate the
partitions into different physical devices and relates to the
number at the end of the name of the partition.
#blocks — Lists the
number of physical disk blocks contained in a particular
partition.
name — The name of the
partition.
5.2.25. /proc/pci
This file contains a full listing of every PCI device on the
system. Depending on the number of PCI devices,
/proc/pci can be rather long. An example from
this file on a basic system looks similar to this:
Bus 0, device 0, function 0:
Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge (rev 3).
Master Capable. Latency=64.
Prefetchable 32 bit memory at 0xe4000000 [0xe7ffffff].
Bus 0, device 1, function 0:
PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge (rev 3).
Master Capable. Latency=64. Min Gnt=128.
Bus 0, device 4, function 0:
ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 2).
Bus 0, device 4, function 1:
IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 1).
Master Capable. Latency=32.
I/O at 0xd800 [0xd80f].
Bus 0, device 4, function 2:
USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 1).
IRQ 5.
Master Capable. Latency=32.
I/O at 0xd400 [0xd41f].
Bus 0, device 4, function 3:
Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 2).
IRQ 9.
Bus 0, device 9, function 0:
Ethernet controller: Lite-On Communications Inc LNE100TX (rev 33).
IRQ 5.
Master Capable. Latency=32.
I/O at 0xd000 [0xd0ff].
Non-prefetchable 32 bit memory at 0xe3000000 [0xe30000ff].
Bus 0, device 12, function 0:
VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1).
IRQ 11.
Master Capable. Latency=32. Min Gnt=4.Max Lat=255.
Non-prefetchable 32 bit memory at 0xdc000000 [0xdfffffff].
This output shows a list of all PCI devices, sorted in the order of
bus, device, and function. Beyond providing the name and version of
the device, this list also gives detailed IRQ information so an
administrator can quickly look for conflicts.
Tip
To get a more readable version of this information, type:
/sbin/lspci -vb
5.2.26. /proc/slabinfo
This file gives information about memory usage on the
slab level. Linux kernels greater than version
2.2 use slab pools to manage memory above the
page level. Commonly used objects have their own slab pools. The
following is a portion of a typical
/proc/slabinfo virtual file:
The values in this file occur in the following order: cache name,
number of active objects, number of total objects, size of the object,
number of active slabs (blocks) of the objects, total number of slabs
of the objects, and the number of pages per slab.
Note that active in this case means an object is
in use.
5.2.27. /proc/stat
This file keeps track of a variety of different statistics about the
system since it was last restarted. The contents of
/proc/stat, which can be quite long, begins
something like this:
cpu — Measures the number
of jiffies (1/100 of a second) that
the system has been in user mode, user mode with low priority
(nice), system mode, and in idle task, respectively. The total
for all CPUs is given at the top, while each individual CPU is
listed below with its own statistics.
page — The number of
memory pages the system has written in and out to disk.
swap — The number of swap
pages the system has brought in and out.
intr — The number of
interrupts the system has experienced.
btime — The boot time,
measured in the number of seconds since January 1, 1970,
otherwise known as the epoch.
5.2.28. /proc/swaps
This file measures swap space and its utilization. For a system with
only one swap partition, the output of
/proc/swap may look similar to this:
Filename Type Size Used Priority
/dev/hda6 partition 136512 20024 -1
While some of this information can be found in other files in the
/proc/ directory, /proc/swap
provides a snapshot of every swap file name, the type of swap space, the
total size, and the amount of this space that is in use (in
kilobytes). The priority column is useful when multiple swap files are
in use. The lower the priority, the more likely the swap file is to be
used.
5.2.29. /proc/uptime
This file contains information detailing how long the system has been on
since its last restart. The output of
/proc/uptime is quite minimal:
350735.47 234388.90
The first number is the total number of seconds the system has
been up. The second number is how much of that time the machine
has spent idle, in seconds.
5.2.30. /proc/version
This file specifies the version of the Linux kernel and
gcc in use, as well as the version of Red Hat Linux
installed on the system:
Linux version 2.4.20-0.40 (user@foo.redhat.com)(gcc version 3.2.1 20021125
(Red Hat Linux 8.0 3.2.1-1)) #1 Tue Dec 3 20:50:18 EST 2002
This information is used for a variety of purposes, including the
version data presented when a user logs in.