在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命名的資料夾,在該資料夾下會有我們的程序的資訊...