Cari di RHE Linux 
    RHE Linux User Manual
Daftar Isi
(Sebelumnya) 13 : The sysconfig Directory - ...13 : Index-Deployment Guide - ... (Berikutnya)

Deployment Guide

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.

The /proc/ide/ and /proc/pci/ directories

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, refer to 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: 0vendor_id: AuthenticAMDcpu family: 5model: 9model name: AMD-K6(tm) 3D+Processor stepping: 1 cpuMHz: 400.919cache size: 256 KBfdiv_bug: nohlt_bug: nof00f_bug: nocoma_bug: nofpu: yesfpu_exception: yescpuid level: 1wp: yesflags: fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrrbogomips: 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.

Certain files can only be accessed with root privileges

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 hostname 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.

The sysctl command

Another command used to alter settings in the /proc/sys/ subdirectory is /sbin/sysctl. For more information on this command, refer to Section E.4, "Using the sysctl Command"
For a listing of some of the kernel configuration files available in the /proc/sys/ subdirectory, refer to Section E.3.9, "/proc/sys/".

E.2. Top-level Files within the proc File System

Below is a list of some of the more useful virtual files in the top-level of the /proc/ directory.

The content of your files may differ

In most cases, the content of the files listed in this section are not the same as those installed on your machine. This is because much of the information is specific to the hardware on which Red Hat Enterprise Linux is running for this documentation effort.

E.2.1. /proc/buddyinfo

This file is used primarily for diagnosing memory fragmentation issues. Using the buddy algorithm, each column represents the number of pages of a certain order (a certain size) that are available at any given time. For example, for zone direct memory access (DMA), there are 90 of 2(0*PAGE_SIZE) chunks of memory. Similarly, there are 6 of 2(1*PAGE_SIZE) chunks, and 2 of 2(2*PAGE_SIZE) chunks of memory available.
The DMA row references the first 16 MB on a system, the HighMem row references all memory greater than 4 GB on a system, and the Normal row references all memory in between.
The following is an example of the output typical of /proc/buddyinfo:
Node 0, zone  DMA 90  6  2  1  1  ...Node 0, zone   Normal   1650 310  5  0  0  ...Node 0, zone  HighMem  2  0  0  1  1  ...

E.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 the following:
ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3
This tells us that the kernel is mounted read-only (signified by (ro)), located on the first logical volume (LogVol00) of the first volume group (/dev/VolGroup00). LogVol00 is the equivalent of a disk partition in a non-LVM system (Logical Volume Management), just as /dev/VolGroup00 is similar in concept to /dev/hda1, but much more extensible.
For more information on LVM used in Red Hat Enterprise Linux, refer to http://www.tldp.org/HOWTO/LVM-HOWTO/index.html.
Next, rhgb signals that the rhgb package has been installed, and graphical booting is supported, assuming /etc/inittab shows a default runlevel set to id:5:initdefault:.
Finally, quiet indicates all verbose kernel messages are suppressed at boot time.

E.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: 0vendor_id: GenuineIntelcpu family: 15model: 2model name: Intel(R) Xeon(TM) CPU 2.40GHzstepping: 7 cpuMHz: 2392.371cache size: 512 KBphysical id: 0siblings: 2runqueue: 0fdiv_bug: nohlt_bug: nof00f_bug: nocoma_bug: nofpu: yesfpu_exception: yescpuid level: 2wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca  cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tmbogomips: 4771.02
  • processor - Provides each processor with an identifying number. On systems that have one processor, only a 0 is present.
  • cpu family - Authoritatively identifies the type of processor 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 thousandths decimal place.
  • cache size - Displays the amount of level 2 memory cache available to the processor.
  • siblings - Displays the number of sibling CPUs on the same physical CPU for architectures which use hyper-threading.
  • 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.

E.2.4. /proc/crypto

This file lists all installed cryptographic ciphers used by the Linux kernel, including additional details for each. A sample /proc/crypto file looks like the following:
name : sha1module   : kerneltype : digestblocksize : 64digestsize   : 20name : md5module   : md5type : digestblocksize : 64digestsize   : 16

E.2.5. /proc/devices

This file displays the various character and block devices currently configured (not including devices whose modules are not loaded). Below is a sample output from this file:
Character devices:  1 mem  4 /dev/vc/0  4 tty  4 ttyS  5 /dev/tty  5 /dev/console  5 /dev/ptmx  7 vcs  10 misc  13 input  29 fb  36 netlink  128 ptm  136 pts  180 usbBlock devices:  1 ramdisk  3 ide0  9 md  22 ide1  253 device-mapper  254 mdp
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:
  1. Character devices do not require buffering. Block devices have a buffer available, allowing them to order requests before addressing 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.
  2. Character devices send data with no preconfigured size. Block devices can send and receive information in blocks of a size configured per device.
For more information about devices refer to the following installed documentation:
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/devices.txt

E.2.6. /proc/dma

This file contains a list of the registered ISA DMA channels in use. A sample /proc/dma files looks like the following:
4: cascade

E.2.7. /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 an 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 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.

E.2.8. /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 the following:
0 VESA VGA

E.2.9. /proc/filesystems

This file displays a list of the file system types currently supported by the kernel. Sample output from a generic /proc/filesystems file looks similar to the following:
nodev   sysfsnodev   rootfsnodev   bdevnodev   procnodev   sockfsnodev   binfmt_miscnodev   usbfsnodev   usbdevfsnodev   futexfsnodev   tmpfsnodev   pipefsnodev   eventpollfsnodev   devptsext2nodev   ramfsnodev   hugetlbfsiso9660nodev   mqueueext3nodev   rpc_pipefsnodev   autofs
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 the file systems listed here when one is not specified as an argument.

E.2.10. /proc/interrupts

This file records the number of interrupts per IRQ on the x86 architecture. A standard /proc/interrupts looks similar to the following:
  CPU0  0:   80448940  XT-PIC  timer  1: 174412  XT-PIC  keyboard  2:  0  XT-PIC  cascade  8:  1  XT-PIC  rtc 10: 410964  XT-PIC  eth0 12:  60330  XT-PIC  PS/2 Mouse 14: 1314121  XT-PIC  ide0 15: 5195422  XT-PIC  ide1NMI:  0ERR:  0
For a multi-processor machine, this file may look slightly different:
   CPU0   CPU1  0: 1366814704  0  XT-PIC  timer  1: 128 340 IO-APIC-edge  keyboard  2:  0  0  XT-PIC  cascade  8:  0  1 IO-APIC-edge  rtc 12:   5323   5793 IO-APIC-edge  PS/2 Mouse 13:  1  0  XT-PIC  fpu 16:   11184294   15940594   IO-APIC-level  Intel EtherExpress Pro 10/100 Ethernet 20: 8450043   11120093   IO-APIC-level  megaraid 30:  10432  10722   IO-APIC-level  aic7xxx 31: 23 22   IO-APIC-level  aic7xxxNMI:  0ERR:  0
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 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 is high until the signal is low again.

E.2.11. /proc/iomem

This file shows you the current map of the system's memory for each physical device:
00000000-0009fbff : System RAM0009fc00-0009ffff : reserved000a0000-000bffff : Video RAM area000c0000-000c7fff : Video ROM000f0000-000fffff : System ROM00100000-07ffffff : System RAM00100000-00291ba8 : Kernel code00291ba9-002e09cb : Kernel datae0000000-e3ffffff : VIA Technologies, Inc. VT82C597 [Apollo VP3] e4000000-e7ffffff : PCI Bus #01e4000000-e4003fff : Matrox Graphics, Inc. MGA G200 AGPe5000000-e57fffff : Matrox Graphics, Inc. MGA G200 AGPe8000000-e8ffffff : PCI Bus #01e8000000-e8ffffff : Matrox Graphics, Inc. MGA G200 AGPea000000-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 and 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.

E.2.12. /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. The following is a partial listing:
0000-001f : dma10020-003f : pic10040-005f : timer0060-006f : keyboard0070-007f : rtc0080-008f : dma page reg00a0-00bf : pic200c0-00df : dma200f0-00ff : fpu0170-0177 : ide101f0-01f7 : ide002f8-02ff : serial(auto)0376-0376 : ide103c0-03df : vga+03f6-03f6 : ide003f8-03ff : serial(auto)0cf8-0cff : PCI conf1d000-dfff : PCI Bus #01e000-e00f : VIA Technologies, Inc. Bus Master IDEe000-e007 : ide0e008-e00f : ide1e800-e87f : Digital Equipment Corporation DECchip 21140 [FasterNet]e800-e87f : tulip
The first column gives the I/O port address range reserved for the device listed in the second column.

E.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 4 KB.
The contents of this file are designed to be examined by a debugger, such as gdb, and is not human readable.

Do not attempt to view the content of /proc/kcore

Do not view the /proc/kcore virtual file. The contents of the file scramble text output on the terminal. If this file is accidentally viewed, press Ctrl+C to stop the process and then type reset to bring back the command line prompt.

E.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 or /bin/dmesg.

E.2.15. /proc/loadavg

This file provides a look at the load average in regard to both the CPU and IO over time, as well as additional data used by uptime and other commands. A sample /proc/loadavg file looks similar to the following:
0.20 0.18 0.12 1/80 11206
The first three columns measure CPU and IO utilization of the last one, five, and 15 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.
In addition, load average also refers to the number of processes ready to run (i.e. in the run queue, waiting for a CPU share.

E.2.16. /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 the following:
1: POSIX  ADVISORY  WRITE 3568 fd:00:2531452 0 EOF2: FLOCK  ADVISORY  WRITE 3517 fd:00:2531448 0 EOF3: POSIX  ADVISORY  WRITE 3452 fd:00:2531442 0 EOF4: POSIX  ADVISORY  WRITE 3443 fd:00:2531440 0 EOF5: POSIX  ADVISORY  WRITE 3326 fd:00:2531430 0 EOF6: POSIX  ADVISORY  WRITE 3175 fd:00:2531425 0 EOF7: POSIX  ADVISORY  WRITE 3056 fd:00:2548663 0 EOF
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 and eighth column shows the start and end of the file's locked region.

E.2.17. /proc/mdstat

This file contains the current information for multiple-disk, RAID configurations. If the system does not contain such a configuration, then /proc/mdstat looks similar to the following:
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 find 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:
Personalities : [linear] [raid1] read_ahead 1024 sectorsmd0: active raid1 sda2[1] sdb2[0] 9940 blocks [2/2] [UU] resync=1% finish=12.3min algorithm 2 [3/3] [UUU]unused devices: <none>

E.2.18. /proc/meminfo

This is one of the more commonly used files in the /proc/ directory, as it reports a large amount of valuable information about the systems RAM usage.
The following sample /proc/meminfo virtual file is from a system with 256 MB of RAM and 512 MB of swap space:
MemTotal:   255908 kBMemFree: 69936 kBBuffers: 15812 kBCached: 115124 kBSwapCached:  0 kBActive:  92700 kBInactive: 63792 kBHighTotal:   0 kBHighFree: 0 kBLowTotal:   255908 kBLowFree: 69936 kBSwapTotal:  524280 kBSwapFree:   524280 kBDirty:   4 kBWriteback:   0 kBMapped:  42236 kBSlab: 25912 kBCommitted_AS:   118680 kBPageTables:   1236 kBVmallocTotal:  3874808 kBVmallocUsed:  1416 kBVmallocChunk:  3872908 kBHugePages_Total: 0HugePages_Free:  0Hugepagesize: 4096 kB
Much of the information here is used by the free, top, and ps commands. In fact, the output of the free command is similar in appearance to the contents and structure of /proc/meminfo. But by looking directly at /proc/meminfo, more details are revealed:
  • MemTotal - Total amount of physical RAM, in kilobytes.
  • MemFree - The amount of physical RAM, in kilobytes, left unused by the system.
  • Buffers - The amount of physical RAM, in kilobytes, used for file buffers.
  • Cached - The amount of physical RAM, in kilobytes, used as cache memory.
  • SwapCached - The amount of swap, in kilobytes, used as cache memory.
  • Active - The total amount of buffer or page cache memory, in kilobytes, that is in active use. This is memory that has been recently used and is usually not reclaimed for other purposes.
  • Inactive - The total amount of buffer or page cache memory, in kilobytes, that are free and available. This is memory that has not been recently used and can be reclaimed for other purposes.
  • 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.
  • Dirty - The total amount of memory, in kilobytes, waiting to be written back to the disk.
  • Writeback - The total amount of memory, in kilobytes, actively being written back to the disk.
  • Mapped - The total amount of memory, in kilobytes, which have been used to map devices, files, or libraries using the mmap command.
  • Slab - The total amount of memory, in kilobytes, used by the kernel to cache data structures for its own use.
  • Committed_AS - The total amount of memory, in kilobytes, estimated to complete the workload. This value represents the worst case scenario value, and also includes swap memory.
  • PageTables - The total amount of memory, in kilobytes, dedicated to the lowest page table level.
  • VMallocTotal - The total amount of memory, in kilobytes, of total allocated virtual address space.
  • VMallocUsed - The total amount of memory, in kilobytes, of used virtual address space.
  • VMallocChunk - The largest contiguous block of memory, in kilobytes, of available virtual address space.
  • HugePages_Total - The total number of hugepages for the system. The number is derived by dividing Hugepagesize by the megabytes set aside for hugepages specified in /proc/sys/vm/hugetlb_pool. This statistic only appears on the x86, Itanium, and AMD64 architectures.
  • HugePages_Free - The total number of hugepages available for the system. This statistic only appears on the x86, Itanium, and AMD64 architectures.
  • Hugepagesize - The size for each hugepages unit in kilobytes. By default, the value is 4096 KB on uniprocessor kernels for 32 bit architectures. For SMP, hugemem kernels, and AMD64, the default is 2048 KB. For Itanium architectures, the default is 262144 KB. This statistic only appears on the x86, Itanium, and AMD64 architectures.

E.2.19. /proc/misc

This file lists miscellaneous drivers registered on the miscellaneous major device, which is device number 10:
63 device-mapper 175 agpgart 135 rtc 134 apm_bios
The first column is the minor number of each device, while the second column shows the driver in use.

E.2.20. /proc/modules

This file displays a list of all modules loaded into the kernel. Its contents 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 content of /proc/modules

This example has been reformatted into a readable format. Most of this information can also be viewed via the /sbin/lsmod command.
nfs  170109  0 -  Live 0x129b0000lockd 51593   1 nfs,   Live 0x128b0000nls_utf8 1729 0 -  Live 0x12830000vfat 12097   0 -  Live 0x12823000fat  38881   1 vfat,  Live 0x1287b000autofs4  20293   2 -  Live 0x1284f000sunrpc   140453  3 nfs,lockd, Live 0x129540003c59x 33257   0 -  Live 0x12871000uhci_hcd 28377   0 -  Live 0x12869000md5  3777 1 -  Live 0x1282c000ipv6 211845 16 -  Live 0x128de000ext3 92585   2 -  Live 0x12886000jbd  65625   1 ext3,  Live 0x12857000dm_mod   46677   3 -  Live 0x12833000
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 how many instances of the module are currently loaded. A value of zero represents an unloaded module.
The fourth column states if the module depends upon another module to be present in order to function, and lists those other modules.
The fifth column lists what load state the module is in: Live, Loading, or Unloading are the only possible values.
The sixth column lists the current kernel memory offset for the loaded module. This information can be useful for debugging purposes, or for profiling tools such as oprofile.

E.2.21. /proc/mounts

This file provides a list of all mounts in use by the system:
rootfs / rootfs rw 0 0/proc /proc proc rw,nodiratime 0 0 none/dev ramfs rw 0 0/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0none /dev ramfs rw 0 0/proc /proc proc rw,nodiratime 0 0/sys /sys sysfs rw 0 0none /dev/pts devpts rw 0 0usbdevfs /proc/bus/usb usbdevfs rw 0 0/dev/hda1 /boot ext3 rw 0 0none /dev/shm tmpfs rw 0 0none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
The output found here is similar to the contents of /etc/mtab, except that /proc/mounts is more up-to-date.
The first column specifies the device that is mounted, the second column reveals the mount point, 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.

E.2.22. /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 the following:
reg00: base=0x00000000 (   0MB), size= 256MB: write-back, count=1reg01: base=0xe8000000 (3712MB), size=  32MB: write-combining, count=1
MTRRs are used with the Intel P6 family of processors (Pentium II and higher) and 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 more than 150%.
Most of the time, this value is properly configured by default. More information on manually configuring this file can be found locally at the following location:
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/<arch>/mtrr.txt

E.2.23. /proc/partitions

This file contains partition block allocation information. A sampling of this file from a basic system looks similar to the following:
major minor  #blocks  name  3 0   19531250 hda  3 1 104391 hda1  3 2   19422585 hda2253 0   22708224 dm-0253 1 524288 dm-1
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 the /proc/partitions, (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.

E.2.24. /proc/slabinfo

This file gives full 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.
Instead of parsing the highly verbose /proc/slabinfo file manually, the /usr/bin/slabtop program displays kernel slab cache information in real time. This program allows for custom configurations, including column sorting and screen refreshing.
A sample screen shot of /usr/bin/slabtop usually looks like the following example:
Active / Total Objects (% used) : 133629 / 147300 (90.7%)Active / Total Slabs (% used)  : 11492 / 11493 (100.0%)Active / Total Caches (% used) : 77 / 121 (63.6%)Active / Total Size (% used)   : 41739.83K / 44081.89K (94.7%)Minimum / Average / Maximum Object : 0.01K / 0.30K / 128.00KOBJS   ACTIVE USE  OBJ   SIZE SLABS OBJ/SLAB CACHE SIZE NAME44814  43159  96% 0.62K   7469  6 29876K ext3_inode_cache36900  34614  93% 0.05K 492 75  1968K buffer_head35213  33124  94% 0.16K   1531 23  6124K dentry_cache7364   6463  87% 0.27K 526  14  2104K radix_tree_node2585   1781  68% 0.08K 55  47   220K vm_area_struct2263   2116  93% 0.12K 73  31   292K size-1281904   1125  59% 0.03K 16  119 64K size-321666 768  46% 0.03K 14  119 56K anon_vma1512   1482  98% 0.44K 168   9   672K inode_cache1464   1040  71% 0.06K 24  61 96K size-641320 820  62% 0.19K 66  20   264K filp678 587  86% 0.02K  3  226 12K dm_io678 587  86% 0.02K  3  226 12K dm_tio576 574  99% 0.47K 72 8   288K proc_inode_cache528 514  97% 0.50K 66 8   264K size-512492 372  75% 0.09K 12   41 48K bio465 314  67% 0.25K 31   15   124K size-256452 331  73% 0.02K  2  226 8K biovec-1420 420 100% 0.19K 21   20 84K skbuff_head_cache305 256  83% 0.06K  5   61 20K biovec-4290  4   1% 0.01K  1  290 4K revoke_table264 264 100% 4.00K 264 1  1056K size-4096260 256  98% 0.19K 13   20 52K biovec-16260 256  98% 0.75K 52 5   208K biovec-64
Some of the more commonly used statistics in /proc/slabinfo that are included into /usr/bin/slabtop include:
  • OBJS - The total number of objects (memory blocks), including those in use (allocated), and some spares not in use.
  • ACTIVE - The number of objects (memory blocks) that are in use (allocated).
  • USE - Percentage of total objects that are active. ((ACTIVE/OBJS)(100))
  • OBJ SIZE - The size of the objects.
  • SLABS - The total number of slabs.
  • OBJ/SLAB - The number of objects that fit into a slab.
  • CACHE SIZE - The cache size of the slab.
  • NAME - The name of the slab.
For more information on the /usr/bin/slabtop program, refer to the slabtop man page.

E.2.25. /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, usually begins like the following example:
cpu  259246 7001 60190 34250993 137517 772 0cpu0 259246 7001 60190 34250993 137517 772 0intr 354133732 347209999 2272 0 4 4 0 0 3 1 1249247 0 0 80143 0 422626 5169433ctxt 12547729btime 1093631447processes 130523procs_running 1procs_blocked 0preempt 5651840cpu  209841 1554 21720 118519346 72939 154 27168cpu0 42536 798 4841 14790880 14778 124 3117cpu1 24184 569 3875 14794524 30209 29 3130cpu2 28616 11 2182 14818198 4020 1 3493cpu3 35350 6 2942 14811519 3045 0 3659cpu4 18209 135 2263 14820076 12465 0 3373cpu5 20795 35 1866 14825701 4508 0 3615cpu6 21607 0 2201 14827053 2325 0 3334cpu7 18544 0 1550 14831395 1589 0 3447intr 15239682 14857833 6 0 6 6 0 5 0 1 0 0 0 29 0 2 0 0 0 0 0 0 0 94982 0 286812ctxt 4209609btime 1078711415processes 21905procs_running 1procs_blocked 0
Some of the more commonly used statistics include:
  • cpu - Measures the number of jiffies (1/100 of a second for x86 systems) that the system has been in user mode, user mode with low priority (nice), system mode, idle task, I/O wait, IRQ (hardirq), and softirq respectively. The IRQ (hardirq) is the direct response to a hardware event. The IRQ takes minimal work for queuing the "heavy" work up for the softirq to execute. The softirq runs at a lower priority than the IRQ and therefore may be interrupted more frequently. The total for all CPUs is given at the top, while each individual CPU is listed below with its own statistics. The following example is a 4-way Intel Pentium Xeon configuration with multi-threading enabled, therefore showing four physical processors and four virtual processors totaling eight processors.
  • 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.

E.2.26. /proc/swaps

This file measures swap space and its utilization. For a system with only one swap partition, the output of /proc/swaps may look similar to the following:
Filename  Type Size Used Priority/dev/mapper/VolGroup00-LogVol01   partition   524280   0   -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 space 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.

E.2.27. /proc/sysrq-trigger

Using the echo command to write to this file, a remote root user can execute most System Request Key commands remotely as if at the local terminal. To echo values to this file, the /proc/sys/kernel/sysrq must be set to a value other than 0. For more information about the System Request Key, refer to Section E.3.9.3, "/proc/sys/kernel/".
Although it is possible to write to this file, it cannot be read, even by the root user.

E.2.28. /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 value represents the total number of seconds the system has been up. The second value is the sum of how much time each core has spent idle, in seconds. Consequently, the second value may be greater than the overall system uptime on systems with multiple cores.

E.2.29. /proc/version

This file specifies the version of the Linux kernel, the version of gcc used to compile the kernel, and the time of kernel compilation. It also contains the kernel compiler's user name (in parentheses).
Linux version 2.6.8-1.523 ([email protected]) (gcc version 3.4.1 20040714 \  (Red Hat Enterprise Linux 3.4.1-7)) #1 Mon Aug 16 13:27:03 EDT 2004
This information is used for a variety of purposes, including the version data presented when a user logs in.

E.3. Directories within /proc/

Common groups of information concerning the kernel are grouped into directories and subdirectories within the /proc/ directory.

E.3.1. Process Directories

Every /proc/ directory contains a number of directories with numerical names. A listing of them may be similar to the following:
dr-xr-xr-x 3 root root 0 Feb 13 01:28 1dr-xr-xr-x 3 root root 0 Feb 13 01:28 1010dr-xr-xr-x 3 xfs  xfs 0 Feb 13 01:28 1087dr-xr-xr-x 3 daemon   daemon  0 Feb 13 01:28 1123dr-xr-xr-x 3 root root 0 Feb 13 01:28 11307dr-xr-xr-x 3 apache   apache  0 Feb 13 01:28 13660dr-xr-xr-x 3 rpc  rpc 0 Feb 13 01:28 637dr-xr-xr-x 3 rpcuser  rpcuser 0 Feb 13 01:28 666
These directories are called process directories, as they are named after a program's process ID and contain information specific to that process. The owner and group of each process directory is set to the user running the process. When the process is terminated, its /proc/ process directory vanishes.
Each process directory contains the following files:
  • cmdline - Contains the command issued when starting the process.
  • cwd - A symbolic link to the current working directory for the process.
  • environ - A list of the environment variables for the process. The environment variable is given in all upper-case characters, and the value is in lower-case characters.
  • exe - A symbolic link to the executable of this process.
  • fd - A directory containing all of the file descriptors for a particular process. These are given in numbered links:
    total 0lrwx------ 1 root root   64 May  8 11:31 0 -> /dev/nulllrwx------ 1 root root   64 May  8 11:31 1 -> /dev/nulllrwx------ 1 root root   64 May  8 11:31 2 -> /dev/nulllrwx------ 1 root root   64 May  8 11:31 3 -> /dev/ptmxlrwx------ 1 root root   64 May  8 11:31 4 -> socket:[7774817]lrwx------ 1 root root   64 May  8 11:31 5 -> /dev/ptmxlrwx------ 1 root root   64 May  8 11:31 6 -> socket:[7774829]lrwx------ 1 root root   64 May  8 11:31 7 -> /dev/ptmx
  • maps - A list of memory maps to the various executables and library files associated with this process. This file can be rather long, depending upon the complexity of the process, but sample output from the sshd process begins like the following:
    08048000-08086000 r-xp 00000000 03:03 391479 /usr/sbin/sshd08086000-08088000 rw-p 0003e000 03:03 391479/usr/sbin/sshd08088000-08095000 rwxp 00000000 00:00 040000000-40013000 r-xp 0000000 03:03 293205/lib/ld-2.2.5.so40013000-40014000 rw-p 00013000 03:03 293205/lib/ld-2.2.5.so40031000-40038000 r-xp 00000000 03:03 293282/lib/libpam.so.0.7540038000-40039000 rw-p 00006000 03:03 293282/lib/libpam.so.0.7540039000-4003a000 rw-p 00000000 00:00 04003a000-4003c000 r-xp 00000000 03:03 293218/lib/libdl-2.2.5.so4003c000-4003d000 rw-p 00001000 03:03 293218/lib/libdl-2.2.5.so
  • mem - The memory held by the process. This file cannot be read by the user.
  • root - A link to the root directory of the process.
  • stat - The status of the process.
  • statm - The status of the memory in use by the process. Below is a sample /proc/statm file:
    263 210 210 5 0 205 0
    The seven columns relate to different memory statistics for the process. From left to right, they report the following aspects of the memory used:
    1. Total program size, in kilobytes.
    2. Size of memory portions, in kilobytes.
    3. Number of pages that are shared.
    4. Number of pages that are code.
    5. Number of pages of data/stack.
    6. Number of library pages.
    7. Number of dirty pages.
  • status - The status of the process in a more readable form than stat or statm. Sample output for sshd looks similar to the following:
    Name:sshdState:S (sleeping)Tgid:797Pid:797PPid:1TracerPid:0Uid:0000Gid:0000FDSize:32Groups:VmSize: 3072 kBVmLck:   0 kBVmRSS: 840 kBVmData: 104 kBVmStk:  12 kBVmExe: 300 kBVmLib: 2528 kBSigPnd:0000000000000000SigBlk:0000000000000000SigIgn:8000000000001000SigCgt:0000000000014005CapInh:0000000000000000CapPrm:00000000fffffeffCapEff:00000000fffffeff
    The information in this output includes the process name and ID, the state (such as S (sleeping) or R (running)), user/group ID running the process, and detailed data regarding memory usage.

E.3.1.1. /proc/self/

The /proc/self/ directory is a link to the currently running process. This allows a process to look at itself without having to know its process ID.
Within a shell environment, a listing of the /proc/self/ directory produces the same contents as listing the process directory for that process.

E.3.2. /proc/bus/

This directory contains information specific to the various buses available on the system. For example, on a standard system containing PCI and USB buses, current data on each of these buses is available within a subdirectory within /proc/bus/ by the same name, such as /proc/bus/pci/.
The subdirectories and files available within /proc/bus/ vary depending on the devices connected to the system. However, each bus type has at least one directory. Within these bus directories are normally at least one subdirectory with a numerical name, such as 001, which contain binary files.
For example, the /proc/bus/usb/ subdirectory contains files that track the various devices on any USB buses, as well as the drivers required for them. The following is a sample listing of a /proc/bus/usb/ directory:
total 0 dr-xr-xr-x 1 root root 0 May  3 16:25 001-r--r--r-- 1 root root 0 May  3 16:25 devices-r--r--r-- 1 root root 0 May  3 16:25 drivers
The /proc/bus/usb/001/ directory contains all devices on the first USB bus and the devices file identifies the USB root hub on the motherboard.
The following is a example of a /proc/bus/usb/devices file:
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1P:  Vendor=0000 ProdID=0000 Rev= 0.00S:  Product=USB UHCI Root HubS:  SerialNumber=d400C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mAI:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hubE:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

E.3.3. /proc/bus/pci

Later versions of the 2.6 Linux kernel have obsoleted the /proc/pci directory in favor of the /proc/bus/pci directory. Although you can get a list of all PCI devices present on the system using the command cat /proc/bus/pci/devices, the output is difficult to read and interpret.
For a human-readable list of PCI devices, run the following command:
~]# /sbin/lspci -vb00:00.0 Host bridge: Intel Corporation 82X38/X48 Express DRAM Controller Subsystem: Hewlett-Packard Company Device 1308 Flags: bus master, fast devsel, latency 0 Capabilities: [e0] Vendor Specific Information <?> Kernel driver in use: x38_edac Kernel modules: x38_edac00:01.0 PCI bridge: Intel Corporation 82X38/X48 Express Host-Primary PCI Express Bridge (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00001000-00001fff Memory behind bridge: f0000000-f2ffffff Capabilities: [88] Subsystem: Hewlett-Packard Company Device 1308 Capabilities: [80] Power Management version 3 Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit- Capabilities: [a0] Express Root Port (Slot+), MSI 00 Capabilities: [100] Virtual Channel <?> Capabilities: [140] Root Complex Link <?> Kernel driver in use: pcieport Kernel modules: shpchp00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02) (prog-if 00 [UHCI]) Subsystem: Hewlett-Packard Company Device 1308 Flags: bus master, medium devsel, latency 0, IRQ 5 I/O ports at 2100 Capabilities: [50] PCI Advanced Features Kernel driver in use: uhci_hcd[output truncated]
The output is a sorted list of all IRQ numbers and addresses as seen by the cards on the PCI bus instead of as seen by the kernel. Beyond providing the name and version of the device, this list also gives detailed IRQ information so an administrator can quickly look for conflicts.

E.3.4. /proc/driver/

This directory contains information for specific drivers in use by the kernel.
A common file found here is rtc which provides output from the driver for the system's Real Time Clock (RTC), the device that keeps the time while the system is switched off. Sample output from /proc/driver/rtc looks like the following:
rtc_time : 16:21:00rtc_date : 2004-08-31rtc_epoch   : 1900alarm   : 21:16:27DST_enable  : noBCD : yes24hr : yessquare_wave : noalarm_IRQ   : noupdate_IRQ  : noperiodic_IRQ : noperiodic_freq   : 1024batt_status : okay
For more information about the RTC, refer to the following installed documentation:
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/rtc.txt.

E.3.5. /proc/fs

This directory shows which file systems are exported. If running an NFS server, typing cat /proc/fs/nfsd/exports displays the file systems being shared and the permissions granted for those file systems. For more on file system sharing with NFS, refer to the Network File System (NFS) chapter of the Storage Administration Guide.

E.3.6. /proc/irq/

This directory is used to set IRQ to CPU affinity, which allows the system to connect a particular IRQ to only one CPU. Alternatively, it can exclude a CPU from handling any IRQs.
Each IRQ has its own directory, allowing for the individual configuration of each IRQ. The /proc/irq/prof_cpu_mask file is a bitmask that contains the default values for the smp_affinity file in the IRQ directory. The values in smp_affinity specify which CPUs handle that particular IRQ.
For more information about the /proc/irq/ directory, refer to the following installed documentation:
/usr/share/doc/kernel-doc-kernel_version/Documentation/filesystems/proc.txt

E.3.7. /proc/net/

This directory provides a comprehensive look at various networking parameters and statistics. Each directory and virtual file within this directory describes aspects of the system's network configuration. Below is a partial list of the /proc/net/ directory:
  • arp - Lists the kernel's ARP table. This file is particularly useful for connecting a hardware address to an IP address on a system.
  • atm/ directory - The files within this directory contain Asynchronous Transfer Mode (ATM) settings and statistics. This directory is primarily used with ATM networking and ADSL cards.
  • dev - Lists the various network devices configured on the system, complete with transmit and receive statistics. This file displays the number of bytes each interface has sent and received, the number of packets inbound and outbound, the number of errors seen, the number of packets dropped, and more.
  • dev_mcast - Lists Layer2 multicast groups on which each device is listening.
  • igmp - Lists the IP multicast addresses which this system joined.
  • ip_conntrack - Lists tracked network connections for machines that are forwarding IP connections.
  • ip_tables_names - Lists the types of iptables in use. This file is only present if iptables is active on the system and contains one or more of the following values: filter, mangle, or nat.
  • ip_mr_cache - Lists the multicast routing cache.
  • ip_mr_vif - Lists multicast virtual interfaces.
  • netstat - Contains a broad yet detailed collection of networking statistics, including TCP timeouts, SYN cookies sent and received, and much more.
  • psched - Lists global packet scheduler parameters.
  • raw - Lists raw device statistics.
  • route - Lists the kernel's routing table.
  • rt_cache - Contains the current routing cache.
  • snmp - List of Simple Network Management Protocol (SNMP) data for various networking protocols in use.
  • sockstat - Provides socket statistics.
  • tcp - Contains detailed TCP socket information.
  • tr_rif - Lists the token ring RIF routing table.
  • udp - Contains detailed UDP socket information.
  • unix - Lists UNIX domain sockets currently in use.
  • wireless - Lists wireless interface data.

E.3.8. /proc/scsi/

The primary file in this directory is /proc/scsi/scsi, which contains a list of every recognized SCSI device. From this listing, the type of device, as well as the model name, vendor, SCSI channel and ID data is available.
For example, if a system contains a SCSI CD-ROM, a tape drive, a hard drive, and a RAID controller, this file looks similar to the following:
Attached devices:Host: scsi1Channel: 00Id: 05Lun: 00Vendor: NECModel: CD-ROM DRIVE:466Rev: 1.06Type:   CD-ROMANSI SCSI revision: 02Host: scsi1Channel: 00Id: 06Lun: 00Vendor: ARCHIVEModel: Python 04106-XXXRev: 7350Type:   Sequential-AccessANSI SCSI revision: 02Host: scsi2Channel: 00Id: 06Lun: 00Vendor: DELLModel: 1x6 U2W SCSI BPRev: 5.35Type:   ProcessorANSI SCSI revision: 02Host: scsi2Channel: 02Id: 00Lun: 00Vendor: MegaRAIDModel: LD0 RAID5 34556RRev: 1.01Type:   Direct-AccessANSI SCSI revision: 02
Each SCSI driver used by the system has its own directory within /proc/scsi/, which contains files specific to each SCSI controller using that driver. From the previous example, aic7xxx/ and megaraid/ directories are present, since two drivers are in use. The files in each of the directories typically contain an I/O address range, IRQ information, and statistics for the SCSI controller using that driver. Each controller can report a different type and amount of information. The Adaptec AIC-7880 Ultra SCSI host adapter's file in this example system produces the following output:
Adaptec AIC7xxx driver version: 5.1.20/3.2.4Compile Options:TCQ Enabled By Default : DisabledAIC7XXX_PROC_STATS : EnabledAIC7XXX_RESET_DELAY : 5Adapter Configuration:SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapterUltra Narrow Controller PCI MMAPedI/O Base: 0xfcffe000Adapter SEEPROM Config: SEEPROM found and used.Adaptec SCSI BIOS: EnabledIRQ: 30SCBs: Active 0, Max Active 1, Allocated 15, HW 16, Page 255Interrupts: 33726BIOS Control Word: 0x18a6Adapter Control Word: 0x1c5fExtended Translation: EnabledDisconnect Enable Flags: 0x00ffUltra Enable Flags: 0x0020Tag Queue Enable Flags: 0x0000Ordered Queue Tag Flags: 0x0000Default Tag Queue Depth: 8Tagged Queue By Device array for aic7xxxhost instance 1:   {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}Actual queue depth per device for aic7xxx host instance 1:   {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}Statistics:(scsi1:0:5:0) Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)Total transfers 0 (0 reads and 0 writes)< 2K  2K+ 4K+ 8K+ 16K+ 32K+ 64K+   128K+Reads: 0   0   0   0   0   0   0   0Writes:   0   0   0   0   0   0   0   0(scsi1:0:6:0) Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)Total transfers 132 (0 reads and 132 writes)< 2K  2K+ 4K+ 8K+ 16K+ 32K+ 64K+   128K+Reads: 0   0   0   0   0   0   0   0Writes:   0   0   0   1 131   0   0   0
This output reveals the transfer speed to the SCSI devices connected to the controller based on channel ID, as well as detailed statistics concerning the amount and sizes of files read or written by that device. For example, this controller is communicating with the CD-ROM at 20 megabytes per second, while the tape drive is only communicating at 10 megabytes per second.

E.3.9. /proc/sys/

The /proc/sys/ directory is different from others in /proc/ because it not only provides information about the system but also allows the system administrator to immediately enable and disable kernel features.

Be careful when changing the content of /proc/sys/

Use caution when changing settings on a production system using the various files in the /proc/sys/ directory. Changing the wrong setting may render the kernel unstable, requiring a system reboot.
For this reason, be sure the options are valid for that file before attempting to change any value in /proc/sys/.
A good way to determine if a particular file can be configured, or if it is only designed to provide information, is to list it with the -l option at the shell prompt. If the file is writable, it may be used to configure the kernel. For example, a partial listing of /proc/sys/fs looks like the following:
-r--r--r-- 1 root root 0 May 10 16:14 dentry-state-rw-r--r-- 1 root root 0 May 10 16:14 dir-notify-enable-rw-r--r-- 1 root root 0 May 10 16:14 file-max-r--r--r-- 1 root root 0 May 10 16:14 file-nr
In this listing, the files dir-notify-enable and file-max can be written to and, therefore, can be used to configure the kernel. The other files only provide feedback on current settings.
Changing a value within a /proc/sys/ file is done by echoing the new value into the file. For example, to enable the System Request Key on a running kernel, type the command:
echo 1 > /proc/sys/kernel/sysrq
This changes the value for sysrq from 0 (off) to 1 (on).
A few /proc/sys/ configuration files contain more than one value. To correctly send new values to them, place a space character between each value passed with the echo command, such as is done in this example:
echo 4 2 45 > /proc/sys/kernel/acct

Changes made using the echo command are not persistent

Any configuration changes made using the echo command disappear when the system is restarted. To make configuration changes take effect after the system is rebooted, refer to Section E.4, "Using the sysctl Command".
The /proc/sys/ directory contains several subdirectories controlling different aspects of a running kernel.

E.3.9.1. /proc/sys/dev/

This directory provides parameters for particular devices on the system. Most systems have at least two directories, cdrom/ and raid/. Customized kernels can have other directories, such as parport/, which provides the ability to share one parallel port between multiple device drivers.
The cdrom/ directory contains a file called info, which reveals a number of important CD-ROM parameters:
CD-ROM information, Id: cdrom.c 3.20 2003/12/17drive name: hdcdrive speed: 48drive # of slots:   1Can close tray: 1Can open tray:  1Can lock tray:  1Can change speed:   1Can select disk: 0Can read multisession:  1Can read MCN:   1Reports media changed:  1Can play audio: 1Can write CD-R: 0Can write CD-RW: 0Can read DVD:   0Can write DVD-R: 0Can write DVD-RAM:  0Can read MRW:   0Can write MRW:  0Can write RAM:  0
This file can be quickly scanned to discover the qualities of an unknown CD-ROM. If multiple CD-ROMs are available on a system, each device is given its own column of information.
Various files in /proc/sys/dev/cdrom, such as autoclose and checkmedia, can be used to control the system's CD-ROM. Use the echo command to enable or disable these features.
If RAID support is compiled into the kernel, a /proc/sys/dev/raid/ directory becomes available with at least two files in it: speed_limit_min and speed_limit_max. These settings determine the acceleration of RAID devices for I/O intensive tasks, such as resyncing the disks.

E.3.9.2. /proc/sys/fs/

This directory contains an array of options and information concerning various aspects of the file system, including quota, file handle, inode, and dentry information.
The binfmt_misc/ directory is used to provide kernel support for miscellaneous binary formats.
The important files in /proc/sys/fs/ include:
  • dentry-state - Provides the status of the directory cache. The file looks similar to the following:
    574115293945000
    The first number reveals the total number of directory cache entries, while the second number displays the number of unused entries. The third number tells the number of seconds between when a directory has been freed and when it can be reclaimed, and the fourth measures the pages currently requested by the system. The last two numbers are not used and display only zeros.
  • file-max - Lists the maximum number of file handles that the kernel allocates. Raising the value in this file can resolve errors caused by a lack of available file handles.
  • file-nr - Lists the number of allocated file handles, used file handles, and the maximum number of file handles.
  • overflowgid and overflowuid - Defines the fixed group ID and user ID, respectively, for use with file systems that only support 16-bit group and user IDs.

E.3.9.3. /proc/sys/kernel/

This directory contains a variety of different configuration files that directly affect the operation of the kernel. Some of the most important files include:
  • acct - Controls the suspension of process accounting based on the percentage of free space available on the file system containing the log. By default, the file looks like the following:
    4230
    The first value dictates the percentage of free space required for logging to resume, while the second value sets the threshold percentage of free space when logging is suspended. The third value sets the interval, in seconds, that the kernel polls the file system to see if logging should be suspended or resumed.
  • ctrl-alt-del - Controls whether Ctrl+Alt+Delete gracefully restarts the computer using init (0) or forces an immediate reboot without syncing the dirty buffers to disk (1).
  • domainname - Configures the system domain name, such as example.com.
  • exec-shield - Configures the Exec Shield feature of the kernel. Exec Shield provides protection against certain types of buffer overflow attacks.
    There are two possible values for this virtual file:
    • 0 - Disables Exec Shield.
    • 1 - Enables Exec Shield. This is the default value.

    Using Exec Shield

    If a system is running security-sensitive applications that were started while Exec Shield was disabled, these applications must be restarted when Exec Shield is enabled in order for Exec Shield to take effect.
  • hostname - Configures the system hostname, such as www.example.com.
  • hotplug - Configures the utility to be used when a configuration change is detected by the system. This is primarily used with USB and Cardbus PCI. The default value of /sbin/hotplug should not be changed unless testing a new program to fulfill this role.
  • modprobe - Sets the location of the program used to load kernel modules. The default value is /sbin/modprobe which means kmod calls it to load the module when a kernel thread calls kmod.
  • msgmax - Sets the maximum size of any message sent from one process to another and is set to 8192 bytes by default. Be careful when raising this value, as queued messages between processes are stored in non-swappable kernel memory. Any increase in msgmax would increase RAM requirements for the system.
  • msgmnb - Sets the maximum number of bytes in a single message queue. The default is 16384.
  • msgmni - Sets the maximum number of message queue identifiers. The default is 4008.
  • osrelease - Lists the Linux kernel release number. This file can only be altered by changing the kernel source and recompiling.
  • ostype - Displays the type of operating system. By default, this file is set to Linux, and this value can only be changed by changing the kernel source and recompiling.
  • overflowgid and overflowuid - Defines the fixed group ID and user ID, respectively, for use with system calls on architectures that only support 16-bit group and user IDs.
  • panic - Defines the number of seconds the kernel postpones rebooting when the system experiences a kernel panic. By default, the value is set to 0, which disables automatic rebooting after a panic.
  • printk - This file controls a variety of settings related to printing or logging error messages. Each error message reported by the kernel has a loglevel associated with it that defines the importance of the message. The loglevel values break down in this order:
    • 0 - Kernel emergency. The system is unusable.
    • 1 - Kernel alert. Action must be taken immediately.
    • 2 - Condition of the kernel is considered critical.
    • 3 - General kernel error condition.
    • 4 - General kernel warning condition.
    • 5 - Kernel notice of a normal but significant condition.
    • 6 - Kernel informational message.
    • 7 - Kernel debug-level messages.
    Four values are found in the printk file:
    6 4 1 7
    Each of these values defines a different rule for dealing with error messages. The first value, called the console loglevel, defines the lowest priority of messages printed to the console. (Note that, the lower the priority, the higher the loglevel number.) The second value sets the default loglevel for messages without an explicit loglevel attached to them. The third value sets the lowest possible loglevel configuration for the console loglevel. The last value sets the default value for the console loglevel.
  • random/ directory - Lists a number of values related to generating random numbers for the kernel.
  • sem - Configures semaphore settings within the kernel. A semaphore is a System V IPC object that is used to control utilization of a particular process.
  • shmall - Sets the total amount of shared memory that can be used at one time on the system, in bytes. By default, this value is 2097152.
  • shmmax - Sets the largest shared memory segment size allowed by the kernel. By default, this value is 33554432. However, the kernel supports much larger values than this.
  • shmmni - Sets the maximum number of shared memory segments for the whole system. By default, this value is 4096.
  • sysrq - Activates the System Request Key, if this value is set to anything other than zero (0), the default.
    The System Request Key allows immediate input to the kernel through simple key combinations. For example, the System Request Key can be used to immediately shut down or restart a system, sync all mounted file systems, or dump important information to the console. To initiate a System Request Key, type Alt+SysRq+system request code. Replace system request code with one of the following system request codes:
    • r - Disables raw mode for the keyboard and sets it to XLATE (a limited keyboard mode which does not recognize modifiers such as Alt, Ctrl, or Shift for all keys).
    • k - Kills all processes active in a virtual console. Also called Secure Access Key (SAK), it is often used to verify that the login prompt is spawned from init and not a trojan copy designed to capture usernames and passwords.
    • b - Reboots the kernel without first unmounting file systems or syncing disks attached to the system.
    • c - Crashes the system without first unmounting file systems or syncing disks attached to the system.
    • o - Shuts off the system.
    • s - Attempts to sync disks attached to the system.
    • u - Attempts to unmount and remount all file systems as read-only.
    • p - Outputs all flags and registers to the console.
    • t - Outputs a list of processes to the console.
    • m - Outputs memory statistics to the console.
    • 0 through 9 - Sets the log level for the console.
    • e - Kills all processes except init using SIGTERM.
    • i - Kills all processes except init using SIGKILL.
    • l - Kills all processes using SIGKILL (including init). The system is unusable after issuing this System Request Key code.
    • h - Displays help text.
    This feature is most beneficial when using a development kernel or when experiencing system freezes.

    Be careful when enabling the System Request Key feature

    The System Request Key feature is considered a security risk because an unattended console provides an attacker with access to the system. For this reason, it is turned off by default.
    Refer to /usr/share/doc/kernel-doc-kernel_version/Documentation/sysrq.txt for more information about the System Request Key.
  • tainted - Indicates whether a non-GPL module is loaded.
    • 0 - No non-GPL modules are loaded.
    • 1 - At least one module without a GPL license (including modules with no license) is loaded.
    • 2 - At least one module was force-loaded with the command insmod -f.
  • threads-max - Sets the maximum number of threads to be used by the kernel, with a default value of 2048.
  • version - Displays the date and time the kernel was last compiled. The first field in this file, such as #3, relates to the number of times a kernel was built from the source base.

E.3.9.4. /proc/sys/net/

This directory contains subdirectories concerning various networking topics. Various configurations at the time of kernel compilation make different directories available here, such as ethernet/, ipv4/, ipx/, and ipv6/. By altering the files within these directories, system administrators are able to adjust the network configuration on a running system.
Given the wide variety of possible networking options available with Linux, only the most common /proc/sys/net/ directories are discussed.
The /proc/sys/net/core/ directory contains a variety of settings that control the interaction between the kernel and networking layers. The most important of these files are:
  • message_burst - Sets the amount of time in tenths of a second required to write a new warning message. This setting is used to mitigate Denial of Service (DoS) attacks. The default setting is 10.
  • message_cost - Sets a cost on every warning message. The higher the value of this file (default of 5), the more likely the warning message is ignored. This setting is used to mitigate DoS attacks.
    The idea of a DoS attack is to bombard the targeted system with requests that generate errors and fill up disk partitions with log files or require all of the system's resources to handle the error logging. The settings in message_burst and message_cost are designed to be modified based on the system's acceptable risk versus the need for comprehensive logging.
  • netdev_max_backlog - Sets the maximum number of packets allowed to queue when a particular interface receives packets faster than the kernel can process them. The default value for this file is 1000.
  • optmem_max - Configures the maximum ancillary buffer size allowed per socket.
  • rmem_default - Sets the receive socket buffer default size in bytes.
  • rmem_max - Sets the receive socket buffer maximum size in bytes.
  • wmem_default - Sets the send socket buffer default size in bytes.
  • wmem_max - Sets the send socket buffer maximum size in bytes.
The /proc/sys/net/ipv4/ directory contains additional networking settings. Many of these settings, used in conjunction with one another, are useful in preventing attacks on the system or when using the system to act as a router.

Be careful when changing these files

An erroneous change to these files may affect remote connectivity to the system.
The following is a list of some of the more important files within the /proc/sys/net/ipv4/ directory:
  • icmp_echo_ignore_all and icmp_echo_ignore_broadcasts - Allows the kernel to ignore ICMP ECHO packets from every host or only those originating from broadcast and multicast addresses, respectively. A value of 0 allows the kernel to respond, while a value of 1 ignores the packets.
  • ip_default_ttl - Sets the default Time To Live (TTL), which limits the number of hops a packet may make before reaching its destination. Increasing this value can diminish system performance.
  • ip_forward - Permits interfaces on the system to forward packets to one other. By default, this file is set to 0. Setting this file to 1 enables network packet forwarding.
  • ip_local_port_range - Specifies the range of ports to be used by TCP or UDP when a local port is needed. The first number is the lowest port to be used and the second number specifies the highest port. Any systems that expect to require more ports than the default 1024 to 4999 should use a range from 32768 to 61000.
  • tcp_syn_retries - Provides a limit on the number of times the system re-transmits a SYN packet when attempting to make a connection.
  • tcp_retries1 - Sets the number of permitted re-transmissions attempting to answer an incoming connection. Default of 3.
  • tcp_retries2 - Sets the number of permitted re-transmissions of TCP packets. Default of 15.
The file called
/usr/share/doc/kernel-doc-kernel_version/Documentation/networking/ip-sysctl.txt
contains a complete list of files and options available in the /proc/sys/net/ipv4/ directory.
A number of other directories exist within the /proc/sys/net/ipv4/ directory and each covers a different aspect of the network stack. The /proc/sys/net/ipv4/conf/ directory allows each system interface to be configured in different ways, including the use of default settings for unconfigured devices (in the /proc/sys/net/ipv4/conf/default/ subdirectory) and settings that override all special configurations (in the /proc/sys/net/ipv4/conf/all/ subdirectory).
The /proc/sys/net/ipv4/neigh/ directory contains settings for communicating with a host directly connected to the system (called a network neighbor) and also contains different settings for systems more than one hop away.
Routing over IPV4 also has its own directory, /proc/sys/net/ipv4/route/. Unlike conf/ and neigh/, the /proc/sys/net/ipv4/route/ directory contains specifications that apply to routing with any interfaces on the system. Many of these settings, such as max_size, max_delay, and min_delay, relate to controlling the size of the routing cache. To clear the routing cache, write any value to the flush file.
Additional information about these directories and the possible values for their configuration files can be found in:
/usr/share/doc/kernel-doc-kernel_version/Documentation/filesystems/proc.txt

E.3.9.5. /proc/sys/vm/

This directory facilitates the configuration of the Linux kernel's virtual memory (VM) subsystem. The kernel makes extensive and intelligent use of virtual memory, which is commonly referred to as swap space.
The following files are commonly found in the /proc/sys/vm/ directory:
  • block_dump - Configures block I/O debugging when enabled. All read/write and block dirtying operations done to files are logged accordingly. This can be useful if diagnosing disk spin up and spin downs for laptop battery conservation. All output when block_dump is enabled can be retrieved via dmesg. The default value is 0.

    Stopping the klogd daemon

    If block_dump is enabled at the same time as kernel debugging, it is prudent to stop the klogd daemon, as it generates erroneous disk activity caused by block_dump.
  • dirty_background_ratio - Starts background writeback of dirty data at this percentage of total memory, via a pdflush daemon. The default value is 10.
  • dirty_expire_centisecs - Defines when dirty in-memory data is old enough to be eligible for writeout. Data which has been dirty in-memory for longer than this interval is written out next time a pdflush daemon wakes up. The default value is 3000, expressed in hundredths of a second.
  • dirty_ratio - Starts active writeback of dirty data at this percentage of total memory for the generator of dirty data, via pdflush. The default value is 20.
  • dirty_writeback_centisecs - Defines the interval between pdflush daemon wakeups, which periodically writes dirty in-memory data out to disk. The default value is 500, expressed in hundredths of a second.
  • laptop_mode - Minimizes the number of times that a hard disk needs to spin up by keeping the disk spun down for as long as possible, therefore conserving battery power on laptops. This increases efficiency by combining all future I/O processes together, reducing the frequency of spin ups. The default value is 0, but is automatically enabled in case a battery on a laptop is used.
    This value is controlled automatically by the acpid daemon once a user is notified battery power is enabled. No user modifications or interactions are necessary if the laptop supports the ACPI (Advanced Configuration and Power Interface) specification.
    For more information, refer to the following installed documentation:
    /usr/share/doc/kernel-doc-kernel_version/Documentation/laptop-mode.txt
  • max_map_count - Configures the maximum number of memory map areas a process may have. In most cases, the default value of 65536 is appropriate.
  • min_free_kbytes - Forces the Linux VM (virtual memory manager) to keep a minimum number of kilobytes free. The VM uses this number to compute a pages_min value for each lowmem zone in the system. The default value is in respect to the total memory on the machine.
  • nr_hugepages - Indicates the current number of configured hugetlb pages in the kernel.
    For more information, refer to the following installed documentation:
    /usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt
  • nr_pdflush_threads - Indicates the number of pdflush daemons that are currently running. This file is read-only, and should not be changed by the user. Under heavy I/O loads, the default value of two is increased by the kernel.
  • overcommit_memory - Configures the conditions under which a large memory request is accepted or denied. The following three modes are available:
    • 0 - The kernel performs heuristic memory over commit handling by estimating the amount of memory available and failing requests that are blatantly invalid. Unfortunately, since memory is allocated using a heuristic rather than a precise algorithm, this setting can sometimes allow available memory on the system to be overloaded. This is the default setting.
    • 1 - The kernel performs no memory over commit handling. Under this setting, the potential for memory overload is increased, but so is performance for memory intensive tasks (such as those executed by some scientific software).
    • 2 - The kernel fails any request for memory that would cause the total address space to exceed the sum of the allocated swap space and the percentage of physical RAM specified in /proc/sys/vm/overcommit_ratio. This setting is best for those who desire less risk of memory overcommitment.

      Using this setting

      This setting is only recommended for systems with swap areas larger than physical memory.
  • overcommit_ratio - Specifies the percentage of physical RAM considered when /proc/sys/vm/overcommit_memory is set to 2. The default value is 50.
  • page-cluster - Sets the number of pages read in a single attempt. The default value of 3, which actually relates to 16 pages, is appropriate for most systems.
  • swappiness - Determines how much a machine should swap. The higher the value, the more swapping occurs. The default value, as a percentage, is set to 60.
All kernel-based documentation can be found in the following locally installed location:
/usr/share/doc/kernel-doc-kernel_version/Documentation/, which contains additional information.

E.3.10. /proc/sysvipc/

This directory contains information about System V IPC resources. The files in this directory relate to System V IPC calls for messages (msg), semaphores (sem), and shared memory (shm).

E.3.11. /proc/tty/

This directory contains information about the available and currently used tty devices on the system. Originally called teletype devices, any character-based data terminals are called tty devices.
In Linux, there are three different kinds of tty devices. Serial devices are used with serial connections, such as over a modem or using a serial cable. Virtual terminals create the common console connection, such as the virtual consoles available when pressing Alt+<F-key> at the system console. Pseudo terminals create a two-way communication that is used by some higher level applications, such as XFree86. The drivers file is a list of the current tty devices in use, as in the following example:
serial   /dev/cua 5  64-127 serial:calloutserial   /dev/ttyS   4  64-127 serialpty_slave /dev/pts  136   0-255 pty:slavepty_master   /dev/ptm  128   0-255 pty:masterpty_slave /dev/ttyp   3   0-255 pty:slavepty_master   /dev/pty 2   0-255 pty:master/dev/vc/0 /dev/vc/0   4   0 system:vtmaster/dev/ptmx /dev/ptmx   5   2 system/dev/console /dev/console 5   1 system:console/dev/tty /dev/tty 5   0 system:/dev/ttyunknown  /dev/vc/%d  4 1-63 console
The /proc/tty/driver/serial file lists the usage statistics and status of each of the serial tty lines.
In order for tty devices to be used as network devices, the Linux kernel enforces line discipline on the device. This allows the driver to place a specific type of header with every block of data transmitted over the device, making it possible for the remote end of the connection to treat a block of data as just one in a stream of data blocks. SLIP and PPP are common line disciplines, and each are commonly used to connect systems to one other over a serial link.

E.3.12. /proc/PID/

Out of Memory (OOM) refers to a computing state where all available memory, including swap space, has been allocated. When this situation occurs, it will cause the system to panic and stop functioning as expected. There is a switch that controls OOM behavior in /proc/sys/vm/panic_on_oom. When set to 1 the kernel will panic on OOM. A setting of 0 instructs the kernel to call a function named oom_killer on an OOM. Usually, oom_killer can kill rogue processes and the system will survive.
The easiest way to change this is to echo the new value to /proc/sys/vm/panic_on_oom.
# cat /proc/sys/vm/panic_on_oom1# echo 0 > /proc/sys/vm/panic_on_oom# cat /proc/sys/vm/panic_on_oom0
It is also possible to prioritize which processes get killed by adjusting the oom_killer score. In /proc/PID/ there are two tools labeled oom_adj and oom_score. Valid scores for oom_adj are in the range -16 to +15. To see the current oom_killer score, view the oom_score for the process. oom_killer will kill processes with the highest scores first.
This example adjusts the oom_score of a process with a PID of 12465 to make it less likely that oom_killer will kill it.
# cat /proc/12465/oom_score79872# echo -5 > /proc/12465/oom_adj# cat /proc/12465/oom_score78
There is also a special value of -17, which disables oom_killer for that process. In the example below, oom_score returns a value of 0, indicating that this process would not be killed.
# cat /proc/12465/oom_score78# echo -17 > /proc/12465/oom_adj# cat /proc/12465/oom_score0
A function called badness() is used to determine the actual score for each process. This is done by adding up 'points' for each examined process. The process scoring is done in the following way:
  1. The basis of each process's score is its memory size.
  2. The memory size of any of the process's children (not including a kernel thread) is also added to the score
  3. The process's score is increased for 'niced' processes and decreased for long running processes.
  4. Processes with the CAP_SYS_ADMIN and CAP_SYS_RAWIO capabilities have their scores reduced.
  5. The final score is then bitshifted by the value saved in the oom_adj file.
Thus, a process with the highest oom_score value will most probably be a non-privileged, recently started process that, along with its children, uses a large amount of memory, has been 'niced', and handles no raw I/O.

E.4. Using the sysctl Command

The /sbin/sysctl command is used to view, set, and automate kernel settings in the /proc/sys/ directory.
For a quick overview of all settings configurable in the /proc/sys/ directory, type the /sbin/sysctl -a command as root. This creates a large, comprehensive list, a small portion of which looks something like the following:
net.ipv4.route.min_delay = 2 kernel.sysrq = 0 kernel.sem = 250 32000 32 128
This is the same information seen if each of the files were viewed individually. The only difference is the file location. For example, the /proc/sys/net/ipv4/route/min_delay file is listed as net.ipv4.route.min_delay, with the directory slashes replaced by dots and the proc.sys portion assumed.
The sysctl command can be used in place of echo to assign values to writable files in the /proc/sys/ directory. For example, instead of using the command
echo 1 > /proc/sys/kernel/sysrq
use the equivalent sysctl command as follows:
sysctl -w kernel.sysrq="1"kernel.sysrq = 1
While quickly setting single values like this in /proc/sys/ is helpful during testing, this method does not work as well on a production system as special settings within /proc/sys/ are lost when the machine is rebooted. To preserve custom settings, add them to the /etc/sysctl.conf file.
Each time the system boots, the init program runs the /etc/rc.d/rc.sysinit script. This script contains a command to execute sysctl using /etc/sysctl.conf to determine the values passed to the kernel. Any values added to /etc/sysctl.conf therefore take effect each time the system boots.

E.5. Additional Resources

Below are additional sources of information about proc file system.

E.5.1. Installed Documentation

Some of the best documentation about the proc file system is installed on the system by default.
  • /usr/share/doc/kernel-doc-kernel_version/Documentation/filesystems/proc.txt - Contains assorted, but limited, information about all aspects of the /proc/ directory.
  • /usr/share/doc/kernel-doc-kernel_version/Documentation/sysrq.txt - An overview of System Request Key options.
  • /usr/share/doc/kernel-doc-kernel_version/Documentation/sysctl/ - A directory containing a variety of sysctl tips, including modifying values that concern the kernel (kernel.txt), accessing file systems (fs.txt), and virtual memory use (vm.txt).
  • /usr/share/doc/kernel-doc-kernel_version/Documentation/networking/ip-sysctl.txt - A detailed overview of IP networking options.

E.5.2. Useful Websites

  • http://www.linuxhq.com/ - This website maintains a complete database of source, patches, and documentation for various versions of the Linux kernel.

Revision History

Revision History
Revision 4-3Thu Feb 28 2013Jarom�r Hrad�lek
Updated the Red Hat Enterprise Linux 6.4 Deployment Guide.
Revision 4-0Thu Feb 21 2013Jarom�r Hrad�lek
Red Hat Enterprise Linux 6.4 GA release of the Deployment Guide.
Revision 3-0Wed Jun 20 2012Jarom�r Hrad�lek
Red Hat Enterprise Linux 6.3 GA release of the Deployment Guide.
Revision 2-1Tue Dec 6 2011Jarom�r Hrad�lek
Red Hat Enterprise Linux 6.2 GA release of the Deployment Guide.
Revision 2-0Mon Oct 3 2011Jarom�r Hrad�lek
Red Hat Enterprise Linux 6.2 Beta release of the Deployment Guide.
Revision 1-1Wed May 19 2011Jarom�r Hrad�lek
Red Hat Enterprise Linux 6.1 GA release of the Deployment Guide.
Revision 1-0Tue Mar 22 2011Jarom�r Hrad�lek
Red Hat Enterprise Linux 6.1 Beta release of the Deployment Guide.
Revision 0-1Tue Nov 09 2010Douglas Silas
Red Hat Enterprise Linux 6.0 GA release of the Deployment Guide.
Revision 0-0Mon Nov 16 2009Douglas Silas
Initialization of the Red Hat Enterprise Linux 6 Deployment Guide.
(Sebelumnya) 13 : The sysconfig Directory - ...13 : Index-Deployment Guide - ... (Berikutnya)