Centos7 如何查看谁使用了内存?ps -aux | sort -k4nr是什么
这样的内存使用正常吗?为何2G内存一下子就只剩下600MB
[root@aliyun ~]# ps -aux | sort -k4nr
mysql 1053 0.3 6.4 1173436 122392 ? Sl Jun29 4:40 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr
/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
apache 12179 0.2 1.8 872784 35764 ? S 07:24 1:56 php-fpm: pool www
apache 12399 0.2 1.8 872692 35184 ? S 07:32 1:54 php-fpm: pool www
apache 12178 0.2 1.7 870512 33172 ? S 07:24 1:56 php-fpm: pool www
apache 12215 0.2 1.7 870408 33220 ? S 07:25 1:57 php-fpm: pool www
apache 12177 0.2 1.6 868764 31832 ? S 07:24 1:57 php-fpm: pool www
apache 12180 0.2 1.6 868712 31836 ? S 07:24 1:56 php-fpm: pool www
apache 12181 0.2 1.6 868584 31620 ? S 07:24 1:57 php-fpm: pool www
apache 13245 0.2 1.6 868504 31396 ? S 08:03 1:49 php-fpm: pool www
apache 14554 0.2 1.6 868196 31276 ? S 08:52 1:42 php-fpm: pool www
apache 19058 0.2 1.6 868296 31116 ? S 10:55 1:16 php-fpm: pool www
root 12173 0.0 0.8 505932 16444 ? Ss 07:24 0:02 php-fpm: master process (/etc/php-fpm.conf)
root 1207 0.2 0.6 770380 12368 ? Sl Jun29 2:35 /usr/local/aegis/aegis_client/aegis_00_73/AliYunDun
root 1222 0.1 0.5 780056 10304 ? Sl Jun29 2:12 /usr/local/aegis/alihids/AliHids
nginx 13802 0.0 0.2 113140 4932 ? S 08:23 0:10 nginx: worker process
nginx 13803 0.0 0.2 113448 5180 ? S 08:23 0:10 nginx: worker process
root 1 0.0 0.2 138196 4028 ? Ss Jun29 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 1723 0.1 0.2 135912 5604 ? Ss 19:03 0:00 sshd: root@pts/0
ntp 446 0.0 0.1 29604 2084 ? Ss Jun29 0:00 /usr/sbin/ntpd -u ntp:ntp -g
root 13801 0.0 0.1 109580 2104 ? Ss 08:23 0:00 nginx: master process /usr/sbin/nginx
root 1736 0.1 0.1 116408 3184 pts/0 Ss 19:03 0:00 -bash
root 352 0.0 0.1 43016 3112 ? Ss Jun29 0:00 /usr/lib/systemd/systemd-journald
root 408 0.0 0.1 208224 3596 ? Ssl Jun29 0:00 /usr/sbin/rsyslogd -n
root 647 0.0 0.1 463456 2576 ? Ssl Jun29 0:41 /usr/local/aegis/aegis_update/AliYunDunUpdate
root 864 0.0 0.1 82492 3592 ? Ss Jun29 0:00 /usr/sbin/sshd -D
dbus 415 0.0 0.0 28632 1652 ? Ss Jun29 0:01 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-a
ctivation
mysql 895 0.0 0.0 115344 1700 ? Ss Jun29 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
nscd 416 0.0 0.0 711504 1476 ? Ssl Jun29 0:00 /usr/sbin/nscd
1)为何里面这个
root 1207 0.2 0.6 770380 12368 ? Sl Jun29 2:35 /usr/local/aegis/aegis_client/aegis_00_73/AliYunDun
这一段,表示的是占用了770多MB内存?还是12MB内存?
2)如何将这些数字格式成 MB单位的,现在貌似是 byte 单位。
3) 这个
k4nr
代表了什么,网上有一些
ps -aux | sort -k4nr | head 5
说可以只显示头5条,但centos7中运行报错
head: cannot open ‘5’ for reading: No such file or directory
Answers
1) 12M内存.正常来说,你单纯的ps -aux会显示每列的参数的名称.
比如这样
VSZ是表示虚拟内存占用的大小,RSS是表示实际内存占用大小.另外你从内存占用的百分比也可以看出来,不可能是700多M的.
2)ps内并没有相关的标志位可以设置将kb转为Mb,可以自己用脚本转换或者外部工具
3)-k4nr是sort命令的参数,k4表示比较的是第四个key,也就是内存占用%的那一列,n是按照数字方式来比较,r表示反转排序结果,默认是从低到高,r之后就变成从高到低.如果你要用展示最初的5条,应该再加上head -n 5.而不是直接用head 5.
PS:都是很基本的Linux命令使用,楼主要花点时间学习下了.
我自己在 ~/.bashrc 里定义的查看进程内存的函数:
mem ()
{
top -n1 -b | head -n7 | sed '1,6d' && top -n1 -b | sed '1,7d' | grep --color=auto $1;
ps aux | grep --color=auto $1 | grep --color=auto -v grep | awk -F " " '{ sum += $6 } END { printf "Total Memory Usage: %.1f MB\n", sum/1024 }'
}
重启终端或者source ~/.bashrc后生效.
使用:
mem fpm
ps aux里的RSS(Resident Set Size)对应top里的RES,表示常驻内存,就是我们经常说的程序占用的内存.
你用ps查看前5条应该这样写:
ps aux | sort -k4nr | head -n5
另外,top里面按Shift+M是按内存排序,按E是切换内存单位,按Shfit+W保存设置.
然后执行top -n1 -b可以看到按内存排序的所有进程的信息.