Red Hat Linux 8.0: The Official Red Hat Linux Reference Guide | ||
---|---|---|
Prev | Chapter 2. The proc File System | Next |
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 files listed in this section will not be the same on your machine. This is because much of the information pertains to the hardware on which you are running Red Hat Linux. |
This file provides information about the state of the Advanced Power Management (APM) system and is used by the apm command. If the system with no battery is connected to an AC power source, this virtual file looks 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) |
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 tell us the kernel is mounted read-only — signified by (ro) — off of the second partition on the first IDE device (/dev/hda2).
This virtual file identifies the type of processor used by your system. The following is an example of the output you would typically see from /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. If you only have one processor, you will only see a 0.
cpu family — Authoritatively tells you the type of processor you have in the system. If your computer is an Intel-based system, simply place the number in front of "86" to determine the value. This is particularly helpful if you are wondering about the architecture of an older system such as the 586, 486, or 386. Because some RPM packages are compiled for each of these particular architectures, this value enables you determine which package to install.
model name — Gives you 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 — Tells you 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.
This file displays the various character and block devices currently configured for use with the kernel. It does not include devices whose modules are not loaded into the kernel. Below is a sample output from this virtual file:
Character devices: 1 mem 2 pty 3 ttyp 4 ttyS 5 cua 7 vcs 10 misc 14 sound 29 fb 36 netlink 128 ptm 129 ptm 136 pts 137 pts 162 raw 254 iscsictl Block devices: 1 ramdisk 2 fd 3 ide0 9 md 22 ide1 |
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 more efficient order. Character devices do not require buffering.
The other difference is that 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.
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 |
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.
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 |
This file displays a list of the file system types currently supported by the kernel. Sample output from a generic kernel's /proc/filesystems file looks similar to this:
nodev rootfs nodev bdev nodev proc nodev sockfs nodev tmpfs nodev shm nodev pipefs ext2 nodev ramfs iso9660 nodev devpts ext3 nodev autofs nodev binfmt_misc |
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 name of the file systems supported.
The mount command cycles through these file systems when one is not specified as an argument.
This file records the number of interrupts per IRQ on the x86 architecture. A standard /proc/interrupts looks similar to this:
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 ide1 NMI: 0 ERR: 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 aic7xxx NMI: 0 ERR: 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 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.
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 tells the kind of memory located within those registers. In particular, this column will tell you which memory registers are used by the kernel within the system RAM or, if you have multiple Ethernet ports on your NIC, the memory registers assigned for each port.
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:
0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial(auto) 0376-0376 : ide1 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial(auto) 0cf8-0cff : PCI conf1 d000-dfff : PCI Bus #01 e000-e00f : VIA Technologies, Inc. Bus Master IDE e000-e007 : ide0 e008-e00f : ide1 e800-e87f : Digital Equipment Corporation DECchip 21140 [FasterNet] e800-e87f : tulip |
The first column gives the IO port address range reserved for the device listed in the second column.
This file lists 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 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.
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 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
you accidentally view this file, press
|
This file is used to hold messages generated by the kernel. These messages are then picked up by other programs, such as /sbin/klogd.
This file holds the kernel exported symbol definitions used by the module tools to dynamically link and bind loadable modules.
e003def4 speedo_debug [eepro100] e003b04c eepro100_init [eepro100] e00390c0 st_template [st] e002104c RDINDOOR [megaraid] e00210a4 callDone [megaraid] e00226cc megaraid_detect [megaraid] |
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.
This file provides a look at load average on the processor over time and 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.
This files displays the files currently locked by the kernel. The content of this file contains 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:
1: FLOCK ADVISORY WRITE 807 03:05:308731 0 EOF c2a260c0 c025aa48 c2a26120 2: POSIX ADVISORY WRITE 708 03:05:308720 0 EOF c2a2611c c2a260c4 c025aa48 |
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 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, and 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.
This file contains the current information for multiple-disk, RAID configurations. If your system does not contain such a configuration, then your /proc/mdstat file will look similar to this:
Personalities : read_ahead not set unused devices: <none> |
This file remains in the state above unless you create a software RAID or md device. In that case, you can view /proc/mdstat to give you a picture of what is currently happening with your mdX RAID devices.
The /proc/mdstat file below shows a system with its md0 configured as a RAID 1 device. It is currently re-syncing the disks:
Personalities : [linear] [raid1] read_ahead 1024 sectors md0: active raid1 sda2[1] sdb2[0] 9940 blocks [2/2] [UU] resync=1% finish=12.3min algorithm 2 [3/3] [UUU] unused devices: <none> |
This is one of the more commonly used files in the /proc/ directory, as it reports back plenty of valuable information about the current RAM usage on the system. A system with 256MB of RAM and 384MB of swap space will likely have a /proc/meminfo file similar to this one:
total: used: free: shared: buffers: cached: Mem: 261709824 253407232 8302592 0 120745984 48689152 Swap: 402997248 8192 402989056 MemTotal: 255576 kB MemFree: 8108 kB MemShared: 0 kB Buffers: 117916 kB Cached: 47548 kB Active: 135300 kB Inact_dirty: 29276 kB Inact_clean: 888 kB Inact_target: 0 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 255576 kB LowFree: 8108 kB SwapTotal: 393552 kB SwapFree: 393544 kB |
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 — Displays 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 — Displays 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 definitely 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, respectively, 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, respectively, 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.
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, and the second column shows the driver in use.
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:
ide-cd 27008 0 (autoclean) cdrom 28960 0 (autoclean) [ide-cd] soundcore 4100 0 (autoclean) agpgart 31072 0 (unused) binfmt_misc 5956 1 iscsi 32672 0 (unused) scsi_mod 94424 1 [iscsi] autofs 10628 0 (autoclean) (unused) tulip 48608 1 ext3 60352 2 jbd 39192 2 [ext3] |
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 tells you 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). Any module with a line containing a name listed in brackets ([ or ]) tells you that this module depends upon another module to be present in order to function.
This file provides a quick list of all mounts in use by the system:
rootfs / rootfs rw 0 0 /dev/hda2 / ext3 rw 0 0 /proc /proc proc rw 0 0 /dev/hda1 /boot ext3 rw 0 0 none /dev/pts devpts rw 0 0 none /dev/shm tmpfs rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 |
The output found here is similar to contents of /etc/mtab, except that /proc/mount can be more current.
The first column specifies the device that is mounted, with the second column revealing the mountpoint. 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.
This file refers to the current Memory Type Range Registers (MTRRs) in use with the system. If your system's architecture supports MTRRs, your mtrr might look something like this:
reg00: base=0x00000000 ( 0MB), size= 64MB: write-back, count=1 |
MTRRs are used with Intel P6 family of processors (Pentium II and higher), and they are used to 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 for you. For more information on MTRRs and manually configuring this file, please see http://web1.linuxhq.com/kernel/v2.3/doc/mtrr.txt.html.
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.
This file contains a full listing of every PCI device on your system. Depending on the number of PCI devices you have, /proc/pci can get 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 you detailed IRQ information so you can quickly look for conflicts.
Tip | ||
---|---|---|
To get a more readable version of this informations, type:
|
This file gives information about memory usage on the slab level. Linux kernels greater than 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:
slabinfo - version: 1.1 kmem_cache 64 68 112 2 2 1 nfs_write_data 0 0 384 0 0 1 nfs_read_data 0 160 384 0 16 1 nfs_page 0 200 96 0 5 1 ip_fib_hash 10 113 32 1 1 1 journal_head 51 7020 48 2 90 1 revoke_table 2 253 12 1 1 1 revoke_record 0 0 32 0 0 1 clip_arp_cache 0 0 128 0 0 1 ip_mrt_cache 0 0 96 0 0 1 |
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. Therefore an active object is one that is in use, and an active slab is one that contains one or more active object.
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 1139111 3689 234449 84378914 cpu0 1139111 3689 234449 84378914 page 2675248 8567956 swap 10022 19226 intr 93326523 85756163 174412 0 3 3 0 6 0 1 0 428620 0 60330 0 1368304 5538681 disk_io: (3,0):(1408049,445601,5349480,962448,17135856) ctxt 27269477 btime 886490134 processes 206458 |
Some of the more popular statistics include:
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 the idle task, respectively. The total for all CPUs is given at the top, and 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.
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 filename, 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.
This file contains information about how long the system has on since its last restart. The output of /proc/uptime is quite minimal:
350735.47 234388.90 |
The first number tells you the total number of seconds the system has been up. The second number tells you how much of that time the machine has spent idle in seconds.
This files tells you the versions of the Linux kernel and gcc, as well as the version of Red Hat Linux installed on the system:
Linux version 2.4.18-0.40 (user@foo.redhat.com)(gcc version 2.96 20000731 (Red Hat Linux 7.2 2.96-102)) #1 Tue May 28 04:28:05 EDT 2002 |
This information is used for a variety of purposes, including the version data presented when a user logs in.