linux中/proc/*目录中的内容分析

来源:互联网 发布:seo 编辑 关键词 编辑:程序博客网 时间:2024/05/17 14:17

proc目录的作用

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。
除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。

[root@localhost proc]# ls1      1072  124   1354   1585   1815  20     267   32    417  54    64    75    86  acpi         filesystems  locks         slabinfo10     108   125   1355   16     1841  21     268   3259  418  541   65    76    87  asound       fs           mdstat        softirqs100    109   126   1356   1614   1843  21023  269   3295  42   55    66    77    88  buddyinfo    interrupts   meminfo       stat10029  11    127   1357   162    1845  21110  27    33    43   56    6666  78    89  bus          iomem        misc          swaps101    110   128   1379   1640   1847  22     2716  34    44   57    67    79    9   cgroups      ioports      modules       sys102    111   129   1393   16488  1849  23     2765  35    45   58    68    8     90  cmdline      ipmi         mounts        sysrq-trigger1023   112   13    14     1660   1851  24     28    36    46   59    6804  80    91  cpuinfo      irq          mtd           sysvipc1024   113   1302  1411   1676   1859  25     2834  37    47   6     6826  81    92  crypto       kallsyms     mtrr          timer_list1025   114   131   15     1688   189   2511   2890  38    48   60    69    8151  93  devices      kcore        net           timer_stats1026   115   132   1533   17     19    26     29    39    49   61    7     82    94  diskstats    keys         pagetypeinfo  tty103    116   1327  1550   1772   1955  2603   2949  4     5    62    70    83    95  dma          key-users    partitions    uptime104    117   1350  15603  1779   1959  2630   3     40    50   63    71    84    96  dri          kmsg         sched_debug   version105    12    1351  15607  1796   196   264    30    41    51   6303  72    848   97  driver       kpagecount   schedstat     vmallocinfo106    122   1352  1575   18     197   265    31    410   52   6304  73    849   98  execdomains  kpageflags   scsi          vmstat107    123   1353  1584   1804   2     266    3195  411   53   638   74    85    99  fb           loadavg      self          zoneinfo


基本上,目前主机上面的各个程序的 PID 都是以目录的型态存在於 /proc 当中。 举例来说,我们启动所运行的第一支程序 init 他的 PID 是 1 , 这个 PID 的所有相关资讯都写入在 /proc/1/* 当中!若我们直接观察 PID 为 1 的数据好了。其中cmdline不表示启动这个进程的命令串,environ表示这个进程的环境变量内容。
查看cmdline如下 

[root@localhost proc]# cd 1[root@localhost 1]# lsattr       clear_refs       cpuset   fd      loginuid   mounts      numa_maps      pagemap      schedstat  stat     taskautogroup  cmdline          cwd      fdinfo  maps       mountstats  oom_adj        personality  sessionid  statm    wchanauxv       comm             environ  io      mem        net         oom_score      root         smaps      statuscgroup     coredump_filter  exe      limits  mountinfo  ns          oom_score_adj  sched        stack      syscall[root@localhost 1]# cat cmdline /sbin/init[root@localhost 1]# 


 /proc目录下的文件与对应的内容
档名                           文件内容
/proc/cmdline 加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的!
/proc/cpuinfo 本机的 CPU 的相关资讯,包含时脉、类型与运算功能等
/proc/devices 这个文件记录了系统各个主要装置的主要装置代号,与 mknod 有关呢!
/proc/filesystems 目前系统已经加载的文件系统罗!
/proc/interrupts 目前系统上面的 IRQ 分配状态。
/proc/ioports 目前系统上面各个装置所配置的 I/O 位址。
/proc/kcore 这个就是内存的大小啦!好大对吧!但是不要读他啦!
/proc/loadavg 还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
/proc/meminfo 使用 free 列出的内存资讯,嘿嘿!在这里也能够查阅到!
/proc/modules 目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
/proc/mounts 系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦!
/proc/swaps 到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!
/proc/partitions 使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!
/proc/pci 在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!
/proc/uptime 就是用 uptime 的时候,会出现的资讯啦!
/proc/version 核心的版本,就是用 uname -a 显示的内容啦!
/proc/bus/* 一些汇流排的装置,还有 U盘 的装置也记录在此喔

0 0
原创粉丝点击