Linux

如何在 ubuntu 中查看程序使用的記憶體?

  • August 15, 2015

如何查看應用程序使用的原始記憶體數據?就像,假設我有一個文件名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)

引用自:https://unix.stackexchange.com/questions/223351