工作中会经常遇到某个应用消耗了大量内存导致系统缓慢的情况,这个时候第一件事就是登上系统找出占用内存最多的进程并杀掉它恢复应用,那么如何才能快速地查找占用最大内存的进程呢?
使用top命令和ps命令可以快速地查找出当前系统内存使用情况,下面就来介绍如何使用top和ps命令。
ps命令用法
用法:ps [ 参数 ]
参数含义
- -A 显示所有进程(等价于-e)(utility)
- -a 显示一个终端的所有进程,除了会话引线
- -N 忽略选择。
- -d 显示所有进程,但省略所有的会话引线(utility)
- -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
- -p pid 进程使用cpu的时间
- -u uid or username 选择有效的用户id或者是用户名
- -g gid or groupname 显示组的所有进程。
- U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
- -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
- -l 长格式(有F,wchan,C 等字段)
- -j 作业格式
- -o 用户自定义格式。
- v 以虚拟存储器格式显示
- s 以信号格式显示
- -m 显示所有的线程
- -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
- e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
- h 不显示第一行
ps命令在Linux中查找内存消耗最大的进程
ps命令用于展示当前系统进程的快照。用于查找有关在Linux系统上运行进程的信息。
它用于列出当前在运行的进程及其进程ID,进程所有者,进程优先级和路径等
下面的ps命令展示消耗内存进程排序的信息
[root@localhost ~]# ps aux --sort -rss | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
redhat 15808 1.3 25.7 1658408 297724 ? Rl 11:23 3:25 /usr/bin/gnome-shell
redhat 19740 0.0 12.3 1080168 142540 ? Sl 12:28 0:11 /usr/lib64/firefox/firefox
root 15349 0.4 3.5 214348 40668 tty1 Ss+ 11:23 1:16 /usr/bin/Xorg :0 -background none -verbose -auth /run/gdm/auth-for-gdm-gyP4e9/database -seat seat0 -nolisten tcp vt1
root 27024 0.0 1.3 104228 15668 ? S 15:40 0:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eno16777736.pid -lf /var/lib/NetworkManager/dhclient-dcb4d1bf-1d32-4d67-a5aa-876d8c50386d-eno16777736.lease -cf /var/lib/NetworkManager/dhclient-eno16777736.conf eno16777736
redhat 16409 0.0 1.2 621884 14364 ? Sl 11:24 0:09 /usr/libexec/gnome-terminal-server
polkitd 1066 0.0 1.0 520636 11832 ? Ssl 11:17 0:15 /usr/lib/polkit-1/polkitd --no-debug
redhat 15713 0.0 0.9 1077636 11336 ? Sl 11:23 0:01 /usr/libexec/gnome-settings-daemon
redhat 15874 0.0 0.8 981720 9300 ? Sl 11:23 0:00 /usr/bin/nautilus --no-default-window
redhat 15947 0.0 0.7 563408 8716 ? Sl 11:23 0:00 /usr/libexec/tracker-store
ps 在输出时展示有关内存的特定信息
[root@localhost ~]# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem |head
PID PPID %MEM %CPU CMD
15808 15532 25.7 1.3 /usr/bin/gnome-shell
19740 15808 12.4 0.0 /usr/lib64/firefox/firefox
15349 15344 3.5 0.5 /usr/bin/Xorg :0 -background none -verbose -auth /run/gdm/auth-for-gdm-gyP4e9/database -seat seat0 -nolisten tcp vt1
27024 1140 1.3 0.0 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eno16777736.pid -lf /var/lib/NetworkManager/dhclient-dcb4d1bf-1d32-4d67-a5aa-876d8c50386d-eno16777736.lease -cf /var/lib/NetworkManager/dhclient-eno16777736.conf eno16777736
16409 1 1.2 0.0 /usr/libexec/gnome-terminal-server
1066 1 1.0 0.0 /usr/lib/polkit-1/polkitd --no-debug
15713 15532 0.9 0.0 /usr/libexec/gnome-settings-daemon
15874 1 0.8 0.0 /usr/bin/nautilus --no-default-window
15947 1 0.7 0.0 /usr/libexec/tracker-store
ps只展示命令名称不展示绝对路径
[root@localhost ~]# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%mem | head
PID PPID %MEM %CPU COMMAND
15808 15532 25.7 1.3 gnome-shell
19740 15808 12.4 0.0 firefox
15349 15344 3.5 0.5 Xorg
27024 1140 1.3 0.0 dhclient
16409 1 1.2 0.0 gnome-terminal-
1066 1 1.0 0.0 polkitd
15713 15532 0.9 0.0 gnome-settings-
15874 1 0.8 0.0 nautilus
15947 1 0.7 0.0 tracker-store
top命令用法
用法:top[参数]
top参数含义
- d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
- p 通过指定监控进程ID来仅仅监控某个进程的状态。
- q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
- S 指定累计模式。
- s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
- i 使top不显示任何闲置或者僵死进程。
- c 显示整个命令行而不只是显示命令名。
使用top命令查找Linux中内存消耗最大的进程
Linux的top命令是用来监视Linux系统性能的命令
top命令查找系统中消耗内存最多的进程
[root@localhost ~]# top -c -b -o +%MEM | head
top - 16:02:03 up 4:44, 3 users, load average: 0.05, 0.06, 0.08
Tasks: 486 total, 3 running, 483 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.8 us, 0.9 sy, 0.0 ni, 95.5 id, 0.7 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 1154712 total, 83028 free, 694332 used, 377352 buff/cache
KiB Swap: 2097148 total, 1950656 free, 146492 used. 237924 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15808 redhat 20 0 1658408 297748 21048 S 30.0 25.8 4:07.74 /usr/bin/gnome-shell
19740 redhat 20 0 1080168 143536 15356 S 0.0 12.4 0:11.67 /usr/lib64/firefox/firefox
15349 root 20 0 211880 37872 5020 S 10.0 3.3 1:29.12 /usr/bin/Xorg :0 -background none -verbose -auth /run/gdm/auth-for-gdm+
top命令只查看命令名称不展示绝对路径
[root@localhost ~]# top -b -o +%MEM |head
top - 16:01:20 up 4:43, 3 users, load average: 0.01, 0.05, 0.08
Tasks: 487 total, 2 running, 485 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.7 us, 0.9 sy, 0.0 ni, 95.5 id, 0.7 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 1154712 total, 81600 free, 695700 used, 377412 buff/cache
KiB Swap: 2097148 total, 1950656 free, 146492 used. 236492 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15808 redhat 20 0 1658408 297748 21048 S 18.2 25.8 4:03.52 gnome-shell
19740 redhat 20 0 1080168 143536 15356 S 0.0 12.4 0:11.66 firefox
15349 root 20 0 211880 37872 5020 S 4.5 3.3 1:27.58 Xorg