免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 966 | 回复: 0
打印 上一主题 下一主题

/proc文件系统解析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-24 11:13 |只看该作者 |倒序浏览

The /proc file system is a part of Linux
that most people have not investigated deeply—perhaps may have
never heard of. Like the kernel itself, it is a vital part of a
Linux system. Yet its contents and its function are a mystery to
most users. If the kernel is the brain of the operating system then
the /proc file system is its personal organizer.
In this article I will describe the /proc file system—what
it is, and how it can be used. There is also a description of the
program ProcMeter that uses the /proc file system to display useful
information.
What Is the /proc File System?
First of all, the /proc file system is not a real file
system; it is a virtual file system without the physical presence
that a disk or a tape has. The most common file system you use is
the collection of files on the disk. The disk stores the data
without regard to meaning, and the file system (e.g., the Linux
ext2fs system) makes sense of the data. The file system organizes
the data as directories and files for the user. Another common file
system is the Network File System (NFS), which makes files on
remote computers accessible.
All file systems are managed by the Linux kernel, which maps
the data on the device into a usable form. The user-level programs
that access the file system do not need to know how or where the
data is actually stored. When a program reads from a file, the
kernel manipulates the appropriate device to obtain the data. When
a program accesses one of the /proc files there is no device;
instead, the kernel supplies the information from its internal
state. The files exist only while there is a program actually
looking at them.
The /proc file system is a feature which Linux inherited from
one of its Unix ancestors. There are two main dialects of Unix in
popular usage: System V and BSD. The history of these two are not
important here, except that System V contains a /proc and BSD does
not.
What Is in This File System?
Everything that is happening in Linux. Every single program
that is running, the entire contents of memory, the internal
workings of the kernel—all the processes currently running on the
system are contained in the /proc file system. proc is an
abbreviation for process.
The most interesting files in /proc are listed below.
This list was compiled from kernel version 1.2.13; other
versions will be different. This is not a complete list,
but contains only those files whose contents are obvious to casual
browsers. A full description of the files can be read in the Linux
kernel source code—a task not for the faint-hearted.
The contents of /proc are completely dependent on the
processor architecture. (For example, the file /proc/cpuinfo is
available only for ix86 processors.) The different types of
hardware with which the kernel must communicate can also add files
(e.g., /proc/pci on PCI bus computers). There are also files that
are present or not, depending on which kernel options are compiled.
(My /proc/modules is empty, because I did not compile in modules
support.)
Some Common Files in /proc

  • cpuinfo contains the information
    established by the kernel about the processor at boot time, e.g.,
    the type of processor, including variant and features.

  • kcore contains the entire RAM
    contents as seen by the kernel.

  • loadavg contains the system load
    averages for the last 1, 5 and 15 minutes, along with the number of
    processes currently running and the total number of
    processes.

  • meminfo contains information
    about the memory usage, how much of the available RAM and swap
    space are in use and how the kernel is using them.

  • stat contains system statistics,
    counts of the amount of usage the kernel has made of basic system
    resources.

  • uptime contains the amount of
    time in seconds that the system has been running, and the amount of
    that time that it has been idle.

  • version contains the kernel
    version information that lists the version number, when it was
    compiled and who compiled it.

  • net/ is a directory containing
    network information.

  • net/dev contains a list of the
    network devices that are compiled into the kernel. For each device
    there are statistics on the number of packets that have been
    transmitted and received.

  • net/route contains the routing
    table that is used for routing packets on the network.

  • net/snmp contains statistics on
    the higher levels of the network protocol.

  • self/ contains information about
    the current process. The contents are the same as those in the
    per-process information described below.

  • pid/
    contains information about process number pid.
    The kernel maintains a directory containing process information for
    each process.

  • pid/cmdline
    contains the command that was used to start the process (using null
    characters to separate arguments).

  • pid/cwd
    contains a link to the current working directory of the
    process.

  • pid/environ
    contains a list of the environment variables that the process has
    available.

  • pid/exe
    contains a link to the program that is running in the
    process.

  • pid/fd/
    is a directory containing a link to each of the files that the
    process has open.

  • pid/mem
    contains the memory contents of the process.

  • pid/stat
    contains process status information.

  • pid/statm
    contains process memory usage information.

    You can look at the contents of these files yourself. Just
    type:
    cat /proc/meminfo
    and you will see something like:
        total:  used:  free:  shared: buffers:
    Mem: 11423744 8753152 2670592 2670592 2764800
    Swap: 25800704 5328896 20471808
    This table shows you how much memory you have, the amount you are
    using and how it is being used.
    Of What Use Is All This Information?
    Most people are using /proc without realizing it. The
    programs top, ps,
    free and their friends all use /proc. The
    information that they provide is taken directly from /proc and
    formatted for display.
    Compare the contents of the /proc/meminfo file (above) with
    the command free that gives output that looks
    like:
           total    used    free   shared  buffers
    Mem:     11156    8680    2476    2724    2800
    Swap:    25196    5204   19992
    As you can see, this table is just a formatted version of the
    contents of /proc/meminfo.
    The output of the ps program is all
    available in /proc; all of the information is stored in the
    per-process directories. Most of it just needs to be reasonably
    formatted for the user.


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94136/showart_1975746.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP