- 论坛徽章:
- 0
|
Proc 文件系统是一个实时的,常驻内存的文件系统,它跟踪进程在你机器上的运行情况和你系统的状态。继续阅读你可以学到很多/proc文件系统的知识。
/proc
伪文件系统最令人震惊的是它事实上不存在于任何的媒介上。/proc文件系统是常驻虚拟内存并且维持着操作系统的动态数据的一个伪文件系统。大部分的
/proc文件系统信息被实时更新来与当前操作系统的状态一致。/proc文件系统的内容能被任何有相应权限的人读取。但是,/proc文件系统的特定的
部分只能被这个进程的拥有者和root用户读取。/proc文件系统的内容从特定的/proc目录得到数据并且显示出来,它们有很多用途。
在
linux下,我们有工具像lscpi,scanpci和pnpdump,它们帮助我们检测大量的PCI,ISA
硬件芯片设置并且帮助我们对io,dma和irq的值作最好的选择。通过查看/proc文件系统的各种参数的值,我们可以看到许多内核和进程的当前状态。
我们用dmesg命令举个例子。
bash# dmesg
Dmesg
帮助我们确定已经被内核检测到和初始化的设备。我们有工具像"ps"和"top",给我们一个准确的快照,这个快照是关于进程在机器上运行的状态和一个当
前运行在机器上的清醒和睡眠的进程的列表。你曾经想过这些通过"ps"和"top"进程给出的信息的准确的出处吗?这些进程的信息来自/proc文件系
统,当进程发生改变的时候它随时更新。
让我们看一下linux机器的root目录的列表快照。
drwxr-xr-x 14 root root 291 Oct 25 18:47 opt
dr-xr-xr-x 86 root root 0 Nov 30 2000 proc /var/named
-r-------- 1 root root 0 Nov 30 12:20 environ
lrwx------ 1 root root 0 Nov 30 12:20 exe -> /usr/sbin/named
dr-x------ 2 root root 0 Nov 30 12:20 fd
pr--r--r-- 1 root root 0 Nov 30 12:20 maps
-rw------- 1 root root 0 Nov 30 12:20 mem
lrwx------ 1 root root 0 Nov 30 12:20 root -> /
-r--r--r-- 1 root root 0 Nov 30 12:20 stat
-r--r--r-- 1 root root 0 Nov 30 12:20 statm
-r--r--r-- 1 root root 0 Nov 30 12:20 status
在我们执行命令之前我们需要作为root登录,因为大量的运行在系统上的进程可能被其他人拥有。通常你只有权限访问你开启的进程。在作为root登录之后,对任意的目录执行以上的命令并且与以上的输出作比较。
你有没有注意到你得到的输出与上面列出的内容有任何相似之处?是的,所有你选择查看的无关的目录的内容都是一样的,因为这些目录包括大量的进程的参数和状态,它的PID是你所在的当前目录的名字。各个参数的值和状态信息当然因进程不同而不同。
看上面输出的第一行。
-r--r--r-- 1 root root 0 Nov30 12:20 cmdline
"cmdline",这个文件包含整个用来产生进程的命令行。这个文件的内容是命令行参数包括传递来启动进程的所有参数。所有包含在这个文件的信息即命令和各个启动参数,没有任何的格式和任何的空格。
lrwx------ 1 root root 0 Nov 30 12:20 cwd -> /var/named
"cwd",像我们从上面看见的,这是一个符号链接,它指向进程的当前工作目录。
-r-------- 1 root root 0 Nov 30 12:20 environ
"environ"包括在VARIABL=value为这个进程定义的所有的环境变量。正如"cmdline"一样,包含在文件中的命令和各个参数的信息没有任何的格式和空格。
lrwx------ 1 root root 0 Nov 30 12:20 exe -> /usr/sbin/named
"exe",这是一个符号链接指向启动当前进程的可执行文件。
dr-x------ 2 root root 0 Nov 30 12:20 fd
"fd",这个目录包括被指定进程打开的文件描述符。
pr--r--r-- 1 root root 0 Nov 30 12:20 maps
"maps",
当你打出这个命名管道的内容,你可以看到进程的地址空间部分,当前被映射到一个文件。这个部分,从左到右是:和这个映射有关的地址空间,和这个映射有关的
权限,距离文件开始(即这个映射开始的地方)的偏移量,这个映射文件所在的设备,文件的inode号,最后是文件名本身。
"root",这是一个符号链接指向这个进程的/proc目录。
-r--r--r-- 1 root root 0 Nov 30 12:20 status
"status",这个文件给你有关进程名的信息,它的当前的状态,睡眠或者清醒,它的PID,UID,PPID和大量其它基本信息。这个信息可以在一个更简单和结构化的语法中看到,通过使用工具如"ps"和"top"。
关于大量/proc/*目录的基本信息
这个信息已经存在LASG, 第三章《/proc 文件系统》中。
/proc/cpuinfo
关于处理器,诸如它的类型,产地,型号和性能。
/proc/devices
当前运行的内核配置的设备的驱动列表。
/proc/dma
显示DMA通道此刻正在被使用。
/proc/filesystems
内核配置的文件系统。
/proc/interrupts
显示在使用的中断,和每个中断已经使用的次数
/proc/ioports
哪一个I/O端口正在使用
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/71303/showart_1957556.html |
|