Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2974528
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: LINUX

2009-06-30 22:05:22

 

简介:

    Linux系统上的/proc目录是一种文件系统,与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

 

    基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点,比如有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。

 

    为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程的PID

 

    大多数虚拟文件可以使用文件查看命令如catmore或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apmfreelspcitop查看时却可以有着不错的表现。

 

 

常见文件介绍:

 

/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件。

 

[root@rhel5 ~]# ll /proc

total 0

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 1

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 10

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 11

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 1156

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 139

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 140

dr-xr-xr-x  5 root      root              0 Feb  8 17:08 141

dr-xr-xr-x  5 root      root              0 Feb  8 17:09 1417

dr-xr-xr-x  5 root      root              0 Feb  8 17:09 1418

 

 

上面列出的是/proc目录中一些进程相关的目录,每个目录中是当程本身相关信息的文件。下面是RHEL5.3上运行的一个PID2674的进程saslauthd的相关文件,其中有些文件是每个进程都会具有的,后文会对这些常见文件做出说明。

 

[root@rhel5 ~]# ll /proc/2674

total 0

dr-xr-xr-x 2 root root 0 Feb  8 17:15 attr

-r-------- 1 root root 0 Feb  8 17:14 auxv

-r--r--r-- 1 root root 0 Feb  8 17:09 cmdline

-rw-r--r-- 1 root root 0 Feb  8 17:14 coredump_filter

-r--r--r-- 1 root root 0 Feb  8 17:14 cpuset

lrwxrwxrwx 1 root root 0 Feb  8 17:14 cwd -> /var/run/saslauthd

-r-------- 1 root root 0 Feb  8 17:14 environ

lrwxrwxrwx 1 root root 0 Feb  8 17:09 exe -> /usr/sbin/saslauthd

dr-x------ 2 root root 0 Feb  8 17:15 fd

-r-------- 1 root root 0 Feb  8 17:14 limits

-rw-r--r-- 1 root root 0 Feb  8 17:14 loginuid

-r--r--r-- 1 root root 0 Feb  8 17:14 maps

-rw------- 1 root root 0 Feb  8 17:14 mem

-r--r--r-- 1 root root 0 Feb  8 17:14 mounts

-r-------- 1 root root 0 Feb  8 17:14 mountstats

-rw-r--r-- 1 root root 0 Feb  8 17:14 oom_adj

-r--r--r-- 1 root root 0 Feb  8 17:14 oom_score

lrwxrwxrwx 1 root root 0 Feb  8 17:14 root -> /

-r--r--r-- 1 root root 0 Feb  8 17:14 schedstat

-r-------- 1 root root 0 Feb  8 17:14 smaps

-r--r--r-- 1 root root 0 Feb  8 17:09 stat

-r--r--r-- 1 root root 0 Feb  8 17:14 statm

-r--r--r-- 1 root root 0 Feb  8 17:10 status

dr-xr-xr-x 3 root root 0 Feb  8 17:15 task

-r--r--r-- 1 root root 0 Feb  8 17:14 wchan

 

 

cmdline  启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息。

[root@rhel5 ~]# more /proc/2674/cmdline 

/usr/sbin/saslauthd

 

cwd  指向当前进程运行目录的一个符号链接。

 

environ  当前进程的环境变量列表,环境变量彼此之间用空字符(NULL)隔开。变量名用大写字母表示,其值用小写字母表示。

[root@rhel5 ~]# more /proc/2674/environ 

TERM=linuxauthd

 

exe  指向启动当前进程的可执行文件(完整路径)的符号链接,通过/proc/N/exe可以启动当前进程的一个拷贝。

 

fd  这是个目录,包含当前进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接。

[root@rhel5 ~]# ll /proc/2674/fd

total 0

lrwx------ 1 root root 64 Feb  8 17:17 0 -> /dev/null

lrwx------ 1 root root 64 Feb  8 17:17 1 -> /dev/null

lrwx------ 1 root root 64 Feb  8 17:17 2 -> /dev/null

lrwx------ 1 root root 64 Feb  8 17:17 3 -> socket:[7990]

lrwx------ 1 root root 64 Feb  8 17:17 4 -> /var/run/saslauthd/saslauthd.pid

lrwx------ 1 root root 64 Feb  8 17:17 5 -> socket:[7991]

lrwx------ 1 root root 64 Feb  8 17:17 6 -> /var/run/saslauthd/mux.accept

 

limits  当前进程所使用的每一个受限资源的软限制、硬限制和管理单元。此文件仅可由实际启动当前进程的UID用户读取。

 

maps  当前进程关联到的每个可执行文件和库文件在内存中的映射区域及其访问权限所组成的列表。

[root@rhel5 ~]# cat /proc/2674/maps 

00110000-00239000 r-xp 00000000 08:02 130647     /lib/libcrypto.so.0.9.8e

00239000-0024c000 rwxp 00129000 08:02 130647     /lib/libcrypto.so.0.9.8e

0024c000-00250000 rwxp 0024c000 00:00 0 

00250000-00252000 r-xp 00000000 08:02 130462     /lib/libdl-2.5.so

00252000-00253000 r-xp 00001000 08:02 130462     /lib/libdl-2.5.so

 

mem  当前进程所占用的内存空间openreadlseek等系统调用使用不能被用户读取。

 

root  指向当前进程运行根目录的符号链接。在UnixLinux系统上,通常采用chroot命令使每个进程运行于独立的根目录。

 

stat  当前进程的状态信息,包含一系统格式化后的数据列,可读性差,通常由ps命令使用。

 

statm  当前进程占用内存的状态信息,通常以页面page)表示。

 

status  stat所提供信息类似,但可读性较好,如下所示,每行表示一个属性信息。其详细介绍请参见 procman手册。

[root@rhel5 ~]# more /proc/2674/status 

Name:   saslauthd

State:  S (sleeping)

SleepAVG:       0%

Tgid:   2674

Pid:    2674

PPid:   1

TracerPid:      0

Uid:    0       0       0       0

Gid:    0       0       0       0

FDSize: 32

Groups:

VmPeak:     5576 kB

VmSize:     5572 kB

VmLck:         0 kB

VmHWM:       696 kB

VmRSS:       696 kB

…………

 

 

task  目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容。

 

 

/proc下其他文件介绍:

 

/proc/apm

高级电源管理(APM)版本信息及电池相关状态信息,通常由apm命令使用。

 

/proc/buddyinfo

用于诊断内存碎片问题的相关信息文件。

 

/proc/cmdline

在启动时传递至内核的相关参数信息,这些信息通常由lilogrub等启动管理工具进行传递。

[root@rhel5 ~]# more /proc/cmdline 

ro root=/dev/VolGroup00/LogVol00 rhgb quiet

 

 

/proc/cpuinfo

处理器的相关信息的文件。

 

/proc/crypto

系统上已安装的内核使用的密码算法及每个算法的详细信息列表。

[root@rhel5 ~]# more /proc/crypto 

name         : crc32c

driver       : crc32c-generic

module       : kernel

priority     : 0

type         : digest

blocksize    : 32

digestsize   : 4

…………

 

 

/proc/devices

系统已经加载的所有块设备和字符设备的信息,包含主设备号和设备组(与主设备号对应的设备类型)名。

[root@rhel5 ~]# more /proc/devices 

Character devices:

  1 mem

  4 /dev/vc/0

  4 tty

  4 ttyS

  …………

 

Block devices:

  1 ramdisk

  2 fd

  8 sd

  …………

 

 

/proc/diskstats

每块磁盘设备的磁盘I/O统计信息列表。

 

 

/proc/dma

每个正在使用且注册的ISA DMA通道的信息列表。

[root@rhel5 ~]# more /proc/dma

2: floppy

4: cascade

 

 

/proc/execdomains

内核当前支持的执行域(每种操作系统独特个性)信息列表;

[root@rhel5 ~]# more /proc/execdomains 

0-0     Linux                   [kernel]

 

 

/proc/fb

帧缓冲设备列表文件,包含帧缓冲设备的设备号和相关驱动信息。

 

/proc/filesystems

当前被内核支持的文件系统类型列表文件,被标示为nodev的文件系统表示不需要块设备的支持。通常mount一个设备时,如果没有指定文件系统类型将通过此文件来决定其所需文件系统的类型。

[root@rhel5 ~]# more /proc/filesystems 

nodev   sysfs

nodev   rootfs

nodev   proc

        iso9660

        ext3

…………

 

 

/proc/iomem

每个物理设备上的记忆体(RAM或者ROM)在系统内存中的映射信息。

[root@rhel5 ~]# more /proc/iomem 

00000000-0009f7ff : System RAM

0009f800-0009ffff : reserved

000a0000-000bffff : Video RAM area

000c0000-000c7fff : Video ROM

  …………

 

 

/proc/ioports

当前正在使用且已经注册过的与物理设备进行通讯的输入-输出端口范围信息列表。如下面所示,第一列表示注册的I/O端口范围,其后表示相关的设备。

[root@rhel5 ~]# less /proc/ioports 

0000-001f : dma1

0020-0021 : pic1

0040-0043 : timer0

0050-0053 : timer1

0060-006f : keyboard

......

......

 

阅读(1467) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~