📅  最后修改于: 2023-12-03 15:38:20.371000             🧑  作者: Mango
在 Linux 系统中,我们经常需要检查哪个进程正在使用更多的内存。这个任务可以通过 Shell-Bash 在命令行中完成。
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 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 -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
...