linux /proc 詳解

linux /proc 詳解

本文整理了一下 linux /proc下的幾個常用的目錄和文件,可供查閱,之后在學習工作中有別的用到的話會再補充。

/proc 簡介

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

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

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

大多數虛擬文件可以使用文件查看命令如catmore或者less進行查看,注意\proc中文件通常比較長,直接使用cat命令來查看全部信息可讀性不佳。可以用morecat命令,關于Linux中查看文件內容的命令,可參考博客:Linux查看文件內容命令:cat, tail, head, more, less。

\proc中有些文件信息表述的內容可以一目了然,但大部分文件的信息卻不怎么具有可讀性。不過,這些可讀性較差的文件在使用一些命令如apmfreelspcitop查看時卻可以有著不錯的表現。

/proc的目錄結構

/proc的目錄結構大致如下:

/proc
├── 1
│?? ├── arch_status
│?? ├── attr [error opening dir]
│?? ├── autogroup
│?? ├── auxv
...
├── 2
│?? ├── arch_status
│?? ├── attr [error opening dir]
│?? ├── autogroup
...
...
├── execdomains
├── fb
├── filesystems
├── sys
...
  1. 有些以數字為名稱的目錄,對應著當前運行的各個進程,目錄中時該進程的相關信息,將在下一小節介紹。
  2. 直接在/proc目錄下的文件,則存儲了本機相關的一些信息,如/proc/cpuinfo存儲cpu的相關信息等,將在下下小節較少。
  3. 不同于/proc的其他文件或目錄都是只讀的,在/proc/sys目錄下,有一些可以修改的文件,將在下下下小節介紹。

/proc/[PID] 進程目錄中的常見文件介紹

/proc目錄中包含許多以數字命名的子目錄,這些數字表示系統當前正在運行進程的進程號,里面包含對應進程相關的多個信息文件。即下表中的文件或目錄均在/proc/[PID]/之下。

文件內容
cmdline啟動當前進程的完整命令,但僵尸進程目錄中的此文件不包含任何信息
cwd指向當前進程運行目錄的一個符號鏈接
environ當前進程的環境變量列表,彼此間用空字符(NULL)隔開;變量用大寫字母表示,其值用小寫字母表示
exe指向啟動當前進程的可執行文件(完整路徑)的符號鏈接,通過/proc/N/exe可以啟動當前進程的一個拷貝
fd這是個目錄,包含當前進程打開的每一個文件的文件描述符(file descriptor),這些文件描述符是指向實際文件的一個符號鏈接
limits當前進程所使用的每一個受限資源的軟限制、硬限制和管理單元;此文件僅可由實際啟動當前進程的UID用戶讀取
maps當前進程關聯到的每個可執行文件和庫文件在內存中的映射區域及其訪問權限所組成的列表
mem當前進程所占用的內存空間,由open、read和lseek等系統調用使用,不能被用戶讀取
root指向當前進程運行根目錄的符號鏈接;在Unix和Linux系統上,通常采用chroot命令使每個進程運行于獨立的根目錄
stat當前進程的狀態信息,包含一系統格式化后的數據列,可讀性差,通常由ps命令使用
statm當前進程占用內存的狀態信息,通常以“頁面”(page)表示
status與stat所提供信息類似,但可讀性較好,其詳細介紹請參見 proc的man手冊頁
task目錄文件,包含由當前進程所運行的每一個線程的相關信息,每個線程的相關信息文件均保存在一個由線程號(tid)命名的目錄中,這類似于其內容類似于每個進程目錄中的內容

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

/proc目錄中包含許多以數字命名的子目錄,這些數字表示系統當前正在運行進程的進程號,里面包含對應進程相關的多個信息文件。即下表中的文件或目錄均直接在/proc之下。

信息文件內容
/proc/apm高級電源管理(APM)版本信息及電池相關狀態信息,通常由apm命令使用
/proc/buddyinfo用于診斷內存碎片問題的相關信息文件
/proc/cmdline在啟動時傳遞至內核的相關參數信息,這些信息通常由lilo或grub等啟動管理工具進行傳遞
/proc/cpuinfo處理器的相關信息的文件
/proc/crypto系統上已安裝的內核使用的密碼算法及每個算法的詳細信息列表
/proc/devices系統已經加載的所有塊設備和字符設備的信息,包含主設備號和設備組(與主設備號對應的設備類型)名
/proc/diskstats每塊磁盤設備的磁盤I/O統計信息列表
/proc/dma每個正在使用且注冊的ISA DMA通道的信息列表
/proc/execdomains內核當前支持的執行域(每種操作系統獨特“個性”)信息列表
/proc/fb幀緩沖設備列表文件,包含幀緩沖設備的設備號和相關驅動信息
/proc/filesystems當前被內核支持的文件系統類型列表文件,被標示為nodev的文件系統表示不需要塊設備的支持;通常mount一個設備時,如果沒有指定文件系統類型將通過此文件來決定其所需文件系統的類型
/proc/interruptsX86或X86_64體系架構系統上每個IRQ相關的中斷號列表;多路處理器平臺上每個CPU對于每個I/O設備均有自己的中斷號
/proc/iomem每個物理設備上的記憶體(RAM或者ROM)在系統內存中的映射信息
/proc/ioports當前正在使用且已經注冊過的與物理設備進行通訊的輸入-輸出端口范圍信息列表;如下面所示,第一列表示注冊的I/O端口范圍,其后表示相關的設備
/proc/kallsyms模塊管理工具用來動態鏈接或綁定可裝載模塊的符號定義,由內核輸出;通常這個文件中的信息量相當大
/proc/kcore系統使用的物理內存,以ELF核心文件(core file)格式存儲,其文件大小為已使用的物理內存(RAM)加上4KB;這個文件用來檢查內核數據結構的當前狀態,因此,通常由GBD通常調試工具使用,但不能使用文件查看命令打開此文件
/proc/kmsg此文件用來保存由內核輸出的信息,通常由/sbin/klogd或/bin/dmsg等程序使用,不要試圖使用查看命令打開此文件
/proc/loadavg保存關于CPU和磁盤I/O的負載平均值,其前三列分別表示每1秒鐘、每5秒鐘及每15秒的負載平均值,類似于uptime命令輸出的相關信息;第四列是由斜線隔開的兩個數值,前者表示當前正由內核調度的實體(進程和線程)的數目,后者表示系統當前存活的內核調度實體的數目;第五列表示此文件被查看前最近一個由內核創建的進程的PID
/proc/locks保存當前由內核鎖定的文件的相關信息,包含內核內部的調試數據;每個鎖定占據一行,且具有一個惟一的編號;如下輸出信息中每行的第二列表示當前鎖定使用的鎖定類別,POSIX表示目前較新類型的文件鎖,由lockf系統調用產生,FLOCK是傳統的UNIX文件鎖,由flock系統調用產生;第三列也通常由兩種類型,ADVISORY表示不允許其他用戶鎖定此文件,但允許讀取,MANDATORY表示此文件鎖定期間不允許其他用戶任何形式的訪問
/proc/mdstat保存RAID相關的多塊磁盤的當前狀態信息
/proc/meminfo系統中關于當前內存的利用狀況等的信息,常由free命令使用;可以使用文件查看命令直接讀取此文件,其內容顯示為兩列,前者為統計屬性,后者為對應的值
/proc/mounts在內核2.4.29版本以前,此文件的內容為系統當前掛載的所有文件系統,在2.4.19以后的內核中引進了每個進程使用獨立掛載名稱空間的方式,此文件則隨之變成了指向/proc/self/mounts(每個進程自身掛載名稱空間中的所有掛載點列表)文件的符號鏈接;/proc/self是一個獨特的目錄,后文中會對此目錄進行介紹;
/proc/modules當前裝入內核的所有模塊名稱列表,可以由lsmod命令使用,也可以直接查看
/proc/partitions塊設備每個分區的主設備號(major)和次設備號(minor)等信息,同時包括每個分區所包含的塊(block)數目
/proc/pci內核初始化時發現的所有PCI設備及其配置信息列表,其配置信息多為某PCI設備相關IRQ信息,可讀性不高,可以用“/sbin/lspci –vb”命令獲得較易理解的相關信息
/proc/slabinfo在內核中頻繁使用的對象(如inode、dentry等)都有自己的cache,即slab pool,而/proc/slabinfo文件列出了這些對象相關slap的信息;詳情可以參見內核文檔中slapinfo的手冊頁
/proc/stat實時追蹤自系統上次啟動以來的多種統計信息
/proc/swaps當前系統上的交換分區及其空間利用信息,如果有多個交換分區的話,則會每個交換分區的信息分別存儲于/proc/swap目錄中的單獨文件中,而其優先級數字越低,被使用到的可能性越大
/proc/uptime系統上次啟動以來的運行時間,如下所示,其第一個數字表示系統運行時間,第二個數字表示系統空閑時間,單位是秒
/proc/version當前系統運行的內核版本號,在作者的RHEL5.3上還會顯示系統安裝的gcc版本
/proc/vmstat當前系統虛擬內存的多種統計數據,信息量可能會比較大,這因系統而有所不同,可讀性較好
/proc/zoneinfo內存區域(zone)的詳細信息列表,信息量較大,下面列出的是一個輸出片段

/proc/sys目錄詳解

/proc下其它文件的“只讀”屬性不同的是,管理員可對/proc/sys子目錄中的許多文件內容進行修改以更改內核的運行特性,事先可以使用ls -l命令查看某文件是否“可寫入”。寫入操作通常使用類似于echo DATA > /path/to/your/filename的格式進行。

需要注意的是,即使文件可寫,其一般也不可以使用編輯器進行編輯。

/proc/sys/net

所有的TCP/IP調優參數都位于/proc/sys/net目錄。例如, 下面是最重要的一些調優參數。

文件名內容
/proc/sys/net/core/rmem_max最大的TCP數據接收緩沖
/proc/sys/net/core/wmem_max最大的TCP數據發送緩沖
/proc/sys/net/ipv4/tcp_timestamps時間戳在TCP的包頭增加12個字節
/proc/sys/net/ipv4/tcp_sack有選擇的應答
/proc/sys/net/ipv4/tcp_window_scaling支持更大的TCP窗口. 如果TCP窗口最大超過64K, 必須設置該數值為1

/proc/sys/dev

為系統上特殊設備提供參數信息文件的目錄,其不同設備的信息文件分別存儲于不同的子目錄中,如大多數系統上都會具有的/proc/sys/dev/cdrom/proc/sys/dev/raid(如果內核編譯時開啟了支持raid的功能) 目錄,其內存儲的通常是系統上cdrom和raid的相關參數信息文件。

/proc/sys/kernel

文件名內容
/proc/sys/kernel/ctrl-alt-del該文件有一個二進制值,該值控制系統在接收到ctrl+alt+delete按鍵組合時如何反應。
proc/sys/kernel/msgmax該文件指定了從一個進程發送到另一個進程的消息的最大長度(bytes)。進程間的消息傳遞是在內核的內存中進行的,不會交換到磁盤上,所以如果增加該值,則將增加操作系統所使用的內存數量。
/proc/sys/kernel/msgmnb該文件指定一個消息隊列的最大長度(bytes)
/proc/sys/kernel/msgmni該文件指定消息隊列標識的最大數目,即系統范圍內最大多少個消息隊列
/proc/sys/kernel/panic該文件表示如果發生“內核嚴重錯誤(kernel panic),則內核在重新引導之前等待的時間(秒)
proc/sys/kernel/shmall該文件表示在任何給定時刻,系統上可以使用的共享內存的總量(bytes)
/proc/sys/kernel/shmmax該文件表示內核所允許的最大共享內存段的大小(bytes)(建議:物理內存*0.5)
/proc/sys/kernel/shmmni該文件表示用于整個系統的共享內存段的最大數目(個)
/proc/sys/kernel/sem該文件用于控制內核信號量,信號量是System VIPC用于進程間通訊的方法
/proc/sys/kernel/threads-max該文件表示內核所能使用的線程的最大數目

/proc/sys/fs

文件名含義
/proc/sys/fs/file-max該文件指定了可以分配的文件句柄的最大數目。
/proc/sys/fs/file-nr該文件與 file-max 相關,它有三個值:已分配文件句柄的數目、已使用文件句柄的數目、文件句柄的最大數目。該文件是只讀的,僅用于顯示信息。

Ref:

https://www.cnblogs.com/liushui-sky/p/9354536.html

http://blog.chinaunix.net/uid-22159621-id-1789315.html

https://www.cnblogs.com/machangwei-8/p/10354636.html

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

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

相關文章

android模擬器太卡,安卓模擬器安裝之后太卡怎么解決

用安卓模擬器玩游戲原理就是在電腦上安裝了一部手機,如果你的電腦配置不是非常高,能不卡頓嗎?遇到卡頓怎么解決?1、安裝最新版本的顯卡驅動。逍遙模擬器對于顯卡的性能要求很高,因此升級至最新版本的顯卡驅動,是確保逍遙模擬器流…

編程環境中Runtime(運行時)的三個含義

編程環境中Runtime(運行時)的三個含義 轉自:https://www.zhihu.com/question/20607178 知乎答主doodlewind 三個含義 實際上編程語境中的 runtime 至少有三個含義,分別是: 指「程序運行的時候」,即程序…

非常不錯的一款html5【404頁面】,不含js腳本可以左右擺動,原生JavaScript實現日歷功能代碼實例(無引用Jq)...

這篇文章主要介紹了原生JavaScript實現日歷功能代碼實例(無引用Jq),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下成品顯示,可左右切換月份html 代碼移動端日歷日一二三四五六css代碼*{margin: 0;pa…

12 [虛擬化] 進程抽象;fork,execve,exit

12 [虛擬化] 進程抽象;fork,execve,exit 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1N741177F5?p12 講義:http://jyywiki.cn/OS/2021/slides/8.slides#/ 本講概述 回到“…

計算機應用與基礎實踐怎么考,自考計算機基礎應用科目筆試和實踐性考試怎么考...

自考計算機基礎應用科目筆試和實踐性考試怎么考? 報考自考的考生有些專業的考生會在自己的課程科目中發現計算機基礎應用不僅有理論知識考試還有實踐性考試,那么自考計算機基礎應用科目的筆試和實踐性考試怎么考?自考計算機基礎應用科目筆試怎…

14 [虛擬化] 虛存抽象;Linux進程的地址空間

14 [虛擬化] 虛存抽象;Linux進程的地址空間 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1N741177F5?p14 講義:http://jyywiki.cn/OS/2021/slides/10.slides#/ 本講概述 程序 狀態機;…

瀏覽器是指在用戶計算機上,自考《網頁設計與制作》測試題及答案

自考《網頁設計與制作》測試題及答案學習是一個不斷積累的過程,為幫助考生們更好地復習《與制作》科目知識點,以下是搜索整理的一份自考《網頁設計與制作》測試題及答案,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關…

Ubuntu 18.04 安裝OpenCV C++

Ubuntu 18.04 安裝OpenCV C 構建并安裝 僅構建核心模塊 # 更新并安裝依賴 # 更新并安裝依賴 sudo apt update && sudo apt install -y cmake g wget unzip# 下載并解壓包 wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip unzip opencv.zip…

html計算x的y,HTML5畫布:旋轉時計算x,y點

我開發了一個HTML5 Canvas應用程序,它涉及到讀取一個xml文件,該文件描述了需要在畫布上繪制的箭頭,直形和其他形狀的位置。的XML布局的HTML5畫布:旋轉時計算x,y點實施例:如果對象被旋轉它涉及計算一個點的位…

(2021) 20 [虛擬化] 進程調度

(2021) 20 [虛擬化] 進程調度 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p20 講義:http://jyywiki.cn/OS/2021/slides/11.slides#/ 背景 — 機制與策略分離 機制:一個通用的、可定制…

計算機組裝過程英文版,計算機組裝與維護試題及答案(國外英文資料).doc

計算機組裝與維護試題及答案(國外英文資料)計算機組裝與維護試題及答案(國外英文資料)(1) choiceIn the following equipment, the input device is (b)A. b. b. c. c. c. d. d.In Windows 98, the combination of CTRL Alt Del is (c)A. cold start b. heat start c. interr…

make命令及makefile

make命令及makefile 轉自:https://www.ruanyifeng.com/blog/2015/02/make.html Make 命令教程 作者: 阮一峰 日期: 2015年2月20日 代碼變成可執行文件,叫做編譯(compile);先編譯這個&#…

局域網中計算機網絡密碼查看,Win10怎么查看電腦上已知的wifi網絡密碼

方法一:網絡和共享中心查詢1、在Windows 10桌面最左下角的【Windwos開始圖標上右鍵】,在彈出的菜單中點擊打開【網絡連接】,如下圖所示。2、在打開的網絡連接設置中,雙擊已經連接的【無線網絡名稱】,在彈出的【WLAN狀態…

(2021) 22 [持久化] 1-Bit的存儲

(2021) 22 [持久化] 1-Bit的存儲 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p22 講義:http://jyywiki.cn/OS/2021/slides/12.slides#/ 背景 回顧 操作系統是什么?一組對象 一組API…

計算機一級試題論述,計算機一級考試理論題及答案要點

計算機一級考試IT1必做題[1]. 著名的計算機科學家尼.沃思提出了________。A.數據結構+算法程序B.存儲控制結構C.信息熵D.控制論[2]. 下面有關掃描儀的敘述中,錯誤的是________。A.分辨率是掃描儀…

(2021) 23 [持久化] I/O設備與驅動

(2021) 23 [持久化] I/O設備與驅動 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p23 講義:http://jyywiki.cn/OS/2021/slides/13.slides#/ 背景 很多人 (你們的同學們、家長們) 都有一個認識&…

計算機考研計劃時間,2019計算機考研時間安排:復習時間規劃

隨著考研競爭越來越激烈,考研復習一定要做好規劃,每天的時間要做好管理,分清輕重緩急,這樣才能高效率復習。管理的5個原則,大家抓緊調整個人復習。小編還為大家精心準備了計算機考研復習資料還有計算機考研報考指導助力…

(2021) 24 [持久化] 文件系統API

(2021) 24 [持久化] 文件系統API 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p24 講義:http://jyywiki.cn/OS/2021/slides/14.slides#/ 背景 回顧 硬件視角:持久化的“層層抽象” 物…

計算機輔助應用的縮寫有什么,計算機輔助設計的英文縮寫是什么

2008-10-09是什么的英文縮寫?BOBO......頭型里的.....其實"BOBO頭"準確的名稱應該是BOB頭。它是娃娃頭的一種。BOB頭有許多變種,標準的類似于櫻桃小丸子的發型,專業發型師把它稱為BOB。最初是由巴黎發型師Antoine 在1909年發明,但…

Linux中的硬鏈接和軟鏈接

Linux中的硬鏈接和軟鏈接 節選自南大蔣炎巖老師操作系統網絡課程筆記:(2021) 24 [持久化] 文件系統API 硬(hard)鏈接 UNIX文件指針 在UNIX中,文件和目錄完全不是同一個概念,雖然我們平時看著它們仿佛并列地躺在某個…