方法一:PS
在ps命令中,「-T」選項可以開啟線程查看。下面的命令列出了由進程號為內<pid>的進程創建的所有容線程。
$ ps -T -p <pid>
「SID」欄表示線程ID,而「CMD」欄則顯示了線程名稱。
方法二: Top
top命令可以實時顯示各個線程情況。要在top輸出中開啟線程查看,請調用top命令的「-H」選項,該選項會列出所有Linux線程。在top運行時,你也可以通過按「H」鍵將線程查看模式切換為開或關。
$ top -H
要讓top輸出某個特定進程<pid>並檢查該進程內運行的線程狀況:
$ top -H -p <pid>
② linux如何查找到某一個進程在調用哪些文件
1. 取得進程號
cba001:/proc/26751/fd # ps -ef|grep named
root 17066 26915 0 13:06 pts/8 00:00:00 grep named
root 26751 1 0 Jul06 ? 00:02:06 /opt/***/***/usr/bin/named
[注]: 執行ps -ef|grep named取得named的進程號為26751
2.查看打開的文件
cba001:/proc/26751/fd # ls -al /proc/26751/fd/
total 20
dr-x------ 2 root vboxusers 0 Jul 21 12:48 .
dr-xr-xr-x 5 root vboxusers 0 Jul 6 10:25 ..
lrwx------ 1 root vboxusers 64 Jul 21 12:48 0 -> /dev/null
lrwx------ 1 root vboxusers 64 Jul 21 12:48 1 -> /dev/null
lr-x------ 1 root vboxusers 64 Jul 21 12:48 10 -> /dev/random
lrwx------ 1 root vboxusers 64 Jul 21 12:48 2 -> /dev/null
lrwx------ 1 root vboxusers 64 Jul 21 12:48 20 -> socket:/[64750499]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 21 -> socket:/[64750501]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 22 -> socket:/[64750503]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 23 -> socket:/[64750506]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 24 -> socket:/[64750507]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 3 -> socket:/[64750437]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 4 -> /dev/null
lr-x------ 1 root vboxusers 64 Jul 21 12:48 5 -> pipe:/[64750439]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 512 -> socket:/[64750498]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 513 -> socket:/[64750500]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 514 -> socket:/[64750502]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 515 -> socket:/[64750504]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 516 -> socket:/[64750505]
l-wx------ 1 root vboxusers 64 Jul 21 12:48 7 -> pipe:/[64750439]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 8 -> socket:/[64750441]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 9 -> /var/***/logs/***_trans.log
[注]:執行ls -al /proc/26751/fd/就可以看到所有的26751進程打開的文件描述符
③ Linux如何查看進程訪問哪個文件
1、查看進程「打開」的文件 (方法1):
1)pidof programe-name(獲得想了解的進程回(programe-name)的PID)
或ps -aux|grep programe-name(獲得想了解的進程(programe-name)的PID)
找出進程的PID
2)cd /proc/$PID/fd(會答看見文件描述符)
3)ls -l 得到文件描述符指向的實際文件,即當前進程打開的文件
2、查看進程「打開」的文件 (方法2):
1)獲得想了解的進程的PID方法同上
2)lsof -c programe-name
或lsof -p $PID
④ linux下使用pmap和ldd查看進程調用了什麼lib
pmap PID #查看靜態內存使用情況
top #按shift+m 按照內存使用情況進行排序
ps -ef | grep nginx #查看PID 比1234
cat /proc/1234/status #查看詳細信息
RSS列 表示 程序佔用少物理內存 虛擬內存用考慮並佔用實際物理內存 (2). top 命令 其VIRT(或VSS)列 表示程序佔用少虛擬內存 同 ps aux VSZ列 RES列 表示 程序佔用少物理內存同 ps aux RSS列 2.linux 查看前系統佔用少內存 般命令 free其 free系統少內存使用由於 linux 系統內存使用原則 內存寶貴 能使用少使用少 所 linux已經調用包緩存起放內存實際使用內存理解 free+buffers+cached3.解完些命令 再使用ps aux 命令查看候 發現奇怪現象 所 RSS 列數據加起 比物理內存數要 比 物理內存2G RSS列數據加起能5G 事 RSS列值騙我 linux內存機制: 運行程序 linux調用該程序依賴鏈接庫 lib.xx.so 首先看該鏈接庫否映射進內存沒映射則代碼段與數據段映射內存否則其加入進程址空間 N程序依賴lib.xx.so候 實際內存lib.xx.so N RSS顯示程序佔用實際物理內存 lib.xx.so算進 比 X程序 本身佔用內存5M lib.xx.so 佔用內存2Mlib.xx.soN程序共享依賴 則RSS顯示X程序運行佔用內存7M 實際 X程序佔用5M空間 餘2m討入RSS 用ps aux顯示內存佔用情況 N共享依賴lib.xx.soN程序都2m空間算自RSS RSSsum值比實際物理內存 linux內存使用機制復雜 句兩句能說清楚簡單說明 ps auxRSS值 並能真實反映物理內存使用情況 4. 查看更詳細內存使用情況 用幾種 或者幾種結合使用:幾種都需要root賬戶許可權(1). pmap -d $pid $pid 運行程序pid(2). cat /proc/$pid/smaps smaps數據比較詳細簡單歸納歸納命令: cat /proc/$pid/smaps | awk '/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}' (3). cat /proc/$pid/maps(4). cat /proc/$pid/statm輸解釋第列 size:任務虛擬址空間 第二列 Resident:使用物理內存 第三列 Shared:共享頁數第四列 Trs:程序所擁執行虛擬內存 第五列 Lrs:映像倒任務虛擬內存空間庫 第六列 Drs:程序數據段用戶態棧 第七列 dt:臟頁數量(5). vmstat命令據說提供些參考信息具體未研究 5.作phper嘗試使用php函數memory_get_usage() 該函數能php前運行程序實際真佔用內存數量 真想php真佔用內存 概能, 程序運行始執行memory_get_usage(). 程序運行結束執行memory_get_usage() 兩者值相減值 應該相比較准確內存佔用數量 沒測試 考慮 數量沒實際意義 加平比較忙懶試
⑤ linux查看文件被哪些進程使用
可以使用:ps
-fe|grep
filename,
也可以使用:fuser
filename查看
然後可以看這個進程跟哪裡東西有關聯專,使用了哪屬些埠
只查看該進程:ps
-ef
|
grep
ID
查看該進程打開的文件:lsof
-p
ID
查看內存分配:lcat
/proc/ID/maps
查看堆棧:pstack
11ID
查看發出的系統調用:strace
-p
ID
查看調用庫函數:ltrace
-p
ID
⑥ linux如何查找到某一個進程在調用哪些文件
Linux中查找被進程使用的所有文件,可以使用lsof命令,但是默認情況下lsof會將系統上已經打開版的文件都權列出來,所以常常需要用管道符加grep命令,選取指定的進程的信息,比如如下命令列出init進程在使用哪些文件:
lsof | grep init
⑦ linux下使用pmap和ldd查看進程調用了什麼lib
pmap PID #查看靜態內存使用情況top #按shift+m 按照內存使用情況進行排序
ps -ef | grep nginx #查看PID 比1234
cat /proc/1234/status #查看詳細信息
RSS列 表示 程序佔用少物理內存 虛擬內存用考慮並佔用實際物理內存 (2). top 命令 其VIRT(或VSS)列 表示程序佔用少虛擬內存 同 ps aux VSZ列 RES列 表示 程序佔用少物理內存同 ps aux RSS列 2.linux 查看前系統佔用少內存 般命令 free其 free系統少內存使用由於 linux 系統內存使用原則 內存寶貴 能使用少使用少 所 linux已經調用包緩存起放內存實際使用內存理解 free+buffers+cached3.解完些命令 再使用ps aux 命令查看候 發現奇怪現象 所 RSS 列數據加起 比物理內存數要 比 物理內存2G RSS列數據加起能5G 事 RSS列值騙我 linux內存機制: 運行程序 linux調用該程序依賴鏈接庫 lib.xx.so 首先看該鏈接庫否映射進內存沒映射則代碼段與數據段映射內存否則其加入進程址空間