/proc/* 代表的意义
其实,我们之前提到的所谓的程序都是在内存当中嘛!而内存当中的数据又都是写入到/proc/* 这个目录下的,所以罗,我们当然可以直接观察 /proc 这个目录当中的文件啊!如果你观察过 /proc 这个目录的话,应该会发现他有点像这样:
[root@www ~]# ll /proc
dr-xr-xr-x 5 root root 0 Mar 11 08:46 1
dr-xr-xr-x 5 root root 0 Mar 11 00:46 10
dr-xr-xr-x 5 root root 0 Mar 11 00:46 11
....(中间省略)....
-r--r--r-- 1 root root 0 Mar 20 12:11 uptime
-r--r--r-- 1 root root 0 Mar 20 12:11 version
-r--r--r-- 1 root root 0 Mar 20 12:11 vmstat
-r--r--r-- 1 root root 0 Mar 20 12:11 zoneinfo
|
基本上,目前主机上面的各个程序的 PID 都是以目录的型态存在於 /proc 当中。举例来说,我们启动所运行的第一支程序 init 他的 PID 是 1 ,这个 PID 的所有相关资讯都写入在 /proc/1/* 当中!若我们直接观察 PID 为 1 的数据好了,他有点像这样:
[root@www ~]# ll /proc/1
dr-xr-xr-x 2 root root 0 Mar 12 11:04 attr
-r-------- 1 root root 0 Mar 17 14:32 auxv
-r--r--r-- 1 root root 0 Mar 17 14:32 cmdline <==就是命令串
-rw-r--r-- 1 root root 0 Mar 17 14:32 coredump_filter
-r--r--r-- 1 root root 0 Mar 17 14:32 cpuset
lrwxrwxrwx 1 root root 0 Mar 17 14:32 cwd -> /
-r-------- 1 root root 0 Mar 17 14:32 environ <==一些环境变量
lrwxrwxrwx 1 root root 0 Mar 17 14:32 exe -> /sbin/init <==实际运行的命令
....(以下省略)....
|
里面的数据还挺多的,不过,比较有趣的其实是两个文件,分别是:
- cmdline:这个程序被启动的命令串;
- environ:这个程序的环境变量内容。
很有趣吧!如果你查阅一下 cmdline 的话,就会发现:
[root@www ~]# cat /proc/1/cmdline
init [5]
|
就是这个命令、选项与参数启动 init 的啦!这还是跟某个特定的 PID 有关的内容呢,如果是针对整个 Linux 系统相关的参数呢?那就是在 /proc 目录底下的文件啦!相关的文件与对应的内容是这样的:(注3)
档名 | 文件内容 |
/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盘 的装置也记录在此喔! |
其实,上面这些文件鸟哥在此建议您可以使用 cat 去查阅看看,不必深入了解,不过,观看过文件内容后,毕竟会比较有感觉啦!如果未来您想要自行撰写某些工具软件,那么这个目录底下的相关文件可能会对您有点帮助的喔!