linux 中/proc 详解
proc 文件系統(tǒng)
?
在Linux中有額外的機制可以為內(nèi)核和內(nèi)核模塊將信息發(fā)送給進程-- /proc 文件系統(tǒng)。最初設(shè)計的目的是允許更方便的對進程信息進行訪問(因此得名),現(xiàn)在它被每一個有有趣的東西報告的內(nèi)核使用,例如/proc/modules 有模塊的列表/proc/meminfo 有內(nèi)存使用的統(tǒng)計表。
?
使用proc 文件系統(tǒng)的方法和使用設(shè)備驅(qū)動程序非常相似--創(chuàng)建一個/proc 文件需要的所有信息的結(jié)構(gòu),包括任何處理函數(shù)的指針(在我們的例子中只有一個,當某人試圖從/proc 文件讀時調(diào)用的那一個)。然后,init_module 在內(nèi)核中登記該結(jié)構(gòu)而cleanup_module 注銷它。
?
我們使用proc_register_dynamic(這是在2.0 版中的情況,在2.2 版中如果我們將節(jié)點設(shè)置為0系統(tǒng)將自動為我們做到) 的原因是我們不想預先決定我們的文件的節(jié)點數(shù)字,而是為防止沖突而由內(nèi)核決定它。通常的文件系統(tǒng)存在于磁盤上而不是內(nèi)存中(/proc 在內(nèi)存中),在這中情況下,節(jié)點數(shù)是是指向文件的索引節(jié)點所在的磁盤位置的指針。節(jié)點包含文件的信息(例如文件的存取權(quán)限)和指向磁盤位置或文件數(shù)據(jù)可以被找到的幾個位置的指針。
?
因為當文件被打開或關(guān)閉的時候不能得到調(diào)用,所以在這個模塊中沒有地方放置MOD_INC_USE_COUNT 和MOD_DEC_USE_COUNT,并且,如果文件被打開隨后模塊被移除,我們沒有辦法避免后果。在下一章我們會看到一個艱難的但更靈活的可以處理/proc文件的實現(xiàn)方式,它也可以讓我們防止那個問題。
?
http://www.2cto.com/os/201202/119552.html
?
Linux 內(nèi)核提供了一種通過/proc 文件系統(tǒng),在運行時訪問內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變內(nèi)核設(shè)置的機制。盡管在各種硬件平臺上的Linux 系統(tǒng)的/proc 文件系統(tǒng)的基本概念都是相同的,但本文只討論基于intel x86 架構(gòu)的Linux /proc 文件系統(tǒng)。
?
_________________ _________________ _________________
?
/proc --- 一個虛擬文件系統(tǒng)
?
/proc 文件系統(tǒng)是一種內(nèi)核和內(nèi)核模塊用來向進程(process) 發(fā)送信息的機制(所以叫做/proc)。這個偽文件系統(tǒng)讓你可以和內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)進行交互,獲取 有關(guān)進程的有用信息,在運行中(on the fly) 改變設(shè)置(通過改變內(nèi)核參數(shù))。 與其他文件系統(tǒng)不同,/proc 存在于內(nèi)存之中而不是硬盤上。如果你察看文件/proc/mounts (和mount 命令一樣列出所有已經(jīng)加載的文件系統(tǒng)),你會看到其中 一行是這樣的:
?
grep proc /proc/mounts
/proc /proc proc rw 0 0
?
/proc 由內(nèi)核控制,沒有承載/proc 的設(shè)備。因為/proc 主要存放由內(nèi)核控制的狀態(tài)信息,所以大部分這些信息的邏輯位置位于內(nèi)核控制的內(nèi)存。對/proc 進行一次'ls -l' 可以看到大部分文件都是0 字節(jié)大的;不過察看這些文件的時候,確實可以看到一些信息。這怎么可能?這是因為/proc 文件系統(tǒng)和其他常規(guī)的文件系統(tǒng)一樣把自己注冊到虛擬文件系統(tǒng)層(VFS) 了。然而,直到當VFS 調(diào)用它,請求文件、目錄的i-node 的時候,/proc 文件系統(tǒng)才根據(jù)內(nèi)核中的信息建立相應的文件和目錄。
?
加載proc 文件系統(tǒng)
?
如果系統(tǒng)中還沒有加載proc 文件系統(tǒng),可以通過如下命令加載proc 文件系統(tǒng):
?
mount -t proc proc /proc
上述命令將成功加載你的proc 文件系統(tǒng)。更多細節(jié)請閱讀mount 命令的man page。
?
察看/proc 的文件
?
/proc 的文件可以用于訪問有關(guān)內(nèi)核的狀態(tài)、計算機的屬性、正在運行的進程的狀態(tài)等信息。大部分/proc 中的文件和目錄提供系統(tǒng)物理環(huán)境最新的信息。盡管/proc 中的文件是虛擬的,但它們?nèi)钥梢允褂萌魏挝募庉嬈骰蛳?#39;more', 'less'或'cat'這樣的程序來查看。當編輯程序試圖打開一個虛擬文件時,這個文件就通過內(nèi)核中的信息被憑空地(on the fly) 創(chuàng)建了。這是一些我從我的系統(tǒng)中得到的一些有趣結(jié)果:
?
$ ls -l /proc/cpuinfo
-r--r--r-- 1 root root 0 Dec 25 11:01 /proc/cpuinfo
?
$ file /proc/cpuinfo
/proc/cpuinfo: empty
?
$ cat /proc/cpuinfo
?
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 1000.119
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr xmm
bogomips : 1998.85
?
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 1000.119
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr xmm
bogomips : 1992.29
?
這是一個從雙CPU 的系統(tǒng)中得到的結(jié)果,上述大部分的信息十分清楚地給出了這個系統(tǒng)的有用的硬件信息。有些/proc 的文件是經(jīng)過編碼的,不同的工具可以被用來解釋這些編碼過的信息并輸出成可讀的形式。這樣的工具包括:'top', 'ps', 'apm' 等。
?
得到有用的系統(tǒng)/內(nèi)核信息
?
proc 文件系統(tǒng)可以被用于收集有用的關(guān)于系統(tǒng)和運行中的內(nèi)核的信息。下面是一些重要的文件:
?
* /proc/cpuinfo - CPU 的信息(型號, 家族, 緩存大小等)
* /proc/meminfo - 物理內(nèi)存、交換空間等的信息
* /proc/mounts - 已加載的文件系統(tǒng)的列表
* /proc/devices - 可用設(shè)備的列表
* /proc/filesystems - 被支持的文件系統(tǒng)
* /proc/modules - 已加載的模塊
* /proc/version - 內(nèi)核版本
* /proc/cmdline - 系統(tǒng)啟動時輸入的內(nèi)核命令行參數(shù)
?
proc 中的文件遠不止上面列出的這么多。想要進一步了解的讀者可以對/proc 的每一個文件都'more'一下或讀參考文獻[1]獲取更多的有關(guān)/proc 目錄中的文件的信息。我建議使用'more'而不是'cat',除非你知道這個文件很小,因為有些文件(比如kcore) 可能會非常長。
?
有關(guān)運行中的進程的信息
?
/proc 文件系統(tǒng)可以用于獲取運行中的進程的信息。在/proc 中有一些編號的子目錄。每個編號的目錄對應一個進程id (PID)。這樣,每一個運行中的進程/proc 中都有一個用它的PID 命名的目錄。這些子目錄中包含可以提供有關(guān)進程的狀態(tài)和環(huán)境的重要細節(jié)信息的文件。讓我們試著查找一個運行中的進程。
?
$ ps -aef | grep mozilla
root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla
?
上述命令顯示有一個正在運行的mozilla 進程的PID 是32558。相對應的,/proc 中應該有一個名叫32558 的目錄
?
$ ls -l /proc/32558
total 0
-r--r--r-- 1 root root 0 Dec 25 22:59 cmdline
-r--r--r-- 1 root root 0 Dec 25 22:59 cpu
lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd -> /proc/
-r-------- 1 root root 0 Dec 25 22:59 environ
lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe -> /usr/bin/mozilla*
dr-x------ 2 root root 0 Dec 25 22:59 fd/
-r--r--r-- 1 root root 0 Dec 25 22:59 maps
-rw------- 1 root root 0 Dec 25 22:59 mem
-r--r--r-- 1 root root 0 Dec 25 22:59 mounts
lrwxrwxrwx 1 root root 0 Dec 25 22:59 root -> //
-r--r--r-- 1 root root 0 Dec 25 22:59 stat
-r--r--r-- 1 root root 0 Dec 25 22:59 statm
-r--r--r-- 1 root root 0 Dec 25 22:59 status
?
文件"cmdline" 包含啟動進程時調(diào)用的命令行。"envir" 進程的環(huán)境變兩。"status" 是進程的狀態(tài)信息,包括啟動進程的用戶的用戶ID (UID) 和組ID(GID) ,父進程ID (PPID),還有進程當前的狀態(tài),比如"Sleelping"和"Running"。每個進程的目錄都有幾個符號鏈接,"cwd"是指向進程當前工作目錄的符號鏈接,"exe"指向運行的進程的可執(zhí)行程序,"root"指向被這個進程看作是根目錄的目錄(通常是"/")。目錄"fd"包含指向進程使用的文件描述符的鏈接。"cpu"僅在運行SMP 內(nèi)核時出現(xiàn),里面是按CPU 劃分的進程時間。
?
/proc/self 是一個有趣的子目錄,它使得程序可以方便地使用/proc 查找本進程地信息。/proc/self 是一個鏈接到/proc 中訪問/proc 的進程所對應的PID 的目錄的符號鏈接。
?
通過/proc 與內(nèi)核交互
?
上面討論的大部分/proc 的文件是只讀的。而實際上/proc 文件系統(tǒng)通過/proc 中可讀寫的文件提供了對內(nèi)核的交互機制。寫這些文件可以改變內(nèi)核的狀態(tài),因而要慎重改動這些文件。/proc/sys 目錄存放所有可讀寫的文件的目錄,可以被用于改變內(nèi)核行為。
?
/proc/sys/kernel - 這個目錄包含反通用內(nèi)核行為的信息。/proc/sys/kernel/{domainname, hostname} 存放著機器/網(wǎng)絡的域名和主機名。這些文件可以用于修改這些名字。
?
$ hostname
machinename.domainname.com
?
$ cat /proc/sys/kernel/domainname
domainname.com
?
$ cat /proc/sys/kernel/hostname
machinename
?
$ echo "new-machinename" > /proc/sys/kernel/hostname
?
$ hostname
new-machinename.domainname.com
?
這樣,通過修改/proc 文件系統(tǒng)中的文件,我們可以修改主機名。很多其他可配置的文件存在于/proc/sys/kernel/。這里不可能列出所有這些文件,讀者可以自己去這個目錄查看以得到更多細節(jié)信息。
另一個可配置的目錄是/proc/sys/net。這個目錄中的文件可以用于修改機器/網(wǎng)絡的網(wǎng)絡屬性。比如,簡單修改一個文件,你可以在網(wǎng)絡上癮藏匿的計算機。
?
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
?
這將在網(wǎng)絡上癮藏你的機器,因為它不響應icmp_echo。主機將不會響應其他主機發(fā)出的ping 查詢。
?
$ ping machinename.domainname.com
no answer from machinename.domainname.com
?
要改回缺省設(shè)置,只要
?
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
?
/proc/sys 下還有許多其它可以用于改變內(nèi)核屬性。讀者可以通過參考文獻[1], [2] 獲取更多信息。
?
結(jié)論
?
/proc 文件系統(tǒng)提供了一個基于文件的Linux 內(nèi)部接口。它可以用于確定系統(tǒng)的各種不同設(shè)備和進程的狀態(tài)。對他們進行配置。因而,理解和應用有關(guān)這個文件系統(tǒng)的知識是理解你的Linux 系統(tǒng)的關(guān)鍵。
?
原文:http://www.sudu.cn/info/html/edu/20070101/292381.html
?
什么是proc文件系統(tǒng)
proc文件系統(tǒng)是一個偽文件系統(tǒng),它只存在內(nèi)存當中,而不占用外存空間。它以文件系統(tǒng)的方式為訪問系統(tǒng)內(nèi)核數(shù)據(jù)的操作提供接口。用戶和應用程序可以通過proc得到系統(tǒng)的信息,并可以改變內(nèi)核的某些參數(shù)。由于系統(tǒng)的信息,如進程,是動態(tài)改變的,所以用戶或應用程序讀取proc文件時,proc文件系統(tǒng)是動態(tài)從系統(tǒng)內(nèi)核讀出所需信息并提交的。它的目錄結(jié)構(gòu)如下:
目錄名稱 目錄內(nèi)容
apm 高級電源管理信息
cmdline 內(nèi)核命令行
Cpuinfo 關(guān)于Cpu信息
Devices 可以用到的設(shè)備(塊設(shè)備/字符設(shè)備)
Dma 使用的DMA通道
Filesystems 支持的文件系統(tǒng)
Interrupts 中斷的使用
Ioports I/O端口的使用
Kcore 內(nèi)核核心印象
Kmsg 內(nèi)核消息
Ksyms 內(nèi)核符號表
Loadavg 負載均衡
Locks 內(nèi)核鎖
Meminfo 內(nèi)存信息
Misc 雜項
Modules 加載模塊列表
Mounts 加載的文件系統(tǒng)
Partitions 系統(tǒng)識別的分區(qū)表
Rtc 實時時鐘
Slabinfo Slab池信息
Stat 全面統(tǒng)計狀態(tài)表
Swaps 對換空間的利用情況
Version 內(nèi)核版本
Uptime 系統(tǒng)正常運行時間
并不是所有這些目錄在你的系統(tǒng)中都有,這取決于你的內(nèi)核配置和裝載的模塊。另外,在/proc下還有三個很重要的目錄:net,scsi和sys。Sys目錄是可寫的,可以通過它來訪問或修改內(nèi)核的參數(shù)(見下一部分),而net和scsi則依賴于內(nèi)核配置。例如,如果系統(tǒng)不支持scsi,則scsi 目錄不存在。
除了以上介紹的這些,還有的是一些以數(shù)字命名的目錄,它們是進程目錄。系統(tǒng)中當前運行的每一個進程都有對應的一個目錄在/proc下,以進程的PID號為目錄名,它們是讀取進程信息的接口。而self目錄則是讀取進程本身的信息接口,是一個link。Proc文件系統(tǒng)的名字就是由之而起。進程目錄的結(jié)構(gòu)如下:
目錄名稱 目錄內(nèi)容
Cmdline 命令行參數(shù)
Environ 環(huán)境變量值
Fd 一個包含所有文件描述符的目錄
Mem 進程的內(nèi)存被利用情況
Stat 進程狀態(tài)
Status 進程當前狀態(tài),以可讀的方式顯示出來
Cwd 當前工作目錄的鏈接
Exe 指向該進程的執(zhí)行命令文件
Maps 內(nèi)存映象
Statm 進程內(nèi)存狀態(tài)信息
Root 鏈接此進程的root目錄
用戶如果要查看系統(tǒng)信息,可以用cat命令。例如:
# cat /proc/interrupts
CPU0
0: 8728810 XT-PIC timer
1: 8Array5 XT-PIC keyboard
2: 0 XT-PIC cascade
3: 5316Array5 XT-PIC aha152x
4: 2014133 XT-PIC serial
5: 44401 XT-PIC pcnet_cs
8: 2 XT-PIC rtc
11: 8 XT-PIC i82365
12: 182Array18 XT-PIC Mouse
13: 1 XT-PIC fpu PS/2
14: 1232265 XT-PIC ide0
15: 7 XT-PIC ide1
NMI: 0
用戶還可以實現(xiàn)修改內(nèi)核參數(shù)。在/proc文件系統(tǒng)中有一個有趣的目錄:/proc/sys。它不僅提供了內(nèi)核信息,而且可以通過它修改內(nèi)核參數(shù),來優(yōu)化你的系統(tǒng)。但是你必須很小心,因為可能會造成系統(tǒng)崩潰。最好是先找一臺無關(guān)緊要的機子,調(diào)試成功后再應用到你的系統(tǒng)上。
要改變內(nèi)核的參數(shù),只要用vi編輯或echo參數(shù)重定向到文件中即可。下面有一個例子:
# cat /proc/sys/fs/file-max
40Array6
# echo 81Array2 > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
81Array2
如果你優(yōu)化了參數(shù),則可以把它們寫成添加到文件rc.local中,使它在系統(tǒng)啟動時自動完成修改。
/proc文件系統(tǒng)中網(wǎng)絡參數(shù)
/proc/sys/kernel
內(nèi)核共享內(nèi)存限制,默認最小為4M.兩個參數(shù)可以改成一樣.加大.
/proc/sys/kernel/shmall 40Array6
/proc/sys/kernel/shmmax 33554432
?
/proc/sys/net/ipv4/
該目錄包含的是和tcp/ip協(xié)議相關(guān)的各種參數(shù),下面我們就對這些網(wǎng)絡參數(shù)加以詳細的說明。
ip_forward 參數(shù)類型:BOOLEAN
0 - 關(guān)閉(默認值)
not 0 - 打開ip轉(zhuǎn)發(fā)
在網(wǎng)絡本地接口之間轉(zhuǎn)發(fā)數(shù)據(jù)報。該參數(shù)非常特殊,對該參數(shù)的修改將導致其它所有相關(guān)配置參數(shù)恢復其默認值(對于主機參閱RFC1122,對于路由器參見RFC1812)
/proc/sys/net/ipv4/ip_conntrack_max 65440 (默認)
ip_default_ttl 參數(shù)類型:INTEGER
默認值為64 。表示IP數(shù)據(jù)報的Time To Live值。
ip_no_pmtu_disc 參數(shù)類型:BOOLEAN
關(guān)閉路徑MTU探測,默認值為FALSE
ipfrag_high_thresh 參數(shù)類型:整型
用來組裝分段的IP包的最大內(nèi)存量。當ipfrag_high_thresh數(shù)量的內(nèi)存被分配來用來組裝IP包,則IP分片處理器將丟棄數(shù)據(jù)報直到ipfrag_low_thresh數(shù)量的內(nèi)存被用來組裝IP包。
ipfrag_low_thresh 參數(shù)類型:整型
參見ipfrag_high_thresh。
ipfrag_time 參數(shù)類型:整型
保存一個IP分片在內(nèi)存中的時間。
inet_peer_threshold 參數(shù)類型:整型
INET對端存儲器某個合適值,當超過該閥值條目將被丟棄。該閥值同樣決定生存時間以及廢物收集通過的時間間隔。條目越多?存活期越低?GC 間隔越短
inet_peer_minttl 參數(shù)類型:整型
條目的最低存活期。在重組端必須要有足夠的碎片(fragment)存活期。這個最低存活期必須保證緩沖池容積是否少于inet_peer_threshold。該值以jiffies為單位測量。
inet_peer_maxttl 參數(shù)類型:整型
條目的最大存活期。在此期限到達之后?如果緩沖池沒有耗盡壓力的話(例如?緩沖池中的條目數(shù)目非常少)?不使用的條目將會超時。該值以jiffies為單位測量。
inet_peer_gc_mintime 參數(shù)類型:整型
廢物收集(GC)通過的最短間隔。這個間隔會影響到緩沖池中內(nèi)存的高壓力。 該值以jiffies為單位測量。
inet_peer_gc_maxtime 參數(shù)類型:整型
廢物收集(GC)通過的最大間隔,這個間隔會影響到緩沖池中內(nèi)存的低壓力。 該值以jiffies為單位測量。
tcp_syn_retries 參數(shù)類型:整型
對于一個新建連接,內(nèi)核要發(fā)送多少個SYN 連接請求才決定放棄。不應該大于255,默認值是5,對應于180秒左右。
tcp_synack_retries 參數(shù)類型:整型
對于遠端的連接請求SYN,內(nèi)核會發(fā)送SYN +ACK數(shù)據(jù)報,以確認收到上一個SYN連接請求包。這是所謂的三次握手( threeway handshake)機制的第二個步驟。這里決定內(nèi)核在放棄連接之前所送出的SYN+ACK 數(shù)目。
tcp_keepalive_time 參數(shù)類型:整型
當keepalive打開的情況下,TCP發(fā)送keepalive消息的頻率,默認值是2個小時。
tcp_keepalive_probes 參數(shù)類型:整型
TCP發(fā)送keepalive探測以確定該連接已經(jīng)斷開的次數(shù),默認值是Array。
tcp_keepalive_interval 參數(shù)類型:整型
探測消息發(fā)送的頻率,乘以tcp_keepalive_probes就得到對于從開始探測以來沒有響應的連接殺除的時間。默認值為75秒,也就是沒有活動的連接將在大約11分鐘以后將被丟棄。
tcp_retries1 參數(shù)類型:整型
當出現(xiàn)可疑情況而必須向網(wǎng)絡層報告這個可疑狀況之前?需要進行多少次重試。最低的RFC 數(shù)值是3 ?這也是默認值?根據(jù)RTO的值大約在3秒- 8分鐘之間。
tcp_retries2 參數(shù)類型:整型
在丟棄激活的TCP連接之前?需要進行多少次重試。RFC1122規(guī)定,該值必須大于100秒。默認值為15,根據(jù)RTO的值來決定,相當于13-30分鐘,
tcp_orphan_retries 參數(shù)類型:整型
在近端丟棄TCP連接之前?要進行多少次重試。默認值是7 個?相當于50秒- 16分鐘?視RTO 而定。如果您的系統(tǒng)是負載很大的web服務器?那么也許需要降低該值?這類sockets 可能會耗費大量的資源。另外參的考tcp_max_orphans 。
tcp_fin_timeout 參數(shù)類型:整型
對于本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態(tài)的時間。對方可能會斷開連接或一直不結(jié)束連接或不可預料的進程死亡。默認值為60 秒。過去在2.2版本的內(nèi)核中是180 秒。您可以設(shè)置該值?但需要注意?如果您的機器為負載很重的web服務器?您可能要冒內(nèi)存被大量無效數(shù)據(jù)報填滿的風險?FIN-WAIT-2 sockets 的危險性低于FIN-WAIT-1 ?因為它們最多只吃1.5K 的內(nèi)存?但是它們存在時間更長。另外參考tcp_max_orphans。
tcp_max_tw_buckets 參數(shù)類型:整型
系統(tǒng)在同時所處理的最大timewait sockets 數(shù)目。如果超過此數(shù)的話?time-wait socket 會被立即砍除并且顯示警告信息。之所以要設(shè)定這個限制?純粹為了抵御那些簡單的DoS 攻擊?千萬不要人為的降低這個限制?不過?如果網(wǎng)絡條件需要比默認值更多?則可以提高它(或許還要增加內(nèi)存)。
tcp_tw_recycle 參數(shù)類型:布爾
打開快速TIME-WAIT sockets 回收。默認值是1。除非得到技術(shù)專家的建議或要求?請不要隨意修改這個值。
tcp_max_orphans 參數(shù)類型:整型
系統(tǒng)所能處理不屬于任何進程的TCP sockets最大數(shù)量。假如超過這個數(shù)量?那么不屬于任何進程的連接會被立即reset,并同時顯示警告信息。之所以要設(shè)定這個限制?純粹為了抵御那些簡單的DoS 攻擊?千萬不要依賴這個或是人為的降低這個限制
tcp_abort_on_overflow 參數(shù)類型:布爾
當守護進程太忙而不能接受新的連接,就象對方發(fā)送reset消息,默認值是false。這意味著當溢出的原因是因為一個偶然的猝發(fā),那么連接將恢復狀態(tài)。只有在你確信守護進程真的不能完成連接請求時才打開該選項,該選項會影響客戶的使用。
tcp_syncookies 參數(shù)類型:整型
只有在內(nèi)核編譯時選擇了CONFIG_SYNCOOKIES時才會發(fā)生作用。當出現(xiàn)syn等候隊列出現(xiàn)溢出時象對方發(fā)送syncookies。目的是為了防止syn flood攻擊。默認值是false。
注意:該選項千萬不能用于那些沒有收到攻擊的高負載服務器,如果在日志中出現(xiàn)synflood消息,但是調(diào)查發(fā)現(xiàn)沒有收到synflood攻擊,而是合法用戶的連接負載過高的原因,你應該調(diào)整其它參數(shù)來提高服務器性能。參考: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
syncookie嚴重的違背TCP協(xié)議,不允許使用TCP擴展,可能對某些服務導致嚴重的性能影響(如SMTP轉(zhuǎn)發(fā))。
tcp_stdurg 參數(shù)類型:整型
使用TCP urg pointer 字段中的主機請求解釋功能。大部份的主機都使用老舊的BSD解釋,因此如果您在Linux 打開它?或會導致不能和它們正確溝通。默認值為為?FALSE
tcp_max_syn_backlog 參數(shù)類型:整型
對于那些依然還未獲得客戶端確認的連接請求?需要保存在隊列中最大數(shù)目。對于超過128Mb 內(nèi)存的系統(tǒng)?默認值是1024 ?低于128Mb 的則為128。如果服務器經(jīng)常出現(xiàn)過載?可以嘗試增加這個數(shù)字。警告?假如您將此值設(shè)為大于1024?最好修改include/net/tcp.h 里面的TCP_SYNQ_HSIZE ?以保持TCP_SYNQ_HSIZE*16 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale? 128Mb 32768-61000
0)則系統(tǒng)將忽略所有發(fā)送給自己的ICMP ECHO請求或那些廣播地址的請求。
icmp_destunreach_rate - 整數(shù)
icmp_paramprob_rate - 整數(shù)
icmp_timeexceed_rate - 整數(shù)
icmp_echoreply_rate - 整數(shù)(not enabled per default)
限制發(fā)向特定目標的ICMP數(shù)據(jù)報的最大速率。0表示沒有任何限制,否則表示jiffies數(shù)據(jù)單位中允許發(fā)送的個數(shù)。
icmp_ignore_bogus_error_responses - 布爾類型
某些路由器違背RFC1122標準,其對廣播幀發(fā)送偽造的響應來應答。這種違背行為通常會被以告警的方式記錄在系統(tǒng)日志中。如果該選項設(shè)置為True,內(nèi)核不會記錄這種警告信息。默認值為False。
(1) Jiffie: 內(nèi)核使用的內(nèi)部時間單位,在i386系統(tǒng)上大小為1/100s,在Alpha中為1/1024S。在/usr/include/asm/param.h中的HZ定義有特定系統(tǒng)的值。
conf/interface/*:
conf/all/*是特定的,用來修改所有接口的設(shè)置,is special and changes the settings for all interfaces.
Change special settings per interface.
log_martians - 布爾類型
記錄帶有不允許的地址的數(shù)據(jù)報到內(nèi)核日志中。
accept_redirects - 布爾類型
收發(fā)接收ICMP重定向消息。對于主機來說默認為True,對于用作路由器時默認值為False。
forwarding - 布爾類型
在該接口打開轉(zhuǎn)發(fā)功能
mc_forwarding - 布爾類型
是否進行多播路由。只有內(nèi)核編譯有CONFIG_MROUTE并且有路由服務程序在運行該參數(shù)才有效。
proxy_arp - 布爾類型
打開proxy arp功能。
shared_media - 布爾類型
發(fā)送(路由器)或接收(主機) RFC1620 共享媒體重定向。覆蓋ip_secure_redirects的值。默認為True。
secure_redirects - 布爾類型
僅僅接收發(fā)給默認網(wǎng)關(guān)列表中網(wǎng)關(guān)的ICMP重定向消息,默認值是TRUE。
send_redirects - 布爾類型
如果是router,發(fā)送重定向消息,默認值是TRUE
bootp_relay - 布爾類型
接收源地址為0.b.c.d,目的地址不是本機的數(shù)據(jù)報。用來支持BOOTP轉(zhuǎn)發(fā)服務進程,該進程將捕獲并轉(zhuǎn)發(fā)該包。默認為False,目前還沒有實現(xiàn)。
accept_source_route - 布爾類型
接收帶有SRR選項的數(shù)據(jù)報。對于主機來說默認為False,對于用作路由器時默認值為True。
rp_filter 參數(shù)類型
1 - 通過反向路徑回溯進行源地址驗證(在RFC1812中定義)。對于單穴主機和stub網(wǎng)絡路由器推薦使用該選項。
0 - 不通過反向路徑回溯進行源地址驗證。
默認值為0。某些發(fā)布在啟動時自動將其打開。
/proc/sys/net/ipv4/netfilter
ip_conntrack_buckets
ip_conntrack_count
ip_conntrack_generic_timeout
ip_conntrack_icmp_timeout
ip_conntrack_log_invalid
ip_conntrack_max 65536(默認)
ip_conntrack_tcp_be_liberal
ip_conntrack_tcp_loose
ip_conntrack_tcp_max_retrans
ip_conntrack_tcp_timeout_close
ip_conntrack_tcp_timeout_close_wait
ip_conntrack_tcp_timeout_established 432000(單位為秒,5天)
ip_conntrack_tcp_timeout_fin_wait
ip_conntrack_tcp_timeout_last_ack
ip_conntrack_tcp_timeout_max_retrans
ip_conntrack_tcp_timeout_syn_recv
ip_conntrack_tcp_timeout_syn_sent
ip_conntrack_tcp_timeout_time_wait
ip_conntrack_udp_timeout
ip_conntrack_udp_timeout_stream
?
#
?
#
#
?
?
Linux Linux Linux Linux 中/proc /proc /proc /proc 目錄下文件詳解
聲明:可以自由轉(zhuǎn)載本文, 但請務必保留本文的完整性。
作者:張子堅
email:zhangzijian@163.com
說明:本文所涉及示例均在fedora core3 下得到。
--------------------------------------------------------------------------------
/proc 文件系統(tǒng)下的多種文件提供的系統(tǒng)信息不是針對某個特定進程的, 而是能夠在整個系統(tǒng)范圍的上下文
中使用。可以使用的文件隨系統(tǒng)配置的變化而變化。命令procinfo 能夠顯示基于其中某些文件的多種系統(tǒng)
信息。
以下詳細描述/proc 下的文件:
--------------------------------------------------------------------------------
/proc/cmdline 文件
這個文件給出了內(nèi)核啟動的命令行。它和用于進程的cmdline 項非常相似。
示例:
[root@localhost proc]# cat cmdline
ro root=LABEL=/ rhgb quiet
--------------------------------------------------------------------------------
/proc/cpuinfo 文件
這個文件提供了有關(guān)系統(tǒng)CPU 的多種信息。這些信息是從內(nèi)核里對CPU 的測試代碼中得到的。文件列出
了CPU 的普通型號 (386,486,586,686 等 ), 以及能得到的更多特定信息 ( 制造商, 型號和版本 ) 。 文件還包含
了以bogomips 表示的處理器速度, 而且如果檢測到CPU 的多種特性或者bug, 文件還會包含相應的標志。這
個文件的格式為:文件由多行構(gòu)成, 每行包括一個域名稱, 一個冒號和一個值。
示例:
[root@localhost proc]# cat cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 8
model name : AMD Athlon(tm) XP 1800+
stepping : 1
cpu MHz : 1530.165
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : nocoma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext
3dnowext 3dnow
bogomips : 2998.27
--------------------------------------------------------------------------------
/proc/devices 文件
這個文件列出字符和塊設(shè)備的主設(shè)備號, 以及分配到這些設(shè)備號的設(shè)備名稱。
示例:
[root@localhost /]# cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
6 lp
7 vcs
10 misc
13 input
14 sound
29 fb
36 netlink
116 alsa
128 ptm
136 pts
180 usb
Block devices:
1 ramdisk
2 fd
3 ide0
9 md
22 ide1
253 device-mapper
254 mdp
--------------------------------------------------------------------------------/proc/dma 文件
這個文件列出由驅(qū)動程序保留的DMA 通道和保留它們的驅(qū)動程序名稱 。casade 項供用于把次DMA 控制器
從主控制器分出的DMA 行所使用; 這一行不能用于其它用途。
示例:
[root@localhost ~]# cat /proc/dma
4: cascade
--------------------------------------------------------------------------------
/proc/filesystems 文件
這個文件列出可供使用的文件系統(tǒng)類型, 一種類型一行 。 雖然它們通常是編入內(nèi)核的文件系統(tǒng)類型, 但該文件
還可以包含可加載的內(nèi)核模塊加入的其它文件系統(tǒng)類型。
示例:
[root@localhost proc]# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev binfmt_misc
nodev usbfs
nodev usbdevfs
nodev futexfs
nodev tmpfs
nodev pipefs
nodev eventpollfs
nodev devpts
ext2
nodev ramfs
nodev hugetlbfs
iso9660
nodev mqueue
nodev selinuxfs
ext3
nodev rpc_pipefs
nodev autofs
--------------------------------------------------------------------------------
/proc/interrupts 文件
這個文件的每一行都有一個保留的中斷 。 每行中的域有 : 中斷號, 本行中斷的發(fā)生次數(shù), 可能帶有一個加號的
域(SA_INTERRUPT 標志設(shè)置), 以及登記這個中斷的驅(qū)動程序的名字。可以在安裝新硬件前, 像查看
/proc/dma 和/proc/ioports 一樣用cat 命令手工查看手頭的這個文件 。 這幾個文件列出了當前投入使用的資源
(但是不包括那些沒有加載驅(qū)動程序的硬件所使用的資源 ) 。
示例:
[root@localhost SPECS]# cat /proc/interruptsCPU0
0: 7039406 XT-PIC timer
1: 6533 XT-PIC i8042
2: 0 XT-PIC cascade
3: 0 XT-PIC uhci_hcd
5: 108 XT-PIC VIA8233, uhci_hcd
8: 1 XT-PIC rtc
9: 0 XT-PIC acpi
10: 0 XT-PIC ehci_hcd
11: 17412 XT-PIC uhci_hcd, eth0
12: 140314 XT-PIC i8042
14: 37897 XT-PIC ide0
15: 60813 XT-PIC ide1
NMI: 0
ERR: 1
--------------------------------------------------------------------------------
/proc/ioports 文件
這個文件列出了諸如磁盤驅(qū)動器, 以太網(wǎng)卡和聲卡設(shè)備等多種設(shè)備驅(qū)動程序登記的許多I/O 端口范圍。
示例:
[root@localhost SPECS]# cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-006f : keyboard
0070-0077 : rtc
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
0376-0376 : ide1
0378-037a : parport0
037b-037f : parport0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial
0800-0803 : PM1a_EVT_BLK
0804-0805 : PM1a_CNT_BLK
0808-080b : PM_TMR
0810-0815 : ACPI CPU throttle
0820-0823 : GPE0_BLK0cf8-0cff : PCI conf1
dc00-dcff : 0000:00:12.0
dc00-dcff : via-rhine
e000-e0ff : 0000:00:11.5
e000-e0ff : VIA8233
e400-e41f : 0000:00:10.0
e400-e41f : uhci_hcd
e800-e81f : 0000:00:10.1
e800-e81f : uhci_hcd
ec00-ec1f : 0000:00:10.2
ec00-ec1f : uhci_hcd
fc00-fc0f : 0000:00:11.1
fc00-fc07 : ide0
fc08-fc0f : ide1
--------------------------------------------------------------------------------
/proc/kcore 文件
這個文件是系統(tǒng)的物理內(nèi)存以core 文件格式保存的文件。例如,GDB 能用它考察內(nèi)核的數(shù)據(jù)結(jié)構(gòu)。它不是
純文本, 而是/proc 目錄下為數(shù)不多的幾個二進制格式的項之一。
示例:
暫無
--------------------------------------------------------------------------------
/proc/kmsg 文件
這個文件用于檢索用printk 生成的內(nèi)核消息。任何時刻只能有一個具有超級用戶權(quán)限的進程可以讀取這個
文件。也可以用系統(tǒng)調(diào)用syslog 檢索這些消息。通常使用工具dmesg 或守護進程klogd 檢索這些消息。
示例:
暫無
--------------------------------------------------------------------------------
/proc/ksyms 文件
這個文件列出了已經(jīng)登記的內(nèi)核符號; 這些符號給出了變量或函數(shù)的地址 。 每行給出一個符號的地址, 符號名
稱以及登記這個符號的模塊。程序ksyms,insmod 和kmod 使用這個文件。它還列出了正在運行的任務數(shù),
總?cè)蝿諗?shù)和最后分配的PID 。
示例:
暫無
--------------------------------------------------------------------------------
/proc/loadavg 文件
這個文件給出以幾個不同的時間間隔計算的系統(tǒng)平均負載, 這就如同uptime 命令顯示的結(jié)果那樣 。 前三個數(shù)
字是平均負載 。 這是通過計算過去1 分鐘,5 分鐘,15 分鐘里運行隊列中的平均任務數(shù)得到的 。 隨后是正在運行
的任務數(shù)和總?cè)蝿諗?shù)。最后是上次使用的進程號。
示例:[root@localhost ~]# cat /proc/loadavg
0.11 0.16 0.14 3/126 3912
--------------------------------------------------------------------------------
/proc/locks 文件
這個文件包含在打開的文件上的加鎖信息。文件中的每一行描述了特定文件和文檔上的加鎖信息以及對文
件施加的鎖的類型。內(nèi)核也可以需要時對文件施加強制性鎖。
示例:
[root@localhost redhat]# cat /proc/locks
1: POSIX ADVISORY READ 3822 03:0a:1067117 0 EOF
2: POSIX ADVISORY READ 3822 03:0a:1067138 0 EOF
3: POSIX ADVISORY WRITE 3326 03:0a:2326540 0 EOF
4: POSIX ADVISORY WRITE 2639 03:0a:2966595 0 EOF
5: FLOCK ADVISORY WRITE 2591 03:0a:2966586 0 EOF
6: POSIX ADVISORY WRITE 2540 03:0a:2966578 0 EOF
7: POSIX ADVISORY WRITE 2530 03:0a:2966579 0 EOF
8: POSIX ADVISORY WRITE 2402 03:0a:2966563 0 EOF
9: POSIX ADVISORY WRITE 2371 03:0a:2966561 0 EOF
--------------------------------------------------------------------------------
/proc/mdstat 文件
這個文件包含了由md 設(shè)備驅(qū)動程序控制的RAID 設(shè)備信息。
示例:
[root@localhost ~]# cat /proc/mdstat
Personalities :
unused devices: <none>
--------------------------------------------------------------------------------
/proc/meminfo 文件
這個文件給出了內(nèi)存狀態(tài)的信息 。 它顯示出系統(tǒng)中空閑內(nèi)存, 已用物理內(nèi)存和交換內(nèi)存的總量 。 它還顯示出
內(nèi)核使用的共享內(nèi)存和緩沖區(qū)總量。這些信息的格式和free 命令顯示的結(jié)果類似。
示例:
[root@localhost ~]# cat /proc/meminfo
MemTotal: 223812 kB
MemFree: 3764 kB
Buffers: 9148 kB
Cached: 92112 kB
SwapCached: 364 kB
Active: 183640 kB
Inactive: 17196 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 223812 kB
LowFree: 3764 kBSwapTotal: 626524 kB
SwapFree: 620328 kB
Dirty: 12 kB
Writeback: 0 kB
Mapped: 142880 kB
Slab: 12668 kB
Committed_AS: 376732 kB
PageTables: 2336 kB
VmallocTotal: 3907576 kB
VmallocUsed: 2968 kB
VmallocChunk: 3904224 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 4096 kB
--------------------------------------------------------------------------------
/proc/misc 文件
這個文件報告用內(nèi)核函數(shù)misc_register 登記的設(shè)備驅(qū)動程序。
示例:
[root@localhost ~]# cat /proc/misc
63 device-mapper
175 agpgart
135 rtc
--------------------------------------------------------------------------------
/proc/modules 文件
這個文件給出可加載內(nèi)核模塊的信息 。lsmod 程序用這些信息顯示有關(guān)模塊的名稱, 大小, 使用數(shù)目方面的信
息。
示例:
[root@localhost /]# cat /proc/modules
md5 4033 1 - Live 0x10a7f000
ipv6 232577 8 - Live 0x10b0c000
parport_pc 24705 1 - Live 0x10a8b000
lp 11565 0 - Live 0x10a7b000
parport 41737 2 parport_pc,lp, Live 0x10a55000
autofs4 24005 0 - Live 0x10a74000
i2c_dev 10433 0 - Live 0x109d2000
i2c_core 22081 1 i2c_dev, Live 0x10a6d000
sunrpc 160421 1 - Live 0x10a9d000
ipt_REJECT 6465 1 - Live 0x109da000
ipt_state 1857 5 - Live 0x109eb000
ip_conntrack 40693 1 ipt_state, Live 0x10a62000
iptable_filter 2753 1 - Live 0x10896000
ip_tables 16193 3 ipt_REJECT,ipt_state,iptable_filter, Live 0x109ed000dm_mod 54741 0 - Live 0x109f8000
button 6481 0 - Live 0x10905000
battery 8517 0 - Live 0x109d6000
ac 4805 0 - Live 0x10908000
uhci_hcd 31449 0 - Live 0x109dd000
ehci_hcd 31557 0 - Live 0x10949000
snd_via82xx 27237 2 - Live 0x10953000
snd_ac97_codec 64401 1 snd_via82xx, Live 0x10912000
snd_pcm_oss 47609 0 - Live 0x1093c000
snd_mixer_oss 17217 2 snd_pcm_oss, Live 0x1090c000
snd_pcm 97993 2 snd_via82xx,snd_pcm_oss, Live 0x10923000
snd_timer 29765 1 snd_pcm, Live 0x108ec000
snd_page_alloc 9673 2 snd_via82xx,snd_pcm, Live 0x108bd000
gameport 4801 1 snd_via82xx, Live 0x108a6000
snd_mpu401_uart 8769 1 snd_via82xx, Live 0x108b9000
snd_rawmidi 26725 1 snd_mpu401_uart, Live 0x108e4000
snd_seq_device 8137 1 snd_rawmidi, Live 0x1083b000
snd 54053 11
snd_via82xx,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,sn
d_seq_device, Live 0x108f6000
soundcore 9889 2 snd, Live 0x1089b000
via_rhine 23497 0 - Live 0x1089f000
mii 4673 1 via_rhine, Live 0x10893000
floppy 58609 0 - Live 0x108a9000
ext3 116809 1 - Live 0x10875000
jbd 74969 1 ext3, Live 0x10861000
lsmod 命令顯示結(jié)果如下:
[root@localhost /]# lsmod
Module Size Used by
md5 4033 1
ipv6 232577 8
parport_pc 24705 1
lp 11565 0
parport 41737 2 parport_pc,lp
autofs4 24005 0
i2c_dev 10433 0
i2c_core 22081 1 i2c_dev
sunrpc 160421 1
ipt_REJECT 6465 1
ipt_state 1857 5
ip_conntrack 40693 1 ipt_state
iptable_filter 2753 1ip_tables 16193 3 ipt_REJECT,ipt_state,iptable_filter
dm_mod 54741 0
button 6481 0
battery 8517 0
ac 4805 0
uhci_hcd 31449 0
ehci_hcd 31557 0
snd_via82xx 27237 2
snd_ac97_codec 64401 1 snd_via82xx
snd_pcm_oss 47609 0
snd_mixer_oss 17217 2 snd_pcm_oss
snd_pcm 97993 2 snd_via82xx,snd_pcm_oss
snd_timer 29765 1 snd_pcm
snd_page_alloc 9673 2 snd_via82xx,snd_pcm
gameport 4801 1 snd_via82xx
snd_mpu401_uart 8769 1 snd_via82xx
snd_rawmidi 26725 1 snd_mpu401_uart
snd_seq_device 8137 1 snd_rawmidi
snd 54053 11
snd_via82xx,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,sn
d_seq_device
soundcore 9889 2 snd
via_rhine 23497 0
mii 4673 1 via_rhine
floppy 58609 0
ext3 116809 1
jbd 74969 1 ext3
--------------------------------------------------------------------------------
/proc/mounts 文件
這個文件以/etc/mtab 文件的格式給出當前系統(tǒng)所安裝的文件系統(tǒng)信息。這個文件也能反映出任何手工安裝
從而在/etc/mtab 文件中沒有包含的文件系統(tǒng)。
示例:
[root@localhost /]# cat /proc/mounts
rootfs / rootfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
none /dev tmpfs rw 0 0
/dev/root / ext3 rw 0 0
none /dev tmpfs rw 0 0
none /selinux selinuxfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/proc/bus/usb /proc/bus/usb usbfs rw 0 0
/sys /sys sysfs rw 0 0none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
--------------------------------------------------------------------------------
/proc/pci 文件
這個文件給出PCI 設(shè)備的信息。用它可以方便地診斷PCI 問題。你可以從這個文件中檢索到的信息包括諸
如IDE 接口或USB 控制器這樣的設(shè)備, 總線, 設(shè)備和功能編號, 設(shè)備延遲以及IRQ 編號。
示例:
[root@localhost /]# cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Class 0600: PCI device 1106:3116 (rev 0).
Master Capable. Latency=8.
Prefetchable 32 bit memory at 0xe0000000 [0xe7ffffff].
Bus 0, device 1, function 0:
Class 0604: PCI device 1106:b091 (rev 0).
Master Capable. No bursts. Min Gnt=12.
Bus 0, device 16, function 2:
Class 0c03: PCI device 1106:3038 (rev 12.
IRQ 5.
Master Capable. Latency=32.
I/O at 0xec00 [0xec1f].
Bus 0, device 16, function 1:
Class 0c03: PCI device 1106:3038 (rev 12.
IRQ 3.
Master Capable. Latency=32.
I/O at 0xe800 [0xe81f].
Bus 0, device 16, function 0:
Class 0c03: PCI device 1106:3038 (rev 12.
IRQ 11.
Master Capable. Latency=32.
I/O at 0xe400 [0xe41f].
Bus 0, device 16, function 3:
Class 0c03: PCI device 1106:3104 (rev 130).
IRQ 10.
Master Capable. Latency=32.
Non-prefetchable 32 bit memory at 0xdfffff00 [0xdfffffff].
Bus 0, device 17, function 0:
Class 0601: PCI device 1106:3177 (rev 0).
Bus 0, device 17, function 1:Class 0101: PCI device 1106:0571 (rev 6).
IRQ 255.
Master Capable. Latency=32.
I/O at 0xfc00 [0xfc0f].
Bus 0, device 17, function 5:
Class 0401: PCI device 1106:3059 (rev 80).
IRQ 5.
I/O at 0xe000 [0xe0ff].
Bus 0, device 18, function 0:
Class 0200: PCI device 1106:3065 (rev 116).
IRQ 11.
Master Capable. Latency=32. Min Gnt=3.Max Lat=8.
I/O at 0xdc00 [0xdcff].
Non-prefetchable 32 bit memory at 0xdffffe00 [0xdffffeff].
Bus 1, device 0, function 0:
Class 0300: PCI device 5333:8d04 (rev 0).
IRQ 11.
Master Capable. Latency=32. Min Gnt=4.Max Lat=255.
Non-prefetchable 32 bit memory at 0xdfe80000 [0xdfefffff].
Prefetchable 32 bit memory at 0xd0000000 [0xd7ffffff].
--------------------------------------------------------------------------------
/proc/stat 文件
這個文件包含的信息有CPU 利用率, 磁盤, 內(nèi)存頁, 內(nèi)存對換, 全部中斷, 接觸開關(guān)以及賞賜自舉時間(自1970
年1 月1 日起的秒數(shù) ) 。
示例:
[root@localhost /]# cat /proc/stat
cpu 31994 3898 7161 381600 15254 451 0
cpu0 31994 3898 7161 381600 15254 451 0
intr 4615930 4404290 3364 0 0 12 0 7 0 2 0 0 12618 112114 0 44142 39381
ctxt 1310498
btime 1148891913
processes 4249
procs_running 4
procs_blocked 0
--------------------------------------------------------------------------------
/proc/uptime 文件
這個文件給出自從上次系統(tǒng)自舉以來的秒數(shù), 以及其中有多少秒處于空閑 。 這主要供uptime 程序使用 。 比較
這兩個數(shù)字能夠告訴你長期來看CPU 周期浪費的比例。
示例:
[root@localhost /]# cat /proc/uptime
4477.04 4021.10--------------------------------------------------------------------------------
/proc/version 文件
這個文件只有一行內(nèi)容, 說明正在運行的內(nèi)核版本。可以用標準的編程方法進行分析獲得所需的系統(tǒng)信息 。
示例:
[root@localhost /]# cat /proc/version
Linux?version 2.6.9-1.667 ( bhcompile@tweety.build.redhat.com ) (gcc version 3.4.2 20041017 (Red Hat
3.4.2-6.fc3)) #1 Tue Nov 2 14:41:25 EST 2004
--------------------------------------------------------------------------------
/proc/net 子目錄
此目錄下的文件描述或修改了聯(lián)網(wǎng)代碼的行為。可以通過使用 arp,netstat,route 和ipfwadm 命令設(shè)置或查詢
這些特殊文件中的許多文件。
示例:
[root@localhost /]# ls /proc/net
anycast6 ip_conntrack mcfilter6 rt6_stats tcp
arp ip_conntrack_expect netlink rt_acct tcp6
dev ip_mr_cache netstat rt_cache udp
dev_mcast ip_mr_vif packet snmp udp6
dev_snmp6 ip_tables_matches psched snmp6 unix
if_inet6 ip_tables_names raw sockstat wireless
igmp ip_tables_targets raw6 sockstat6
igmp6 ipv6_route route softnet_stat
ip6_flowlabel mcfilter rpc stat
--------------------------------------------------------------------------------
以下摘要介紹此目錄下文件的功能:
arp
轉(zhuǎn)儲每個網(wǎng)絡接口的arp 表中dev 包的統(tǒng)計
dev
來自網(wǎng)絡設(shè)備的統(tǒng)計
dev_mcast
列出二層(數(shù)據(jù)鏈路層)多播組
igmp
加入的IGMP 多播組
netlink
netlink 套接口的信息
netstat
網(wǎng)絡流量的多種統(tǒng)計。第一行是信息頭, 帶有每個變量的名稱。接下來的一行保存相應變量的值
raw
原始套接口的套接口表
route
靜態(tài)路由表
rpc
包含RPC 信息的目錄rt_cache
路由緩沖
snmp
snmp agent 的ip/icmp/tcp/udp 協(xié)議統(tǒng)計; 各行交替給出字段名和值
sockstat
列出使用的tcp/udp/raw/pac/syc_cookies 的數(shù)量
tcp
TCP 連接的套接口
udp
UDP 連接的套接口表
unix
UNIX 域套接口的套接口表
--------------------------------------------------------------------------------
示例:[root@localhost /]# cat /proc/net/route
Iface Destination Gateway Flags RefCnt Use Metric Mask MTU
Window IRTT
eth0 0035C2DA 00000000 0001 0 0 0 80FFFFF0
eth0 0000FEA9 00000000 0001 0 0 0 0000FFF0
eth0 00000000 0135C2DA 0003 0 0 0 00000000
--------------------------------------------------------------------------------
[root@localhost /]# cat /proc/net/tcp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:8000 00000000:0000 0A 00000000:00000000 00:00000000 00000000 29 0 9525 1
0dde7500 3000 0 0 2 -1
1: 00000000:006F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 9484 1
0dde79e0 3000 0 0 2 -1
2: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 10049 1
0a8e3a00 3000 0 0 2 -1
3: 0100007F:14D7 00000000:0000 0A 00000000:00000000 00:00000000 00000000 99 0 9847 1
0dde7020 3000 0 0 2 -1
4: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 10286 1
0a8e3520 3000 0 0 2 -1
--------------------------------------------------------------------------------
[root@localhost /]# cat /proc/net/arp
IP address HW type Flags HW address Mask Device
218.194.53.1 0x1 0x2 00:0D:BC:78:07:3F * eth0
--------------------------------------------------------------------------------
[root@localhost /]# cat /proc/net/udp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:8000 00000000:0000 07 00000000:00000000 00:00000000 00000000 29 0 9520 2
0b4ef7c0
105: 00000000:14E9 00000000:0000 07 00000000:00000000 00:00000000 00000000 99 0 10284 20b4ef040
111: 00000000:006F 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 9483 2
0b4efcc0
116: 00000000:02F4 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 9511 2
0b4efa40
119: 00000000:0277 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 10050 2
0b4ef2c0
--------------------------------------------------------------------------------
/proc/scsi 子目錄
此目錄下包含一個列出了所有檢測到的SCSI 設(shè)備的文件, 并且為每種控制器驅(qū)動程序提供一個目錄, 在這個
目錄下又為已安裝的此種控制器的每個實例提供一個子目錄。
示例:
由于本人的機器沒有SCSI 設(shè)備, 顧暫時無法提供示例。
--------------------------------------------------------------------------------
/proc/sys 子目錄
在此目錄下有許多子目錄 。 此目錄中的許多項都可以用來調(diào)整系統(tǒng)的性能 。 這個目錄包含信息太多, 無法介
紹全部。只在示例中展示目錄下的一些文件。
示例:[root@localhost /]# ls /proc/sys
debug dev fs kernel net proc sunrpc vm
--------------------------------------------------------------------------------
[root@localhost ~]# ls /proc/sys/fs
aio-max-nr dentry-state file-nr lease-break-time overflowgid
aio-nr dir-notify-enable inode-nr leases-enable overflowuid
binfmt_misc file-max inode-state mqueue quota
--------------------------------------------------------------------------------
[root@localhost ~]# ls /proc/sys/kernel
acct hotplug panic sem
cad_pid modprobe panic_on_oops shmall
cap-bound msgmax pid_max shmmax
core_pattern msgmnb print-fatal-signals shmmni
core_uses_pid msgmni printk sysrq
ctrl-alt-del ngroups_max printk_ratelimit tainted
domainname osrelease printk_ratelimit_burst threads-max
exec-shield ostype pty vdso
exec-shield-randomize overflowgid random version
hostname overflowuid real-root-dev
--------------------------------------------------------------------------------
[root@localhost ~]# ls /proc/sys/net
core ethernet ipv4 ipv6 unix
--------------------------------------------------------------------------------
[root@localhost sys]# ls /proc/sys/vmblock_dump laptop_mode nr_pdflush_threads
dirty_background_ratio legacy_va_layout overcommit_memory
dirty_expire_centisecs lower_zone_protection overcommit_ratio
dirty_ratio max_map_count page-cluster
dirty_writeback_centisecs min_free_kbytes swappiness
hugetlb_shm_group nr_hugepages vfs_cache_pressure
--------------------------------------------------------------------------------
[root@localhost sys]# ls /proc/sys/net/ipv4
conf tcp_fack
icmp_echo_ignore_all tcp_fin_timeout
icmp_echo_ignore_broadcasts tcp_frto
icmp_ignore_bogus_error_responses tcp_keepalive_intvl
icmp_ratelimit tcp_keepalive_probes
icmp_ratemask tcp_keepalive_time
igmp_max_memberships tcp_low_latency
igmp_max_msf tcp_max_orphans
inet_peer_gc_maxtime tcp_max_syn_backlog
inet_peer_gc_mintime tcp_max_tw_buckets
inet_peer_maxttl tcp_mem
inet_peer_minttl tcp_moderate_rcvbuf
inet_peer_threshold tcp_no_metrics_save
ip_autoconfig tcp_orphan_retries
ip_conntrack_max tcp_reordering
ip_default_ttl tcp_retrans_collapse
ip_dynaddr tcp_retries1
ip_forward tcp_retries2
ipfrag_high_thresh tcp_rfc1337
ipfrag_low_thresh tcp_rmem
ipfrag_secret_interval tcp_sack
ipfrag_time tcp_stdurg
ip_local_port_range tcp_synack_retries
ip_nonlocal_bind tcp_syncookies
ip_no_pmtu_disc tcp_syn_retries
neigh tcp_timestamps
netfilter tcp_tso_win_divisor
route tcp_tw_recycle
tcp_abort_on_overflow tcp_tw_reuse
tcp_adv_win_scale tcp_vegas_alpha
tcp_app_win tcp_vegas_beta
tcp_bic tcp_vegas_cong_avoid
tcp_bic_fast_convergence tcp_vegas_gamma
tcp_bic_low_window tcp_westwood
tcp_dsack tcp_window_scalingtcp_ecn tcp_wmem
--------------------------------------------------------------------------------
[root@localhost sys]# cat /proc/sys/kernel/shmall
2097152
--------------------------------------------------------------------------------
[root@localhost sys]# cat /proc/sys/kernel/osrelease
2.6.9-1.667
--------------------------------------------------------------------------------
總結(jié) :/proc 文件系統(tǒng)包含了大量的有關(guān)當前系統(tǒng)狀態(tài)的信息 。proc 的手冊頁中也有對這些文件的解釋文檔 。
把文件和分析這些文件的工具產(chǎn)生的輸出進行比較能夠更加清晰地了解這些文件
總結(jié)
以上是生活随笔為你收集整理的linux 中/proc 详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: learn Linux sed comm
- 下一篇: 车联网行业No.1元征科技的云端架构实现