Tam*_*ari 6 linux process memory monitoring
如何查看应用程序使用的原始内存数据?比如,假设我有一个文件名something.sh。现在我运行命令./something.sh,然后我想查看它在 ram 中访问的所有数据以及它在我的文件系统中访问的所有文件、网络数据或它使用的连接。可能是此应用程序使用的内存的十六进制转储。我可以在 ubuntu 中做到这一点吗?
如何查看应用程序使用的原始内存数据...
一旦您获得了进程的 PID(例如使用ps(1)或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.
Run Code Online (Sandbox Code Playgroud)
注意:netstat的-p开关将允许您打印与每一行相关联的进程(至少是您的进程)。要选择特定进程,您可以简单地使用grep:
$ netstat -tlnp | grep skype # TCP, listening, don't resolve (Skype).
Run Code Online (Sandbox Code Playgroud)
有关这些工具的更多信息:netstat(8)和lsof(8). 另请参阅:(以及其他答案中提到的工具)。proc(5)