深入理解linux系統下proc檔案系統內容

小亮520cl發表於2015-08-04
另外,可以參考這個
  • 內容摘要:Linux系統上的/proc目錄是一種檔案系統,即proc檔案系統。
Linux系統上的/proc目錄是一種檔案系統,即proc檔案系統。與其它常見的檔案系統不同的是,/proc是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心執行狀態的一系列特殊檔案,使用者可以透過這些檔案檢視有關係統硬體及當前正在執行程式的資訊,甚至可以透過更改其中某些檔案來改變核心的執行狀態。 

基於/proc檔案系統如上所述的特殊性,其內的檔案也常被稱作虛擬檔案,並具有一些獨特的特點。例如,其中有些檔案雖然使用檢視命令檢視時會返回大量資訊,但檔案本身的大小卻會顯示為0位元組。此外,這些特殊檔案中大多數檔案的時間及日期屬性通常為當前系統時間和日期,這跟它們隨時會被重新整理(儲存於RAM中)有關。 

為了檢視及使用上的方便,這些檔案通常會按照相關性進行分類儲存於不同的目錄甚至子目錄中,如/proc/scsi目錄中儲存的就是當前系統上所有SCSI裝置的相關資訊,/proc/N中儲存的則是系統當前正在執行的程式的相關資訊,其中N為正在執行的程式(可以想象得到,在某程式結束後其相關目錄則會消失)。 

大多數虛擬檔案可以使用檔案檢視命令如cat、more或者less進行檢視,有些檔案資訊表述的內容可以一目瞭然,但也有檔案的資訊卻不怎麼具有可讀性。不過,這些可讀性較差的檔案在使用一些命令如apm、free、lspci或top檢視時卻可以有著不錯的表現。 


一、        程式目錄中的常見檔案介紹 

/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)上執行的一個PID為2674的程式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 


1.1、cmdline — 啟動當前程式的完整命令,但殭屍程式目錄中的此檔案不包含任何資訊; 
[root@rhel5 ~]# more /proc/2674/cmdline 
/usr/sbin/saslauthd 

1.2、cwd — 指向當前程式執行目錄的一個符號連結; 

1.3、environ — 當前程式的環境變數列表,彼此間用空字元(NULL)隔開;變數用大寫字母表示,其值用小寫字母表示; 
[root@rhel5 ~]# more /proc/2674/environ 
TERM=linuxauthd 

1.4、exe — 指向啟動當前程式的可執行檔案(完整路徑)的符號連結,透過/proc/N/exe可以啟動當前程式的一個複製; 

1.5、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 

1.6、limits — 當前程式所使用的每一個受限資源的軟限制、硬限制和管理單元;此檔案僅可由實際啟動當前程式的UID使用者讀取;(2.6.24以後的核心版本支援此功能); 

1.7、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 

1.8、mem — 當前程式所佔用的記憶體空間,由open、read和lseek等系統呼叫使用,不能被使用者讀取; 

1.9、root — 指向當前程式執行根目錄的符號連結;在Unix和Linux系統上,通常採用chroot命令使每個程式執行於獨立的根目錄; 

1.10、stat — 當前程式的狀態資訊,包含一系統格式化後的資料列,可讀性差,通常由ps命令使用; 

1.11、statm — 當前程式佔用記憶體的狀態資訊,通常以“頁面”(page)表示; 

1.12、status — 與stat所提供資訊類似,但可讀性較好,如下所示,每行表示一個屬性資訊;其詳細介紹請參見 proc的man手冊頁; 
[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 
………… 


1.13、task — 目錄檔案,包含由當前程式所執行的每一個執行緒的相關資訊,每個執行緒的相關資訊檔案均儲存在一個由執行緒號(tid)命名的目錄中,這類似於其內容類似於每個程式目錄中的內容;(核心2.6版本以後支援此功能) 

二、/proc目錄下常見的檔案介紹 

2.1、/proc/apm 
高階電源管理(APM)版本資訊及電池相關狀態資訊,通常由apm命令使用; 

2.2、/proc/buddyinfo 
用於診斷記憶體碎片問題的相關資訊檔案; 

2.3、/proc/cmdline 
在啟動時傳遞至核心的相關引數資訊,這些資訊通常由lilo或grub等啟動管理工具進行傳遞; 
[root@rhel5 ~]# more /proc/cmdline 
ro root=/dev/VolGroup00/LogVol00 rhgb quiet 


2.4、/proc/cpuinfo 
處理器的相關資訊的檔案; 

2.5、/proc/crypto 
系統上已安裝的核心使用的密碼演算法及每個演算法的詳細資訊列表; 
[root@rhel5 ~]# more /proc/crypto 
name         : crc32c 
driver       : crc32c-generic 
module       : kernel 
priority     : 0 
type         : digest 
blocksize    : 32 
digestsize   : 4 
…………


2.6、/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 
  …………


2.7、/proc/diskstats 
每塊磁碟裝置的磁碟I/O統計資訊列表;(核心2.5.69以後的版本支援此功能) 

2.8、/proc/dma 
每個正在使用且註冊的ISA DMA通道的資訊列表; 
[root@rhel5 ~]# more /proc/dma 
2: floppy 
4: cascade 


2.9、/proc/execdomains 
核心當前支援的執行域(每種作業系統獨特“個性”)資訊列表; 
[root@rhel5 ~]# more /proc/execdomains 
0-0     Linux                   [kernel] 


2.10、/proc/fb 
幀緩衝裝置列表檔案,包含幀緩衝裝置的裝置號和相關驅動資訊; 

2.11、/proc/filesystems 
當前被核心支援的檔案系統型別列表檔案,被標示為nodev的檔案系統表示不需要塊裝置的支援;通常mount一個裝置時,如果沒有指定檔案系統型別將透過此檔案來決定其所需檔案系統的型別; 
[root@rhel5 ~]# more /proc/filesystems 
nodev   sysfs 
nodev   rootfs 
nodev   proc 
        iso9660 
        ext3 
………… 
………… 


2.12、/proc/interrupts 
X86或X86_64體系架構系統上每個IRQ相關的中斷號列表;多路處理器平臺上每個CPU對於每個I/O裝置均有自己的中斷號; 
[root@rhel5 ~]# more /proc/interrupts 
           CPU0       
  0:    1305421    IO-APIC-edge  timer 
  1:         61    IO-APIC-edge  i8042 
185:       1068   IO-APIC-level  eth0 
………… 


2.13、/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 
  ………… 
3.2.12. /proc/iomem

This file shows you the current map of the system's memory for each physical device:

00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved 
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM 
000f0000-000fffff : System ROM
00100000-07ffffff : System RAM   
00100000-00291ba8 : Kernel code
00291ba9-002e09cb : Kernel data 
e0000000-e3ffffff : VIA Technologies, Inc. VT82C597 [Apollo VP3] e4000000-e7ffffff : PCI Bus #01   
e4000000-e4003fff : Matrox Graphics, Inc. MGA G200 AGP   
e5000000-e57fffff : Matrox Graphics, Inc. MGA G200 AGP 
e8000000-e8ffffff : PCI Bus #01   
e8000000-e8ffffff : Matrox Graphics, Inc. MGA G200 AGP 
ea000000-ea00007f : Digital Equipment Corporation DECchip 21140 [FasterNet]
ea000000-ea00007f : tulip ffff0000-ffffffff : reserved

The first column displays the memory registers used by each of the different types of memory. The second column lists the kind of memory located within those registers and displays which memory registers are used by the kernel within the system RAM or, if the network interface card has multiple Ethernet ports, the memory registers assigned for each port.

/opt/qtmarvell/mvqt # cat /proc/iomem 
00000000-0fffffff : System RAM 
  0002b000-00554fff : Kernel text 
  00556000-005a22f3 : Kernel data 
10000000-1fffffff : System RAM 
e0000000-e7ffffff : PEX0 Memory 
  e0000000-e0003fff : 0000:00:01.0 
  e0004000-e0004fff : 0000:00:01.0 
e8000000-efffffff : PEX1 Memory 
f1012100-f10121ff : serial8250.0 
  f1012100-f101211f : serial 
f1090000-f10903ff : mvsdio 
  f1090000-f10903ff : mvsdio 
f10a0000-f10a3fff : mv88fx_snd.0 
  f10a0000-f10a3fff : mv88fx_snd 
f10c0000-f10d0000 : dovefb.0  暫存器地址對映到這個 
  f10c0000-f10d0000 : dovefb_ovly.0

 

/opt/qtmarvell/mvqt # ./framebuffer 
The framebuffer device was opened successfully.

Fixed screen info: 
        id:          GFX Layer 0 
        smem_start:  0x12000000 
        smem_len:    33554432 
        type:        0 
        type_aux:    0 
        visual:      2 
        xpanstep:    1 
        ypanstep:    1 
        ywrapstep:   0 
        line_length: 2560 
        mmio_start:  0xf10c0000 
        mmio_len:    65537



2.14、/proc/ioports 
當前正在使用且已經註冊過的與物理裝置進行通訊的輸入-輸出埠範圍資訊列表;如下面所示,第一列表示註冊的I/O埠範圍,其後表示相關的裝置; 
[root@rhel5 ~]# less /proc/ioports 
0000-001f : dma1 
0020-0021 : pic1 
0040-0043 : timer0 
0050-0053 : timer1 
0060-006f : keyboard 
………… 


2.15、/proc/kallsyms 
模組管理工具用來動態連結或繫結可裝載模組的符號定義,由核心輸出;(核心2.5.71以後的版本支援此功能);通常這個檔案中的資訊量相當大; 
[root@rhel5 ~]# more /proc/kallsyms 
c04011f0 T _stext 
c04011f0 t run_init_process 
c04011f0 T stext 
  ………… 


2.16、/proc/kcore 
系統使用的實體記憶體,以ELF核心檔案(core file)格式儲存,其檔案大小為已使用的實體記憶體(RAM)加上4KB;這個檔案用來檢查核心資料結構的當前狀態,因此,通常由GBD通常除錯工具使用,但不能使用檔案檢視命令開啟此檔案; 

2.17、/proc/kmsg 
此檔案用來儲存由核心輸出的資訊,通常由/sbin/klogd或/bin/dmsg等程式使用,不要試圖使用檢視命令開啟此檔案; 

2.18、/proc/loadavg 
儲存關於CPU和磁碟I/O的負載平均值,其前三列分別表示每1秒鐘、每5秒鐘及每15秒的負載平均值,類似於uptime命令輸出的相關資訊;第四列是由斜線隔開的兩個數值,前者表示當前正由核心排程的實體(程式和執行緒)的數目,後者表示系統當前存活的核心排程實體的數目;第五列表示此檔案被檢視前最近一個由核心建立的程式的PID; 
[root@rhel5 ~]# more /proc/loadavg 
0.45 0.12 0.04 4/125 5549 

[root@rhel5 ~]# uptime 
06:00:54 up  1:06,  3 users,  load average: 0.45, 0.12, 0.04 


2.19、/proc/locks 
儲存當前由核心鎖定的檔案的相關資訊,包含核心內部的除錯資料;每個鎖定佔據一行,且具有一個惟一的編號;如下輸出資訊中每行的第二列表示當前鎖定使用的鎖定類別,POSIX表示目前較新型別的檔案鎖,由lockf系統呼叫產生,FLOCK是傳統的UNIX檔案鎖,由flock系統呼叫產生;第三列也通常由兩種型別,ADVISORY表示不允許其他使用者鎖定此檔案,但允許讀取,MANDATORY表示此檔案鎖定期間不允許其他使用者任何形式的訪問; 
[root@rhel5 ~]# more /proc/locks 
1: POSIX  ADVISORY  WRITE 4904 fd:00:4325393 0 EOF 
2: POSIX  ADVISORY  WRITE 4550 fd:00:2066539 0 EOF 
3: FLOCK  ADVISORY  WRITE 4497 fd:00:2066533 0 EOF 


2.20、/proc/mdstat 
儲存RAID相關的多塊磁碟的當前狀態資訊,在沒有使用RAID機器上,其顯示為如下狀態: 
[root@rhel5 ~]# less /proc/mdstat 
Personalities : 
unused devices: <none> 


2.21、/proc/meminfo 
系統中關於當前記憶體的利用狀況等的資訊,常由free命令使用;可以使用檔案檢視命令直接讀取此檔案,其內容顯示為兩列,前者為統計屬性,後者為對應的值; 
[root@rhel5 ~]# less /proc/meminfo 
MemTotal:       515492 kB 
MemFree:          8452 kB 
Buffers:         19724 kB 
Cached:         376400 kB 
SwapCached:          4 kB 
…………


2.22、/proc/mounts 
在核心2.4.29版本以前,此檔案的內容為系統當前掛載的所有檔案系統,在2.4.19以後的核心中引進了每個程式使用獨立掛載名稱空間的方式,此檔案則隨之變成了指向/proc/self/mounts(每個程式自身掛載名稱空間中的所有掛載點列表)檔案的符號連結;/proc/self是一個獨特的目錄,後文中會對此目錄進行介紹; 
[root@rhel5 ~]# ll /proc |grep mounts 
lrwxrwxrwx  1 root      root             11 Feb  8 06:43 mounts -> self/mounts 


如下所示,其中第一列表示掛載的裝置,第二列表示在當前目錄樹中的掛載點,第三點表示當前檔案系統的型別,第四列表示掛載屬性(ro或者rw),第五列和第六列用來匹配/etc/mtab檔案中的轉儲(dump)屬性; 

[root@rhel5 ~]# more /proc/mounts 
rootfs / rootfs rw 0 0 
/dev/root / ext3 rw,data=ordered 0 0 
/dev /dev tmpfs rw 0 0 
/proc /proc proc rw 0 0 
/sys /sys sysfs rw 0 0 
/proc/bus/usb /proc/bus/usb usbfs rw 0 0 
…………


2.23、/proc/modules 
當前裝入核心的所有模組名稱列表,可以由lsmod命令使用,也可以直接檢視;如下所示,其中第一列表示模組名,第二列表示此模組佔用記憶體空間大小,第三列表示此模組有多少例項被裝入,第四列表示此模組依賴於其它哪些模組,第五列表示此模組的裝載狀態(Live:已經裝入;Loading:正在裝入;Unloading:正在解除安裝),第六列表示此模組在核心記憶體(kernel memory)中的偏移量; 
[root@rhel5 ~]# more /proc/modules 
autofs4 24517 2 - Live 0xe09f7000 
hidp 23105 2 - Live 0xe0a06000 
rfcomm 42457 0 - Live 0xe0ab3000 
l2cap 29505 10 hidp,rfcomm, Live 0xe0aaa000 
…………


2.24、/proc/partitions 
塊裝置每個分割槽的主裝置號(major)和次裝置號(minor)等資訊,同時包括每個分割槽所包含的塊(block)數目(如下面輸出中第三列所示);
[root@rhel5 ~]# more /proc/partitions 
major minor  #blocks  name 

   8     0   20971520 sda 
   8     1     104391 sda1 
   8     2    6907950 sda2 
   8     3    5630782 sda3 
   8     4          1 sda4 
   8     5    3582463 sda5 


2.25、/proc/pci 
核心初始化時發現的所有PCI裝置及其配置資訊列表,其配置資訊多為某PCI裝置相關IRQ資訊,可讀性不高,可以用“/sbin/lspci –vb”命令獲得較易理解的相關資訊;在2.6核心以後,此檔案已為/proc/bus/pci目錄及其下的檔案代替; 

2.26、/proc/slabinfo 
在核心中頻繁使用的物件(如inode、dentry等)都有自己的cache,即slab pool,而/proc/slabinfo檔案列出了這些物件相關slap的資訊;詳情可以參見核心文件中slapinfo的手冊頁; 
[root@rhel5 ~]# more /proc/slabinfo 
slabinfo - version: 2.1 
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <ac 
tive_slabs> <num_slabs> <sharedavail> 
rpc_buffers            8      8   2048    2    1 : tunables   24   12    8 : slabdata      4      4      0 
rpc_tasks              8     20    192   20    1 : tunables  120   60    8 : slabdata      1      1      0 
rpc_inode_cache        6      9    448    9    1 : tunables   54   27    8 : slabdata      1      1      0 
………… 
………… 
…………


2.27、/proc/stat 
實時追蹤自系統上次啟動以來的多種統計資訊;如下所示,其中, 
“cpu”行後的八個值分別表示以1/100(jiffies)秒為單位的統計值(包括系統執行於使用者模式、低優先順序使用者模式,運系統模式、空閒模式、I/O等待模式的時間等); 
“intr”行給出中斷的資訊,第一個為自系統啟動以來,發生的所有的中斷的次數;然後每個數對應一個特定的中斷自系統啟動以來所發生的次數; 
“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。 
“btime”給出了從系統啟動到現在為止的時間,單位為秒; 
“processes (total_forks) 自系統啟動以來所建立的任務的個數目; 
“procs_running”:當前執行佇列的任務的數目; 
“procs_blocked”:當前被阻塞的任務的數目; 
[root@rhel5 ~]# more /proc/stat 
cpu  2751 26 5771 266413 2555 99 411 0 
cpu0 2751 26 5771 266413 2555 99 411 0 
intr 2810179 2780489 67 0 3 3 0 5 0 1 0 0 0 1707 0 0 9620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12781 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
ctxt 427300 
btime 1234084100 
processes 3491 
procs_running 1 
procs_blocked 0 


2.28、/proc/swaps 
當前系統上的交換分割槽及其空間利用資訊,如果有多個交換分割槽的話,則會每個交換分割槽的資訊分別儲存於/proc/swap目錄中的單獨檔案中,而其優先順序數字越低,被使用到的可能性越大;下面是作者系統中只有一個交換分割槽時的輸出資訊; 
[root@rhel5 ~]# more /proc/swaps 
Filename                                Type            Size    Used    Priority 
/dev/sda8                               partition       642560  0       -1 


2.29、/proc/uptime 
系統上次啟動以來的執行時間,如下所示,其第一個數字表示系統執行時間,第二個數字表示系統空閒時間,單位是秒; 
[root@rhel5 ~]# more /proc/uptime 
3809.86 3714.13 


2.30、/proc/version 
當前系統執行的核心版本號,在作者的RHEL5.3上還會顯示系統安裝的gcc版本,如下所示; 
[root@rhel5 ~]# more /proc/version 
Linux version 2.6.18-128.el5 (mockbuild@hs20-bc1-5.build.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Wed Dec 17 11:42:39 EST 2008 


2.31、/proc/vmstat 
當前系統虛擬記憶體的多種統計資料,資訊量可能會比較大,這因系統而有所不同,可讀性較好;下面為作者機器上輸出資訊的一個片段;(2.6以後的核心支援此檔案) 
[root@rhel5 ~]# more /proc/vmstat 
nr_anon_pages 22270 
nr_mapped 8542 
nr_file_pages 47706 
nr_slab 4720 
nr_page_table_pages 897 
nr_dirty 21 
nr_writeback 0 
………… 


2.32、/proc/zoneinfo 
記憶體區域(zone)的詳細資訊列表,資訊量較大,下面列出的是一個輸出片段: 
[root@rhel5 ~]# more /proc/zoneinfo 
Node 0, zone      DMA 
  pages free     1208 
        min      28 
        low      35 
        high     42 
        active   439 
        inactive 1139 
        scanned  0 (a: 7 i: 30) 
        spanned  4096 
        present  4096 
    nr_anon_pages 192 
    nr_mapped    141 
    nr_file_pages 1385 
    nr_slab      253 
    nr_page_table_pages 2 
    nr_dirty     523 
    nr_writeback 0 
    nr_unstable  0 
    nr_bounce    0 
        protection: (0, 0, 296, 296) 
  pagesets 
  all_unreclaimable: 0 
  prev_priority:     12 
  start_pfn:         0 
…………


三、/proc/sys目錄詳解 

與 /proc下其它檔案的“只讀”屬性不同的是,管理員可對/proc/sys子目錄中的許多檔案內容進行修改以更改核心的執行特性,事先可以使用“ls -l”命令檢視某檔案是否“可寫入”。寫入操作通常使用類似於“echo  DATA > /path/to/your/filename”的格式進行。需要注意的是,即使檔案可寫,其一般也不可以使用編輯器進行編輯。 

3.1、/proc/sys/debug 子目錄 
此目錄通常是一空目錄; 

3.2、/proc/sys/dev 子目錄 
為系統上特殊裝置提供引數資訊檔案的目錄,其不同裝置的資訊檔案分別儲存於不同的子目錄中,如大多數系統上都會具有的/proc/sys/dev /cdrom和/proc/sys/dev/raid(如果核心編譯時開啟了支援raid的功能) 目錄,其記憶體儲的通常是系統上cdrom和raid的相關引數資訊檔案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1761498/,如需轉載,請註明出處,否則將追究法律責任。

相關文章