Linux
如何在 ubuntu 中查看程序使用的記憶體?
如何查看應用程序使用的原始記憶體數據?就像,假設我有一個文件名
something.sh
。現在我執行命令./something.sh
,然後我想查看它在 ram 中訪問的所有數據以及它在我的文件系統中訪問的所有文件、網路數據或它使用的連接。可能是此應用程序使用的記憶體的十六進制轉儲。我可以在 ubuntu 中這樣做嗎?
如何查看應用程序使用的原始記憶體數據…
一旦您獲得了程序的 PID(例如使用
ps(1)
or ),您就可以使用和pidof(8)
訪問其虛擬地址空間中的數據。吉爾斯在這裡寫了一個非常詳細的答案。/proc/PID/maps``/proc/PID/mem
…以及它在我的文件系統、網路數據或連接中訪問的所有文件
lsof
可以做到這一點。netstat
可能更適合與網路相關的描述符。例如 :$ netstat -tln # TCP connections, listening, don't resolve names. $ netstat -uln # UDP endpoints, listening, don't resolve names. $ netstat -tuan # TCP and UDP, all sorts, don't resolve names. $ lsof -p PID # "Files" opened by process PID.
注意:
netstat
的-p
開關將允許您列印與每一行關聯的程序(至少,您的程序)。要選擇特定程序,您可以簡單地使用grep
:$ netstat -tlnp | grep skype # TCP, listening, don't resolve (Skype).
有關這些工具的更多資訊:
netstat(8)
和lsof(8)
。另請參閱:(以及其他答案中提到的工具)。proc(5)