Linux:找出耗尽所有虚拟内存的内容
时间:2020-01-09 10:34:15 来源:igfitidea点击:
如何列出或显示正在耗尽Debian或Ubuntu Linux服务器下所有虚拟内存的所有进程,可执行文件和共享库,以进行故障排除?
虚拟内存不过是Linux和许多其他现代操作系统使用的内存管理技术。
内存统计工具 memstat,它结合了磁盘驱动器(硬盘或ssd等)上的活动RAM和不活动内存,以形成大范围的连续地址。
您可以使用memstat命令查看正在耗尽虚拟内存的所有进程,可执行文件和共享库。
该命令必须以root用户身份运行,以查看所有正在运行的进程的数据。
该输出旨在帮助您识别正在使用过多内存的程序,并减少总体内存浪费。
语法如下:
memstat memstat -w memstat -p PID-HERE
-w选项会导致较宽的打印输出:行在80列处不会被截断。
-p选项使memstat仅打印通过查看具有给定PID的进程(例如Apache进程)收集的数据。
例子
键入以下命令:
# memstat
或者
$ sudo memstat
输出示例(来自我的家用nfs服务器):
272k: PID 1 (/sbin/init) 536k: PID 467 (/sbin/udevd) 532k: PID 586 (/sbin/udevd) 276k: PID 1191 (/sbin/portmap) 296k: PID 1204 (/sbin/rpc.statd) 308k: PID 1222 (/usr/sbin/rpc.idmapd) 268k: PID 1385 (/usr/sbin/vnstatd) 91028k: PID 1424 (/usr/sbin/rsyslogd) 416k: PID 1473 (/sbin/mdadm) 1068k: PID 1493 (/usr/bin/atop) 464k: PID 1517 (/usr/sbin/atd) 404k: PID 1520 (/usr/sbin/rpc.mountd) 476k: PID 1530 (/usr/sbin/cron) 300k: PID 1539 (/usr/sbin/acpid) 560k: PID 1545 (/usr/sbin/sshd) 2056k( 8k): /usr/lib/libnfsidmap/nsswitch.so 1222 ------- 633108k ( 15844k)
输出说明
- 首先,列出了过程。显示内存量以及进程ID和该进程正在运行的可执行文件的名称。显示的内存量不包括共享内存:它仅包含该进程专用的内存。
- 完成这些过程后,将列出共享对象。显示内存量以及共享库的文件名,然后是使用共享库的进程列表。
- 最后,显示总计。
仅获取有关Apache或Nginx或Lighttpd进程的数据
首先,找到Web服务器的pid:
# pidof httpd # pidof nginx # pidof lighttpd
使用以下语法仅显示通过使用PID 3535查看过程收集的数据
# memstat -p 3535