linux怎么看占用内存

如何linux是哪个系统在占内存

干货分享|Linux下查看内存使用情况方法总结

下面是一些在 Linux 中检查内存的方法:
/proc/meminfo 是最直接的。
free -h 快速概述。
htop 仔细查看每个进程。
全家桶监控之上。
排名靠前,看看谁吃得更多。

gnome-系统监视器图形界面。
ksysguard KDE 版本图形界面。
memstat单进程深度挖掘。
nmon 图表查看趋势。
ps 进程内存排序。
smem 用户内存统计。

您想要哪一点?

Linux中如何检查内存

说实话,刚接手服务器时,使用 ps 命令检查 Linux 内存和 CPU 让我很头疼。
但是后来发现只用几行命令不太方便。
现在让我告诉你我自己发现的细节和陷阱。

我们先来说说最基本的PS Aux。
我记得当我第一次在虚拟机中输入这个命令时,屏幕上全是扭曲的字符,CPU内存数字就像一个跳舞的大师。
后来我发现这个东西其实是实时捕获系统状态的,所以每次运行的结果并不完全一样。
一个小技巧是添加 h 参数来显示僵尸进程。
虽然我自己用的不多,但是也见过很多次系统莫名其妙的死机。
原来某个进程停止了,只剩下我一个人了。

排序部分是最有趣的。
我需要 ps aux --sort %cpu |养成在 CPU 达到峰值时运行 head-n1 0 的习惯,以立即删除最消耗的资源。
有一次,我正在排除一个导致 Nginx 像乌龟一样慢下来的故障。
原来是某个Python脚本运行了过多的线程并占满了CPU。
这个 --sort 参数特别灵活。
例如,添加 -o rss 允许按物理内存排序,这对于分析内存泄漏特别有用。
但要小心,排序时需要动动脑子。
请小心,否则您会对大量结果感到惊讶。

我经常使用这个技巧来过滤用户。
例如,如果服务器上有一个顽皮的脚本总是导致内存溢出,则 ps -u 用户名|跑步。
grepscript_name 直接定位它。
但是,您应该注意一个危险。
有些进程显示的用户并不是登录的用户,而可能是systemd等服务。
这种情况下,需要使用-C参数直接通过命令名来查找。
我记得我检查过一次系统日志,发现 sshd 的 CPU 异常高。
原来有一个内部设备使用了ssh,我用ps -C sshd 查出来了。

我曾经遇到过线程信息的麻烦。
有一个Java应用程序挂起,系统报错但看不到线程堆栈,所以我使用了ps -L PID。
这需要知道确切的进程号。
当时我就先靠top命令找到了PID,然后再回去查看线程。
但还有更好的方法。
ps -T PID可以直接观察线程,比-L参数直观得多。
不过这个东西很少用,因为大多数时候直接用jstack更方便。

自定义排序实际上是相当高级的。
我有一个监控脚本,需要按内存使用情况+进程生存时间排序,所以我使用了 ps aux --sort (%mem)+(%time)。
不过,请注意请注意,参数的顺序不能错误,并且并非所有 Linux 发行版都支持这种加号连接。
您应该使用逗号或将它们分开连接。
我记得CentOS 6 上出了问题,排序结果乱了。

最后我们来谈谈GUI工具。
我有一个朋友坚持认为 htop 比 ps 好。
真的很方便,颜色也标注得很清楚。
但我个人比较喜欢终端,因为终端可以立即复制PID并直接用kill -9 杀死它。
此外,GUI 工具在服务器上运行时会消耗资源。
我有一个客户,他的服务器是一台旧机器,运行 htop 时几乎蓝屏。
所以我建议初学者先学习PS,熟悉了再考虑Htop。

总之,PS命令是个宝,但一定要用在合适的场景。
例如,要检查实时动态,请使用 TOP;要获取准确的线程信息,请使用 Jstack;要可视化,请使用 HTOP。
但要快速发现问题,ps aux 是最好的。