Linux如何查看进程的CPU和内存占用

记得上次调试慢速服务器时,我的手指都在出汗。
屏幕上数字在跳跃,CPU已经达到9 0%,内存也快满了。
如果此时没有使用正确的工具,你的头就会分分钟变大。

比如使用top,按P,你立刻就会发现是半夜偷偷更新日志的进程。
再按一次M键,看看谁在窃取内存。
嘿嘿,原来是老剧本了。
轻按k一下,立马就枯了,服务器立刻就顺利运行了。

但有时候,PS更方便。
比如你知道一个PID,就可以直接ps -p 1 2 3 4 5 一行数据,有多少CPU,有多少内存,用来做什么就一清二楚了。
或者使用grep进行过滤,ps aux | grep nginx,立即查看所有有nginx的进程,哪个是新的,哪个是旧的。

如果你想查看详细信息,htop 很棒。
颜色不同,树图中一眼就能看出谁是谁的父亲。
按F5 查看进程关系,按F6 调整显示内容,甚至可以点击鼠标杀死进程。
上次看到子进程跑得这么快,我就按了F5 ,哦,原来是缓存清理任务,跑完CPU就立刻停了。

不过最狠的还是pidstat。
这个东西可以采样,比如pidstat -u -p 1 2 3 4 5 1 5 ,每秒检查一次CPU,五次。
绘制数据,趋势一目了然。
上次看到进程CPU突然跳动。
我用这个查了一下,发现是一个周期性任务,但是这次正好触发了。

记忆力也很重要。
高VIRT但低RES意味着它占用较大的地址空间但实际上不消耗内存,例如共享库。
如果RES为高,则说明确实被占用。
小心内存泄漏。
上次有一个进程RES不断增加,最后发现计数器没有清零,而且越跑越大。

但是共享内存SHR必须单独讨论。
多个进程使用相同的内存,实际开销是共享的。
例如,如果两个程序共享同一个库,则SHR很高,但RES不高,这是正常的。
关键是看RES,也就是进程本身实际占用的。

所以,使用top或htop进行快速定位,使用ps进行精确检查,使用pidstat进行长期趋势。
内存方面,RES为王,SHR看情况。
但最重要的是知道何时使用哪一种。
上次有运维人员用ps查看CPU,所有进程都列出来了,几千行。
我惊讶地发现慢的没有找到,因为只有一个进程CPU明显就高了,但是ps aux却完全展开了,真是让人眼花缭乱。

等一下,还有一件事。
使用htop时,按Shift+F9 ,也可以选择发送信号。
上次子进程没有离开。
只需按 F9 并选择 SIGTERM,它就会立即停止。
但如果你想直接杀死它,按F9 并选择SIGKILL,那么它就会立即消失,甚至不需要喊回收。

所以,如果您知道如何使用这些工具,您还需要知道如何选择它们。
该温柔的时候就温柔,该狠的时候就狠。
但问题是,什么时候该温柔,什么时候该残忍?

linux查看进程占用的内存

上周,我的朋友遇到了一个问题。
他想知道如何查看Linux系统中进程的内存使用情况。
我向他介绍了几种方法,他都尝试了。

1 . top命令很简单。
只需单击顶部并在终端中按 Enter 键即可查看 CPU 和内存。
2 .然后我让他试试HTop,这是Top的改进版本,界面友好,功能也很多。
3 .我还教他使用ps、grep和awk来过滤进程。
命令有点复杂,他研究了半天。
4 .还有smem命令,需要安装。
安装后对内存进行了详细的测试。
5 、最后我告诉他,也可以通过/proc文件系统来查看,去/proc/[pid]/status查看即可。

他试了一下,说挺好用,但是有些命令比较复杂。
算了,你自己想办法吧。

linux如何查看内存占用进程

哎呀,我在 Linux 系统上遇到了很多关于内存使用的陷阱。
我记得曾经做过一个优化服务器内存使用的项目。
当时用top命令,一看,哇,好多进程信息,还能看到用了多少内存。
我按了M,发现占用内存最多的进程居然是后台服务,占用了8 0%的内存。
当时我就惊呆了,我想这怎么可能。

接下来,我再次尝试了 ps 命令,该命令对于静态检查进程的内存使用情况非常有用。
我用了 ps aux --sort=-%mem | head -n 1 0一旦运行此命令,它将列出内存使用率最高的前 1 0 个进程。
乍一看,可以看到后台服务还在,占用了6 0%的内存。
我知道我必须从这里开始。

然后我还使用 free 命令检查了系统范围的内存使用情况。
运行 free -h 命令,总内存、已用内存、可用内存一目了然。
我记得当时系统总内存是1 6 GB,已使用1 0GB,剩余6 GB,看起来很正常。

不过,为了更详细的分析,我还安装了htop工具。
它以交互方式监控进程并且非常易于使用。
我按F6 按内存使用情况排序,很快就找到了最大的内存使用情况。
最后,我使用 pmap 命令查看了该进程的内存映射详细信息,发现内存使用情况主要是由于大文件造成的。

综上所述,当涉及到Linux系统上的内存使用问题时,需要根据自己的具体情况来选择工具。
例如,我们建议使用 top 或 htop 以便于查看。
如果需要精确排序,请使用 ps 命令。
pmap 和 smem 适合进行详细分析。
结合使用 free 和 vmstat 来了解您的系统。
但是,您必须自己安装 htop。
top 命令通常随您的系统一起提供。
哈哈,这是我多年来踩过的陷阱。
我希望这有帮助。