Linux /proc/pid目录下相应文件的信息说明和含义
【各個文件含義】 /proc 是一個偽文件系統, 被用作內核數據結構的接口, 而不僅僅是解釋說明/dev/kmem. /proc 里的大多數文件都是只讀的, 但也可以通過寫一些文件來改變內核變量. (
Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。proc文件系統是一個偽文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口。
用戶和應用程序可以通過proc得到系統的信息,并可以改變內核的某些參數。由于系統的信息,如進程,是動態改變的,所以用戶或應用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息并提交的。下面列出的這些文件或子文件夾,并不是都是在你的系統中存在,這取決于你的內核配置和裝載的模塊。另外,在/proc下還有三個很重要的目錄:net,scsi和sys。 Sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴于內核配置。例如,如果系統不支持scsi,則scsi 目錄不存在。
除了以上介紹的這些,還有的是一些以數字命名的目錄,它們是進程目錄。系統中當前運行的每一個進程都有對應的一個目錄在/proc下,以進程的 PID號為目錄名,它們是讀取進程信息的接口。而self目錄則是讀取進程本身的信息接口,是一個link。
)
下面對整個 /proc 目錄作一個大略的介紹.
[number]
在 /proc 目錄里, 每個正在運行的進程都有一個以該進程 ID 命名的子目錄, 其下包括如下的目錄和偽文件: [number] /cmdline
該文件保存了進程的完整命令行. 如果該進程已經被交換出內存, 或者該進程已經僵死, 那么就沒有任何東西在該文件里, 這時候對該文件的讀操作將返回零個字符. 該文件以空字符 null 而不是換行符作為結束標志.
[number] /cwd
一個符號連接, 指向進程當前的工作目錄. 例如, 要找出進程 20 的 cwd, 你可以:
cd /proc/20/cwd; /bin/pwd
請注意 pwd 命令通常是 shell 內置的, 在這樣的情況下可能工作得不是很好(casper 注: pwd 只能顯示 /proc/20/cwd, 要是想知道它的工作目錄,直接ls -al /proc/20不就好了).
[number] /environ
該文件保存進程的環境變量, 各項之間以空字符分隔, 結尾也可能是一個空字符. 因此, 如果要輸出進程 1 的環境變量, 你應該:
(cat /proc/1/environ; echo) | tr ";\000"; ";\n";
(至于為什么想要這么做, 請參閱 lilo(8).)
[number] /exe
也是一個符號連接, 指向被執行的二進制代碼. 在?Linux?2.0 或者更早的版本下, 對 exe 特殊文件的 readlink(2) 返回一個如下格式的字符串: [設備號]:節點號 舉個例子, [0301]:1502 就是某設備的 1502 節點, 該設備的主設備號為 03 (如 IDE, MFM 等驅動器), 從設備號為 01 (第一個驅動器的第一分區). 而在?Linux?2.2 下, readlink(2) 則給出命令的實際路徑名. 另外, 該符號連接也可以正常析引用(試圖打開 exe 文件實際上將打開一個可執行文件). 你甚至可以鍵入 /proc/[number]/exe 來運行 [number] 進程的副本. 帶 -inum 選項的?find(1) 命令可以定位該文件.
[number] /fd
進 程所打開的每個文件都有一個符號連接在該子目錄里, 以文件描述符命名, 這個名字實際上是指向真正的文件的符號連接,(和 exe 記錄一樣).例如, 0 是標準輸入, 1 是標準輸出, 2 是標準錯誤, 等等. 程序有時可能想要讀取一個文件卻不想要標準輸入,或者想寫到一個文件卻不想將輸出送到標準輸出去,那么就可以很有效地用如下的辦法騙過(假定 -i 是輸入文件的標志, 而 -o 是輸出文件的標志):
foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
這 樣就是一個能運轉的過濾器. 請注意該方法不能用來在文件里搜索, 這是因為 fd 目錄里的文件是不可搜索的. 在 UNIX 類的系統下, /proc/self/fd/N 基本上就與 /dev/fd/N 相同. 實際上, 大多數的 Linux MAKEDEV 腳本都將 /dev/fd 符號連接到 [..]/proc/self/fd 上. ]
?
attr:
進程的屬性
?
cmdline:
啟動進程時執行的命令
?
cwd:
指向進程當前工作目錄的軟鏈
?ll cwd可知是個軟連接。
?
environ:
進程執行時使用的環境變量,文件內容使用null字節('\0')分隔,然后以null字節結束。因此獲取進程使用的環境變量使用如下:
(cat /proc/pid/environ; echo) | tr '\000' '\n'
?
fd:
?此目錄包含進程打開的所有文件,文件名為文件描述符,目錄中每個軟連接都會指向進程打開的實際文件。
?比如:nginx下:
root@iZ23onhpqvwZ:/proc/22210/fd# ll
total 0
dr-x------ 2 root root 0 Oct 20 17:39 ./
dr-xr-xr-x 9 root root 0 Oct 20 17:22 ../
lrwx------ 1 root root 64 Oct 20 17:39 0 -> /dev/null
lrwx------ 1 root root 64 Oct 20 17:39 1 -> /dev/null
lrwx------ 1 root root 64 Oct 20 17:39 10 -> socket:[2917559817]
l-wx------ 1 root root 64 Oct 20 17:39 2 -> /opt/nginx/logs/error.log
l-wx------ 1 root root 64 Oct 20 17:39 3 -> /opt/nginx/logs/access.log
lrwx------ 1 root root 64 Oct 20 17:39 6 -> socket:[2917557592]
lrwx------ 1 root root 64 Oct 20 17:39 7 -> socket:[2917557593]
l-wx------ 1 root root 64 Oct 20 17:39 8 -> /opt/nginx/logs/error.log
lrwx------ 1 root root 64 Oct 20 17:39 9 -> socket:[2917559816]
?
limits:
該文件存儲了進程的軟限制,硬限制等信息。
?可以查看該進程允許打開的最大描述字個數。
?
?
maps:
?
?
?? ? ?address ?? ? ? ?perms offset ?dev ? inode ? pathname
?? ? ?08048000-08056000 r-xp 00000000 03:0c 64593 ? /usr/sbin/gpm
?? ? ?4001f000-40135000 r-xp 00000000 03:0c 45494 ? /lib/libc-2.2.4.so
? ? ? ? ?* address:進程占用的地址空間。
? ? ? ? ?* perms:權限集
? ? ? ? ? ? ? ? ?r = read
? ? ? ? ? ? ? ? ?w = write
? ? ? ? ? ? ? ? ?x = execute
? ? ? ? ? ? ? ? ?s = shared
? ? ? ? ? ? ? ? ?p = private (copy on write)
? ? ? ? * offset:文件偏移量。
? ? ? ? * dev:為設備(major:minor)
? ? ? ? * inode:設備上的inode。0為沒有inode關聯互內存區域,通常為:BSS(uninitialized data)
?
root:
指向進程更目錄的軟鏈
?
smaps:
?
?? ? ?This file shows memory consumption for each of the process's mappings. ?For each of mappings there is a series of lines such as the following:
?
??08048000-080bc000 r-xp 00000000 03:02 13130 ?? /bin/bash
??Size: ?? ? ?464 kB
??Rss: ?? ? ?424 kB
??Shared_Clean: ?? ? ?424 kB
??Shared_Dirty: 0 kB
??Private_Clean: 0 kB
??Private_Dirty: 0 kB
?
?? ? ?The first of these lines shows the same information as is displayed for the mapping in /proc/[pid]/maps. The remaining lines show the size of
?? ? ?the ?mapping, ?the amount of the mapping that is currently resident in RAM, the number of clean and dirty shared pages in the mapping, and the
?? ? ?number of clean and dirty private pages in the mapping.
?
?? ? ?This file is only present if the CONFIG_MMU kernel configuration option is enabled.
status: Name: ??bash State: ?S (sleeping) Tgid: ??3515 Pid: ??3515 PPid: ??3452 TracerPid: ??0 Uid: ??1000 ??1000 ??1000 ??1000 Gid: ??100 ??100 ??100 ??100 FDSize: 256 Groups: 16 33 100 VmPeak: ? ? 9136 kB VmSize: ? ? 7896 kB VmLck: ?0 kB VmHWM: ? ? ?7572 kB VmRSS: ? ? ?6316 kB VmData: ? ? 5224 kB VmStk: 88 kB VmExe: ? ? ? 572 kB VmLib: ? ? ?1708 kB VmPTE: 20 kB Threads: ??1 SigQ: ??0/3067 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000384004 SigCgt: 000000004b813efb CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: ??00000001 Cpus_allowed_list: ??0 Mems_allowed: ??1 Mems_allowed_list: ??0 voluntary_ctxt_switches: ??150 nonvoluntary_ctxt_switches: ??545 The fields are as follows: * Name: Command run by this process. * State: Current state of the process. ?One of "R (running)", "S (sleeping)", "D (disk sleep)", "T (stopped)", "T (tracing ?stop)", ?"Z ?(zom- bie)", or "X (dead)". * Tgid: Thread group ID (i.e., Process ID). * Pid: Thread ID (see gettid(2)). * TracerPid: PID of process tracing this process (0 if not being traced). * Uid, Gid: Real, effective, saved set, and file system UIDs (GIDs). * FDSize: Number of file descriptor slots currently allocated. * Groups: Supplementary group list. * VmPeak: Peak virtual memory size. * VmSize: Virtual memory size. * VmLck: Locked memory size. * VmHWM: Peak resident set size ("high water mark"). * VmRSS: Resident set size. * VmData, VmStk, VmExe: Size of data, stack, and text segments. * VmLib: Shared library code size. * VmPTE: Page table entries size (since Linux 2.6.10). * Threads: Number of threads in process containing this thread. * SigPnd, ShdPnd: Number of signals pending for thread and for process as a whole (see pthreads(7) and signal(7)). * SigBlk, SigIgn, SigCgt: Masks indicating signals being blocked, ignored, and caught (see signal(7)). * CapInh, CapPrm, CapEff: Masks of capabilities enabled in inheritable, permitted, and effective sets (see capabilities(7)). * CapBnd: Capability Bounding set (since kernel 2.6.26, see capabilities(7)). * Cpus_allowed: Mask of CPUs on which this process may run (since Linux 2.6.24, see cpuset(7)). * Cpus_allowed_list: Same as previous, but in "list format" (since Linux 2.6.26, see cpuset(7)). * Mems_allowed: Mask of memory nodes allowed to this process (since Linux 2.6.24, see cpuset(7)). * Mems_allowed_list: Same as previous, but in "list format" (since Linux 2.6.26, see cpuset(7)). * voluntary_context_switches, nonvoluntary_context_switches: Number of voluntary and involuntary context switches (since Linux 2.6.23). task: 進程包含的線程,子目錄名是線程的ID。【備注】/proc/pid下的相應信息說明
一、/proc/pid/statm
pid/statm包含了在此進程中所有CPU活躍的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻。
?
/proc/1 # cat statm
550 70 62 451 0 97 0
?
輸出解釋
CPU?以及CPU0。。。的每行的每個參數意思(以第一行為例)為:
參數?解釋?/proc/1/status
Size (pages)= 550 ?任務虛擬地址空間的大小?VmSize/4
Resident(pages)= 70 ?應用程序正在使用的物理內存的大小?VmRSS/4
Shared(pages)= 62 ?共享頁數
Trs(pages)= 451 ?程序所擁有的可執行虛擬內存的大小?VmExe/4
Lrs(pages)= 0 ?被映像到任務的虛擬內存空間的庫的大小?VmLib/4
Drs(pages)= 97 ?程序數據段和用戶態的棧的大小?(VmData+ VmStk?)4
dt(pages) 0
?
二、/proc/pid/stat
pid/stat包含了進程所有CPU活躍的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻。
/proc/1 # cat stat
1 (linuxrc) S 0 0 0 0 -1 8388864 50 633 20 4 2 357 72 342 16 0 1 0 22 2252800 70 4294967295 32768 1879936 3199270704 3199269552 1113432 0 0 0 674311 3221479524 0 0 0 0 0 0
?
每個參數意思為:
參數?解釋
pid=1?進程(包括輕量級進程,即線程)號
comm= linuxrc?應用程序或命令的名字
task_state=S?任務的狀態,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead
ppid=0?父進程ID
pgid=0?線程組號
sid=0 c該任務所在的會話組ID
tty_nr=0(pts/3)?該任務的tty終端的設備號,INT(0/256)=主設備號,(0-主設備號)=次設備號
tty_pgrp=-1?終端的進程組號,當前運行在該任務所在終端的前臺任務(包括shell?應用程序)的PID。
task->flags=8388864進程標志位,查看該任務的特性
min_flt=50該任務不需要從硬盤拷數據而發生的缺頁(次缺頁)的次數
cmin_flt=633?累計的該任務的所有的waited-for進程曾經發生的次缺頁的次數目
maj_flt=20該任務需要從硬盤拷數據而發生的缺頁(主缺頁)的次數
cmaj_flt=4?累計的該任務的所有的waited-for進程曾經發生的主缺頁的次數目
utime=2?該任務在用戶態運行的時間,單位為jiffies
stime=357?該任務在核心態運行的時間,單位為jiffies
cutime=72?累計的該任務的所有的waited-for進程曾經在用戶態運行的時間,單位為jiffies
cstime=342?累計的該任務的所有的waited-for進程曾經在核心態運行的時間,單位為jiffies
priority=16?任務的動態優先級
nice=0?任務的靜態優先級
num_threads=1?該任務所在的線程組里線程的個數
it_real_value=0?由于計時間隔導致的下一個?SIGALRM?發送進程的時延,以?jiffy?為單位.
start_time=22?該任務啟動的時間,單位為jiffies
vsize=2252800(bytes)?該任務的虛擬地址空間大小
rss=70(page)?該任務當前駐留物理地址空間的大小
Number of pages the process has in real memory,minu 3 for administrative purpose.
這些頁可能用于代碼,數據和棧。
rlim=4294967295=0xFFFFFFFF(bytes)?該任務能駐留物理地址空間的最大值
start_code=32768=0x8000??該任務在虛擬地址空間的代碼段的起始地址(由連接器決定)
end_code=1879936該任務在虛擬地址空間的代碼段的結束地址
start_stack=3199270704=0Xbeb0ff30該任務在虛擬地址空間的棧的開始地址
kstkesp=3199269552 ?sp(32?位堆棧指針)?的當前值,?與在進程的內核堆棧頁得到的一致.
kstkeip=1113432 =0X10FD58?指向將要執行的指令的指針, PC(32?位指令指針)的當前值.
pendingsig=0?待處理信號的位圖,記錄發送給進程的普通信號
block_sig=0?阻塞信號的位圖
sigign=0?忽略的信號的位圖
sigcatch=674311被俘獲的信號的位圖
wchan=3221479524 ?如果該進程是睡眠狀態,該值給出調度的調用點
nswap=0?被swapped的頁數
cnswap=0?所有子進程被swapped的頁數的和
exit_signal=0 ?該進程結束時,向父進程所發送的信號
task_cpu(task)=0?運行在哪個CPU上
task_rt_priority=0?實時進程的相對優先級別
task_policy=0?進程的調度策略,0=非實時進程,1=FIFO實時進程;2=RR實時進程?
?
三、/proc/pid/status
包含了所有CPU活躍的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻。
?
/proc/286 # cat status
Name:?? mmtest
State:? R (running)
SleepAVG:?????? 0%
Tgid:?? 286
Pid:??? 286
PPid:?? 243
TracerPid:????? 0
Uid:??? 0?????? 0?????? 0?????? 0
Gid:??? 0?????? 0?????? 0?????? 0
FDSize: 32
Groups:
VmPeak:???? 1464 kB
VmSize:???? 1464 kB
VmLck:???????? 0 kB
VmHWM:?????? 344 kB
VmRSS:?????? 344 kB
VmData:?????? 20 kB
VmStk:??????? 84 kB
VmExe:???????? 4 kB
VmLib:????? 1300 kB
VmPTE:???????? 6 kB
Threads:??????? 1
SigQ:?? 0/256
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
?
輸出解釋
參數?解釋
Name?應用程序或命令的名字
State?任務的狀態,運行/睡眠/僵死/
SleepAVG?任務的平均等待時間(以nanosecond為單位),交互式任務因為休眠次數多、時間長,它們的?sleep_avg?也會相應地更大一些,所以計算出來的優先級也會相應高一些。
Tgid=286?線程組號
Pid=286?任務ID
Ppid=243?父進程ID
TracerPid=0?接收跟蹤該進程信息的進程的ID號
Uid Uid euid suid fsuid
Gid Gid egid sgid fsgid
FDSize=32?文件描述符的最大個數,最多能打開的文件句柄的個數file->fds
Groups:
VmPeak: 60184 kB /*進程地址空間的大小*/
VmHWM: 18020 kB /*文件內存映射和匿名內存映射的大小*/
VmSize(KB)=1499136?任務虛擬地址空間的大小?(total_vm-reserved_vm),其中total_vm為進程的地址空間的大小,reserved_vm:進程在預留或特殊的內存間的物理頁
VmLck(KB)=0?任務已經鎖住的物理內存的大小。鎖住的物理內存不能交換到硬盤?(locked_vm)
VmRSS(KB)= 344 kB?應用程序正在使用的物理內存的大小,就是用ps命令的參數rss的值?(rss)
VmData(KB)=20KB?程序數據段的大小(所占虛擬內存的大小),存放初始化了的數據;?(total_vm-shared_vm-stack_vm)
VmStk(KB)=84KB?任務在用戶態的棧的大小?(stack_vm)
VmExe(KB)=4KB?程序所擁有的可執行虛擬內存的大小,代碼段,不包括任務使用的庫?(end_code-start_code)
VmLib(KB)=1300KB?被映像到任務的虛擬內存空間的庫的大小?(exec_lib)
VmPTE=6KB?該進程的所有頁表的大小,單位:kb
Threads=1?共享使用該信號描述符的任務的個數,在POSIX多線程序應用程序中,線程組中的所有線程使用同一個信號描述符。
SigQ?待處理信號的個數
SigPnd?屏蔽位,存儲了該線程的待處理信號
ShdPnd?屏蔽位,存儲了該線程組的待處理信號
SigBlk?存放被阻塞的信號
SigIgn?存放被忽略的信號
SigCgt?存放被俘獲到的信號
CapInh Inheritable,能被當前進程執行的程序的繼承的能力
CapPrm Permitted,進程能夠使用的能力,可以包含CapEff中沒有的能力,這些能力是被進程自己臨時放棄的,CapEff是CapPrm的一個子集,進程放棄沒有必要的能力有利于提高安全性
CapEff Effective,進程的有效能力
?
四、/proc/loadavg
該文件中的所有值都是從系統啟動開始累計到當前時刻。該文件只給出了所有CPU的集合信息,不能該出每個CPU的信息。
?
/proc # cat loadavg
1.0???1.00 0.93 2/19 301
?
?
每個值的含義為:
參數?解釋
lavg_1 (1.0) 1-分鐘平均負載
lavg_5 (1.00) 5-分鐘平均負載
lavg_15(0.93) 15-分鐘平均負載
nr_running (2)?在采樣時刻,運行隊列的任務的數目,與/proc/stat的procs_running表示相同意思
nr_threads (19)?在采樣時刻,系統中活躍的任務的個數(不包括運行已經結束的任務)
last_pid(301)?最大的pid值,包括輕量級進程,即線程。
假設當前有兩個CPU,則每個CPU的當前任務數為4.61/2=2.31
?
五、/proc/286/smaps
該文件反映了該進程的相應線性區域的大小
/proc/286 # cat smaps
00008000-00009000 r-xp 00000000 00:0c 1695459??? /memtest/mmtest
Size:???????????????? 4 kB
Rss:????????????????? 4 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 4 kB
Private_Dirty:??????? 0 kB
00010000-00011000 rw-p 00000000 00:0c 1695459??? /memtest/mmtest
Size:???????????????? 4 kB
Rss:????????????????? 4 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty: ???????4 kB
00011000-00012000 rwxp 00011000 00:00 0????????? [heap]
Size:???????????????? 4 kB
Rss:????????????????? 0 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:??????? 0 kB
40000000-40019000 r-xp 00000000 00:0c 2413396??? /lib/ld-2.3.2.so
Size:?????????????? 100 kB
Rss:???????????????? 96 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:?????? 96 kB
Private_Dirty:??????? 0 kB
40019000-4001b000 rw-p 40019000 00:00 0
Size:??????? ?????????8 kB
Rss:????????????????? 8 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:??????? 8 kB
40021000-40022000 rw-p 00019000 00:0c 2413396??? /lib/ld-2.3.2.so
Size:???????????????? 4 kB
Rss:????????? ????????4 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:??????? 4 kB
40022000-4014e000 r-xp 00000000 00:0c 2413367??? /lib/libc-2.3.2.so
Size:????????????? 1200 kB
Rss:??????????????? 200 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:????? 200 kB
Private_Dirty:??????? 0 kB
4014e000-40152000 ---p 0012c000 00:0c 2413367??? /lib/libc-2.3.2.so
Size:??????????????? 16 kB
Rss:????????????????? 0 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:??????? 0 kB
40152000-4015a000 rw-p 00128000 00:0c 2413367??? /lib/libc-2.3.2.so
Size:??????????????? 32 kB
Rss:???????????????? 16 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:?????? 16 kB
4015a000-4015c000 rw-p 4015a000 00:00 0
Size:???????????????? 8 kB
Rss:????????????????? 8 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:??????? 8 kB
be8f1000-be906000 rwxp be8f1000 00:00 0????????? [stack]
Size:??????????????? 84 kB
Rss:????????????????? 4 kB
Shared_Clean:???????? 0 kB
Shared_Dirty:???????? 0 kB
Private_Clean:??????? 0 kB
Private_Dirty:??????? 4 kB
?
解釋說明:
每行數據格式如下:
(內存區域)開始-結束 訪問權限? 偏移 主設備號:次設備號 i節點? 文件。
be8f1000-be906000 rwxp be8f1000 00:00 0????????? [stack]
Size:相應虛擬地址空間的大小
RSS:?正在使用的物理內存的大小
Shared_Clean:??共享區域的未使用頁數
Shared_Dirty:???共享區域已經使用的頁數
Private_Clean:???私有區域未使用的頁數
Private_Dirty:??私有區域已經使用的頁數
?
六、/proc/pid/maps
該文件反映了進程占用的內存區域
/proc/286 # cat maps
00008000-00009000 r-xp 00000000 00:0c 1695459??? /memtest/mmtest
00010000-00011000 rw-p 00000000 00:0c 1695459??? /memtest/mmtest
00011000-00012000 rwxp 00011000 00:00 0????????? [heap]
40000000-40019000 r-xp 00000000 00:0c 2413396??? /lib/ld-2.3.2.so
40019000-4001b000 rw-p 40019000 00:00 0
40021000-40022000 rw-p 00019000 00:0c 2413396??? /lib/ld-2.3.2.so
40022000-4014e000 r-xp 00000000 00:0c 2413367??? /lib/libc-2.3.2.so
4014e000-40152000 ---p 0012c000 00:0c 2413367??? /lib/libc-2.3.2.so
40152000-4015a000 rw-p 00128000 00:0c 2413367??? /lib/libc-2.3.2.so
4015a000-4015c000 rw-p 4015a000 00:00 0
be8f1000-be906000 rwxp be8f1000 00:00 0????????? [stack]
每行數據格式如下:
(內存區域)開始-結束 訪問權限? 偏移 主設備號:次設備號 i節點? 文件。 【案例分析】總結
以上是生活随笔為你收集整理的Linux /proc/pid目录下相应文件的信息说明和含义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 一个例子彻底搞清楚拷贝构造函数和
- 下一篇: python 3 廖雪峰博客笔记(三)