Linux程序執行空間檢視

2021-06-03 19:04:52 字數 4803 閱讀 2186

在linux下,當乙個服務程式啟動,如何檢視這個服務程序記憶體占用情況?這裡簡單列出以下linux命令是如何檢視的,檢視出來的資訊表示什麼意思

1、首先你要找到你所有檢視程序id,方法很多,這裡介紹本人常用的方法:

通過命令ps -ef檢視當前系統所有程序資訊,然後找到自己關係的那個程序即可,當系統程序很多時,比較麻煩,加上grep命令進行刷選

root@dremi-desktop:~# ps -ef

uid        pid  ppid  c stime tty          time cmd

root         1     0  0 11:41 ?        00:00:00 /sbin/init

root         2     0  0 11:41 ?        00:00:00 [kthreadd]

root         3     2  0 11:41 ?        00:00:00 [migration/0]

root         4     2  0 11:41 ?        00:00:00 [ksoftirqd/0]

root         5     2  0 11:41 ?        00:00:00 [watchdog/0]

root         6     2  0 11:41 ?        00:00:00 [events/0]

root         7     2  0 11:41 ?        00:00:00 [khelper]

root        42     2  0 11:41 ?        00:00:00 [kblockd/0]

如:

root@dremi-desktop:~#ps -ef | grep bash

dremi     5993  5990  0 11:44 pts/0    00:00:00 bash

root 6270 6266 0 11:56 pts/1 00:00:00 -bash

root 6379 6270 0 12:00 pts/1 00:00:00 grep bash

root@dremi-desktop:~#

如果知道程序全稱,直接用這個命令最方便pidof 程序名稱

root@dremi-desktop:~# pidof bash

5993

root@dremi-desktop:~#

2、找到了進出id,下面直接檢視該程序執行空間資訊,可以查/proc/pid/maps檔案,也可以通過pmap命令之間列印出來

root@dremi-desktop:~# cat /proc/5993/maps

08048000-080ef000 r-xp 00000000 08:01 1605637 /bin/bash

080ef000-080f5000 rw-p 000a6000 08:01 1605637 /bin/bash

080f5000-08312000 rw-p 080f5000 00:00 0 [heap]

b7bd2000-b7bdc000 r-xp 00000000 08:01 17500 /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdc000-b7bdd000 r--p 00009000 08:01 17500 /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdd000-b7bde000 rw-p 0000a000 08:01 17500 /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bde000-b7be6000 r-xp 00000000 08:01 17504 /lib/tls/i686/cmov/libnss_nis-2.11.1.so

b7be6000-b7be7000 r--p 00007000 08:01 17504 /lib/tls/i686/cmov/libnss_nis-2.11.1.so

b7be7000-b7be8000 rw-p 00008000 08:01 17504 /lib/tls/i686/cmov/libnss_nis-2.11.1.so

b7be8000-b7bfb000 r-xp 00000000 08:01 17494 /lib/tls/i686/cmov/libnsl-2.11.1.so

b7bfb000-b7bfc000 r--p 00012000 08:01 17494 /lib/tls/i686/cmov/libnsl-2.11.1.so

b7bfc000-b7bfd000 rw-p 00013000 08:01 17494 /lib/tls/i686/cmov/libnsl-2.11.1.so

root@dremi-desktop:~# pmap 5993

5993: bash

08048000 668k r-x-- /bin/bash

080ef000 24k rw--- /bin/bash

080f5000 2164k rw--- [ anon ]

b7bd2000 40k r-x-- /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdc000 4k r---- /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdd000 4k rw--- /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bde000 32k r-x-- /lib/tls/i686/cmov/libnss_nis-2.11.1.so

b7be6000 4k r---- /lib/tls/i686/cmov/libnss_nis-2.11.1.so

b7be7000 4k rw--- /lib/tls/i686/cmov/libnss_nis-2.11.1.so

b7be8000 76k r-x-- /lib/tls/i686/cmov/libnsl-2.11.1.so

b7bfb000 4k r---- /lib/tls/i686/cmov/libnsl-2.11.1.so

b7bfc000 4k rw--- /lib/tls/i686/cmov/libnsl-2.11.1.so

上面顯示結果表示的意思,下面會作介紹,

通常我習慣用這兩種方法:

root@dremi-desktop:~# cat /proc/`pidof bash`/maps

08048000-080ef000 r-xp 00000000 08:01 1605637 /bin/bash

080ef000-080f5000 rw-p 000a6000 08:01 1605637 /bin/bash

080f5000-08312000 rw-p 080f5000 00:00 0 [heap]

b7bd2000-b7bdc000 r-xp 00000000 08:01 17500 /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdc000-b7bdd000 r--p 00009000 08:01 17500 /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdd000-b7bde000 rw-p 0000a000 08:01 17500 /lib/tls/i686/cmov/libnss_files-2.11.1.so

root@dremi-desktop:~# pmap `pidof bash`

5993

08048000 668k r-x-- /bin/bash

080ef000 24k rw--- /bin/bash

080f5000 2164k rw--- [ anon ]

b7bd2000 40k r-x-- /lib/tls/i686/cmov/libnss_files-2.11.1.so

b7bdc000 4k r---- /lib/tls/i686/cmov/libnss_files-2.11.1.so

3、顯示的資訊表示的意思:

每個區間都有四個屬性:  

r表示可以讀取。  

w表示可以修改。  

x表示可以執行。  

p/s表示是否為共享記憶體。  

有檔名的記憶體區間,屬性為r—p表示存放的是rodata。  

有檔名的記憶體區間,屬性為rw-p表示存放的是bss和data

有檔名的記憶體區間,屬性為r-xp表示存放的是text資料。  

沒有檔名的記憶體區間,表示用mmap對映的匿名空間。  

檔名為[stack]的記憶體區間表示是棧。  

檔名為[heap]的記憶體區間表示是堆。

linux檢視當前執行的程序

可以使用ps命令。它能顯示當前執行中程序的相關資訊,包括程序的pid。linux和unix都支援ps命令,顯示所有執行中程序的相關資訊。ps命令能提供乙份當前程序的快照。如果想狀態可以自動重新整理,可以使用top命令。ps命令 輸入下面的ps命令,顯示所有執行中的程序 其中,a 顯示所有程序 a 顯...

linux 檢視執行程序所在目錄

通過ps 及top 命令檢視程序資訊時,只能查到相對路徑 查不到的程序的詳細資訊,如絕對路徑 等。這時,我們需要通過以下的方法來檢視程序的詳細資訊 linux 在啟動乙個程序時,系統會在 proc 下建立乙個以pid命名的資料夾,在該資料夾下會有我們的程序的資訊,其中包括乙個名為exe的檔案即記錄了...

linux 檢視執行程序所在目錄

在linux下檢視程序用 ps ef grep 通過ps及top命令檢視程序資訊時,只能查到相對路徑,查不到的程序的詳細資訊,如絕對路徑等。這時,我們需要通過以下的方法來檢視程序的詳細資訊 linux在啟動乙個程序時,系統會在 proc下建立乙個以pid命名的資料夾,在該資料夾下會有我們的程序的資訊...