📌  相关文章
📜  如何在 linux 中检查哪个进程正在使用更多内存 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:38:20.371000             🧑  作者: Mango

如何在 Linux 中检查哪个进程正在使用更多内存

在 Linux 系统中,我们经常需要检查哪个进程正在使用更多的内存。这个任务可以通过 Shell-Bash 在命令行中完成。

使用 top 命令

top 命令可以实时地监控系统资源的使用情况。我们可以通过 top 命令来查看当前正在使用更多内存的进程。

top

使用 top 命令后,我们可以按下 M 键来按内存使用率排序,这样就能看到哪个进程正在使用更多的内存了。

$ top

top - 09:14:56 up  1:29,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 139 total,   1 running, 138 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4040768 total,   131328 free,  3375864 used,   531576 buff/cache
KiB Swap:  2097148 total,  2094704 free,     2444 used.   527044 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                            
  925 root      20   0 1710316 208864  46924 S  0.0  5.2   0:26.31 Xorg                                                                                                               
 1992 user1     20   0 2537456 187688  60748 S  0.0  4.6   0:10.99 gnome-shell                                                                                                        
 1759 user1     20   0  979612 128740  83428 S  0.0  3.2   0:05.11 gnome-software                                                                                                     
 2822 user1     20   0 2068216 114616  57388 S  0.0  2.8   0:00.67 gnome-terminal-                                                                                                    
...
使用 ps 命令

ps 命令可以列出当前运行的进程。我们可以通过 ps 命令查找哪个进程正在使用更多的内存。

ps aux --sort=-%mem | head

这条命令使用了 ps 命令,并按照内存使用率来排序。我们使用了 head 命令只显示前几行。

$ ps aux --sort=-%mem | head

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user1       1992  0.1  4.6 2537456 187688 tty2   Sl+  07:45   0:11 gnome-shell                                                                                                        
root         925  0.0  5.2 1710316 208864 tty1   Ss+  07:45   0:26 /usr/libexec/Xorg vt1 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3  
user1       1759  0.0  3.2  979612 128740 tty2   Sl+  07:45   0:05 gnome-software
使用 pidstat 命令

pidstat 命令可以单独列出每个进程的资源使用情况。我们可以使用 pidstat 命令查找哪个进程正在使用更多的内存。

pidstat -r

使用 pidstat 命令并加上 -r 参数,我们可以看到每个进程的内存使用情况。

$ pidstat -r

Linux 4.4.0-141-generic (ubuntu) 	02/28/2021 	_x86_64_	(4 CPU)

02:20:59 PM   UID       PID  %usr %system  %guest    %CPU   CPU  Command
02:20:59 PM  1000      1992  0.20    0.13    0.00    0.33     1  gnome-shell
02:20:59 PM     0       925  0.13    0.06    0.00    0.19     1  Xorg
02:20:59 PM  1000      1759  0.06    0.12    0.00    0.19     2  gnome-software
...