深入理解linux系統下proc文件系統內容

另外,可以參考這個http://www.centos.org/docs/5/html/5.1/Deployment_Guide/ch-proc.html

  • 內容摘要:Linux系統上的/proc目錄是一種文件系統,即proc文件系統。?

Linux系統上的/proc目錄是一種文件系統,即proc文件系統。與其它常見的文件系統不同的是,/proc是一種偽文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關系統硬件及當前正在運行進程的信息,甚至可以通過更改其中某些文件來改變內核的運行狀態。 ?


基于/proc文件系統如上所述的特殊性,其內的文件也常被稱作虛擬文件,并具有一些獨特的特點。例如,其中有些文件雖然使用查看命令查看時會返回大量信息,但文件本身的大小卻會顯示為0字節。此外,這些特殊文件中大多數文件的時間及日期屬性通常為當前系統時間和日期,這跟它們隨時會被刷新(存儲于RAM中)有關。 ?


為了查看及使用上的方便,這些文件通常會按照相關性進行分類存儲于不同的目錄甚至子目錄中,如/proc/scsi目錄中存儲的就是當前系統上所有SCSI設備的相關信息,/proc/N中存儲的則是系統當前正在運行的進程的相關信息,其中N為正在運行的進程(可以想象得到,在某進程結束后其相關目錄則會消失)。 ?


大多數虛擬文件可以使用文件查看命令如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 ?



1.1cmdline — 啟動當前進程的完整命令,但僵尸進程目錄中的此文件不包含任何信息; ?

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

/usr/sbin/saslauthd ?


1.2cwd — 指向當前進程運行目錄的一個符號鏈接; ?


1.3environ — 當前進程的環境變量列表,彼此間用空字符(NULL)隔開;變量用大寫字母表示,其值用小寫字母表示; ?

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

TERM=linuxauthd ?


1.4exe — 指向啟動當前進程的可執行文件(完整路徑)的符號鏈接,通過/proc/N/exe可以啟動當前進程的一個拷貝; ?


1.5fd — 這是個目錄,包含當前進程打開的每一個文件的文件描述符(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.6limits — 當前進程所使用的每一個受限資源的軟限制、硬限制和管理單元;此文件僅可由實際啟動當前進程的UID用戶讀取;(2.6.24以后的內核版本支持此功能); ?


1.7maps — 當前進程關聯到的每個可執行文件和庫文件在內存中的映射區域及其訪問權限所組成的列表; ?

[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.8mem — 當前進程所占用的內存空間,由openreadlseek等系統調用使用,不能被用戶讀取; ?


1.9root — 指向當前進程運行根目錄的符號鏈接;在UnixLinux系統上,通常采用chroot命令使每個進程運行于獨立的根目錄; ?


1.10stat — 當前進程的狀態信息,包含一系統格式化后的數據列,可讀性差,通常由ps命令使用; ?


1.11statm — 當前進程占用內存的狀態信息,通常以頁面page)表示; ?


1.12status — 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 ?

………… ?



1.13task — 目錄文件,包含由當前進程所運行的每一個線程的相關信息,每個線程的相關信息文件均保存在一個由線程號(tid)命名的目錄中,這類似于其內容類似于每個進程目錄中的內容;(內核2.6版本以后支持此功能) ?


二、/proc目錄下常見的文件介紹 ?


2.1/proc/apm ?

高級電源管理(APM)版本信息及電池相關狀態信息,通常由apm命令使用; ?


2.2/proc/buddyinfo ?

用于診斷內存碎片問題的相關信息文件; ?


2.3/proc/cmdline ?

在啟動時傳遞至內核的相關參數信息,這些信息通常由lilogrub等啟動管理工具進行傳遞; ?

[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 ?

X86X86_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

http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-iomem.html


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?

在內核中頻繁使用的對象(如inodedentry等)都有自己的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/100jiffies)秒為單位的統計值(包括系統運行于用戶模式、低優先級用戶模式,運系統模式、空閑模式、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的功能) 目錄,其內存儲的通常是系統上cdromraid的相關參數信息文件。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383290.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383290.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383290.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++中的異常--1(基本概念, c語言中處理異常,c++中處理異常,異常的基本使用,棧解旋)

異常基本概念 異常處理就是處理程序中的錯誤&#xff0c;所謂錯誤是指在程序運行的過程中發生的一些異常事件&#xff08;如&#xff1a;除0退出&#xff0c;數組下標越界&#xff0c;所要讀取的文件不存在&#xff0c;空指針&#xff0c;內存不足等等&#xff09; c語言中處…

RGB、YUV和YCbCr

之前對RGB、YUV和YCbCr一直沒有清晰的理解和認識&#xff0c;今天打算做一個小結&#xff0c;結合網上的文章談談自己的看法&#xff0c;也希望有機會看到這篇文章的人能指點一二&#xff0c;相互交流&#xff0c;共同進步。 首先要說明&#xff0c;上述的RGB、YUV和YCbCr都是人…

c++中的異常---2(異常接口聲明,異常變量的生命周期,異常的多態使用)

異常接口聲明 為了加強程序的可讀性&#xff0c;可以在函數聲明中列出可能拋出異常的所有類型&#xff0c;例如&#xff1a;void func() throw(A,B,C);這個函數func能夠且只能拋出類型A,B,C及其子類的異常如果在函數聲明中沒有包含異常接口聲明&#xff0c;則此函數可以拋任何…

c++中的異常---3(系統標準異常庫,編寫自己異常類)

系統標準異常庫 #incldue out_of_range 等… #include<iostream>#include<string>using namespace std;//系統提供標準異常#include<stdexcept>class Person{public:Person(string name, int age){this->m_Name name;//年齡做檢測if (age<0 || age&g…

H.264中IDR幀和I幀區別

IDR&#xff08;Instantaneous Decoding Refresh&#xff09;--即時解碼刷新。I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便&#xff0c;要首個I幀和其他I幀區別開&#xff0c;所以才把第一個首個I幀叫IDR&#xff0c;這樣就方便控制編碼和解碼…

c++中的IO流(流的概念和流類庫的結構,標準的輸入輸出流)

流的概念和流類庫的結構 程序的輸入指的是從輸入文件將數據傳送給程序&#xff0c;程序的輸出指的是從程序將數據傳送給輸出文件 c輸入輸出包含以下三個方面的內容 對系統指定的標準設備的輸入輸出。即從鍵盤輸入數據&#xff0c;輸出到顯示器屏幕&#xff0c;這種輸入輸出稱…

MTD應用學習札記

今天做升級方案用到了mtd-utils中的flash_eraseall和flash_cp兩個工具&#xff0c;在進行方案驗證的時候&#xff0c;遭遇到各種不解和疑惑&#xff0c;因對MTD的原理不熟悉&#xff0c;所以只能多次嘗試&#xff0c;雖然最后把方案搞定了&#xff0c;不過覺得MTD中的mtd和mtdb…

c++中的文件讀寫的操作

寫文件 ofstreamopen指定打開方式isopen判斷是否打開成功ifs<<“數據”ofs.close&#xff08;&#xff09; 讀文件 ifstream ifs 指定打開方式ios::in isopen判斷是否打開成功 讀取有三種方式 #include<iostream>using namespace std;//文件讀寫頭文件#incl…

udhcpc命令

由于要使用網絡通訊&#xff0c;所以不可避免的要用到dhcp。理想的網絡通訊方式是下面3種都要支持: 1,接入已有網絡。這便要求可以作為dhcp客戶端。 2,作為DHCP服務器&#xff0c;動態分配IP。 3,指定固定IP 第3種情況沒有什么好說的&#xff0c;簡單說下前2種情況。 使用步驟&…

c++的STL--1概念通述

STL的概念 什么是STL? STL(standard template libaray-標準模板庫)&#xff1a;是C標準庫的重要組成部分&#xff0c;不僅是一個可復用的組件庫&#xff0c;而且 是一個包羅數據結構與算法的軟件框架。 STL從廣義上分為&#xff1a;容器(container)&#xff0c;算法(algorit…

socket通信和異常處理札記

Linux socket通信出現CLOSE_WAIT狀態的原因與解決方法 這個問題之前沒有怎么留意過&#xff0c;是最近在面試過程中遇到的一個問題&#xff0c;面了兩家公司&#xff0c;兩家公司竟然都面到到了這個問題&#xff0c;不得不使我開始關注這個問題。說起CLOSE_WAIT狀態&#xff0c…

mac 下使用wireshark監聽網絡上的數據

分三個步驟&#xff1a; 1.wireshark安裝 wireshark運行需要mac上安裝X11&#xff0c;mac 10.8的系統上默認是沒有X11的。先去http://xquartz.macosforge.org/landing/下載最新的 xquartz安裝&#xff0c;安裝好就有X11了。 wireshark的下載&#xff0c;網…

c++的vector容器

vector容器概念 vector是表示可變大小數組的序列容器。就像數組一樣&#xff0c;vector也采用的連續存儲空間來存儲元素。也就是意味著可以采用下標對vector的元素 進行訪問&#xff0c;和數組一樣高效。但是又不像數組&#xff0c;它的大小是可以動態改變的&#xff0c;而且它…

嵌入式Linux下3G USB Modem的使用

busybox中需打開&#xff1a;wc&#xff0c;pidof&#xff1b; busybox中shell下打開getopts 百度搜索“Serial connection established. using channel 1”包含大量問題解答 2013-12-22 0個評論 收藏 我要投稿 一.ARM-Linux ARM-Linux-2.6.17 3G USB Modem:hu…

新一代數據庫技術

新一代非關系型數據庫有以下5個主要類型&#xff1a; 面向文件存儲&#xff1a;適用于存儲海量文件&#xff0c;代表產品MongoDb 列存儲(wide column store/column-family)數據庫&#xff1a;快速查找相關數據&#xff0c;相關數據被放在同一列中&#xff0c;代表產品Cassandra…

c++中stack容器

Stack 簡介 stack 是堆棧容器&#xff0c;是一種“先進后出”的容器。stack 是簡單地裝飾 deque 容器而成為另外的一種容器。#include stack沒有迭代器 Stack所有元素的進出都必須符合“先進后出”的條件&#xff0c;只有stack頂端的元素&#xff0c;才有機會被外界取用&am…

詳解udev

如果你使用Linux比較長時間了&#xff0c;那你就知道&#xff0c;在對待設備文件這塊&#xff0c;Linux改變了幾次策略。在Linux早期&#xff0c;設備文件僅僅是是一些帶有適當的屬性集的普通文件&#xff0c;它由mknod命令創建&#xff0c;文件存放在/dev目錄下。后來&#xf…

c++中的queue容器

queue容器 隊列是一種容器適配器&#xff0c;專門用于在FIFO上下文(先進先出)中操作&#xff0c;其中從容器一端插入元素&#xff0c;另一端 提取元素。 隊列作為容器適配器實現&#xff0c;容器適配器即將特定容器類封裝作為其底層容器類&#xff0c;queue提供一組特定的 成員…

NAU8810相關問題

1.ADC和DAC有什么區別&#xff1f; 不&#xff0c;這不是一個“愚弄人的”問題或腦筋急轉彎&#xff0c;并且我認為我們的讀者都非常清楚模數轉換器(ADC)及數模轉換器(DAC)的基本功能。 但在如何使用這些轉換器以及人們的認知度上也存在著哲理性區別。用最簡單的話講&#xff0…

c++中list容器

list概念 list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器&#xff0c;并且該容器可以前后雙向迭代。list的底層是雙向鏈表結構&#xff0c;雙向鏈表中每個元素存儲在互不相關的獨立節點中&#xff0c;在節點中通過指針指向 其前一個元素和后一個元素。list與for…