萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 查看佔用記憶體進程資源的 6 種實用方法 (ps、strace、gdb、lsof)

系統記憶體耗盡時,需快速定位佔用大戶與其行為。本文整理 6 種進階分析指令:列出執行緒、系統呼叫追蹤、CPU 時間統計、特定函數過濾、GDB 附著調試、檔案描述符檢視。

1. 查看進程執行緒

ps -eLf | egrep 'gateserver|UID'
# -L 顯示 LWP (輕量進程/執行緒) ID

2. 追蹤進程系統呼叫

strace -p 15530
# 即時顯示進程 15530 的所有 syscall

3. 統計系統呼叫 CPU 時間

strace -p 16334 -c
# 彙總各 syscall 次數、錯誤、耗時百分比

4. 將追蹤輸出導向檔案

strace -p 15530 -o out.file
# 方便事後分析大量輸出

5. 只顯示特定函數 (如 recv)

strace -p 5314 -f -F -e recv
# -f 追蹤子進程, -F 追蹤 vfork, -e recv 只看 recv 相關

6. GDB 附著調試執行緒

gdb -p 
# 進入 gdb 後可用 info threads, thread apply all bt 等指令

7. 查看進程開啟的檔案描述符

lsof -p 
# 顯示檔案、網路連線、管道等所有 FD

綜合排查建議

  1. top/htop 找出高記憶體/CPU 進程 PID。
  2. ps -eLf 確認執行緒數是否異常暴增。
  3. strace -c 看是否卡在特定 syscall (如 futex、poll)。
  4. lsof -p 檢查洩漏的檔案/連線描述符。
  5. 必要時 gdb -p 取得堆疊回溯定位程式碼行號。

copyright © 萬盛學電腦網 all rights reserved