有时候会遇到服务器内存占用过高的情况,这时候有必要进行内存使用情况排查,找到具体是哪些进程拖垮了系统内存。
一、查看系统内存使用情况
# free -h
或
# free -m
或
# free

该项可查看系统总体内存使用情况。
二、查看内存占用TOP10
//查看内存占用Top10
# ps aux | head -1;ps aux | grep -v PID |sort -rn -k +4 | head -10
//查看内存占用Top20
# ps aux | head -1;ps aux | grep -v PID |sort -rn -k +4 | head -20

该项可查看占用内存较大的进程,此处占用内存较大的为gnome-shell。
三、查看gnome-shell进程内存使用情况
//查看gnome-shell内存占用情况
# ps auxwww | grep gnome-shell
命令"ps auxwww | grep gnome-shell"的结果会显示与gnome-shell相关的进程信息。这些信息通常包括进程的PID(进程ID)、用户、CPU使用率、内存使用率、启动时间、控制终端(TTY)以及命令行等信息。
具体来说,每一列的含义如下:
- USER:运行进程的用户。
- PID:进程的唯一标识符。
- %CPU:进程占用的CPU使用率。
- %MEM:进程占用的内存使用率。
- VSZ:进程使用的虚拟内存大小(以KB为单位)。
- RSS:进程使用的物理内存大小(以KB为单位)。
- TTY:进程的控制终端。如果进程没有控制终端,这一列通常是?。
- STAT:进程的状态,如R(运行中)、S(休眠)等。
- START:进程的启动时间。
- TIME:进程使用的总CPU时间。
- COMMAND:启动进程的命令或命令行。
四、临时解决gnome-shell内存占用过高
# systemctl restart gdm.service
五、永久关闭gnome-shell图形界面
# systemctl stop gdm.service
# systemctl disable gdm.service
# systemctl status gdm.service
# systemctl set-default multi-user.target
- systemctl stop gdm.service
该命令用于停止gdm.service。执行此命令后,gnome显示管理器将不再运行,这通常意味着你将退出图形界面并可能进入命令行界面。但是,即使你停止了gdm.service,系统可能仍然有其他的显示管理器或服务在运行。
- systemctl disable gdm.service
该命令用于在系统启动时禁用gdm.service。这意味着你手动启动系统并进入图形界面,gdm.service也不会自动启动。如果你想在系统启动时完全避免使用图形界面,这个命令会很有用。但是,这不会停止当前正在运行的gdm.service实例,你需要先使用systemctl stop命令来停止它。
- systemctl status gdm.service
该命令用于查看gdm.service的当前状态。它会显示服务是否在运行、是否已启用(在系统启动时是否会自动启动)、服务的描述信息、服务的配置文件位置、服务的进程ID(如果正在运行)等等。
- systemctl set-default multi-user.target
该命令用于设置系统的默认目标为multi-user.target。multi-user.target是一个多用户模式的目标,它不启动图形界面,通常用于服务器或需要最小化启动的系统。设置此目标后,即使你手动启动图形界面,系统重启后也会进入多用户模式,而不是图形界面。