1.可以使用一下命令查使用内存最多的10个进程
ps -aux | sort -k4nr | head -n 10
2. 可以使用一下命令查使用CPU最多的10个进程
ps -aux | sort -k3nr | head -n 10
1)命令解释
ps aux: 列出目前所有的正在内存当中的程序
a显示终端上地所有进程,包括其他用户地进程(有的进程没有终端)
-a 显示所有终端机下执行的进程,除了阶段作业领导者之外。
u 以用户为主的格式来显示进程状况。
x 显示所有进程,不以终端机来区分。
a会包括其他用户(否则只有用户本身); x会包括其他终端;
aux就可以包括内存所有;
2)pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。
还有tty1-tty6表示文字界面;
pty=ptmx+pts虚拟终端; ty 是type的缩写;
ptmx and pts - pseudo-terminal master and slave
tty一词源于teletypes,终端设备的统称;
3)使用ps aux 出现的列的含义
USER:该 process 属于那个使用者账号的
PID :该 process 的号码
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes) 虚拟内存集,进程占用的虚拟内存空间
RSS :该 process 占用的固定的内存量 (Kbytes) 物理内存集,进程战用实际物理内存空间.
(物理内存是安装在主机板上的内存。
虚拟内存是作业系统在硬盘上建立一个档案,把物理内存中不常用的部分拷贝起来,再把那个部分的物理内存清空,方便别的程序写入。虚拟内存的大小是可以自定,但是大小通常在物理内存的1到2倍之间,太大的话,虚拟内存的效能会下降。
因为虚拟内存在硬盘上,所以它的速度是取决于硬盘的存取速度、碎片的多少等。另外,因为它不像物理内存一样,资料与停机后消失,所以虚拟内存是可以透过解密方法读取其中的资料。SWAP是linux的虚拟内存,相当于windows的虚拟内存)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令
4) sort 参数
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。
PS:linux对内存的一些思想
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
可以使用以下命令释放缓存:
第一步,使用free命令查看内存,这其实没有什么实际作用,就是做个前后对比;
第二步,执行sync命令,是为了确保文件系统的完整性(sync命令将所有未写的系统缓存写到磁盘中);
第三步,执行echo 3 > /proc/sys/vm/drop_caches就开始释放内存了。
这里说明一下/proc/sys/vm/drop_caches的作用:当写入1时,释放页面缓存;写入2时,释放目录文件和inodes;写入3时,释放页面缓存、目录文件和inodes。可见,整个操作过程就是释放磁盘缓存。
Linux系统与Windows在对待内存的问题上是持不同意见的。Linux会尽量使用内存来提高效率,free查看剩余内存小并不是说内存不够用,还应该看swap是否被大量使用了。实际项目的经验告诉我们,如果是因为应用程序有内存泄漏、溢出的问题,从swap的使用情况是可以比较快速判断的,查看剩余内存是没有意义的或十分困难的。
free命令里各项内存指标说明:
total used free shared buffers cached
Mem: 16425996 10727220 5698776 0 380904 9389832
-/+ buffers/cache: 956484 15469512
Swap:
8273464 212 8273252
其中第一行用全局角度描述系统使用的内存状况:
total——总物理内存
used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存
free——完全未被使用的内存
shared——应用程序共享内存
buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)
cached——缓存,用于已打开的文件
总结:
total=used+free
used=buffers+cached (maybe add shared also)
第二行描述应用程序的内存使用:
前个值表示-buffers/cache——应用程序使用的内存大小,used减去缓存值
后个值表示+buffers/cache——所有可供应用程序使用的内存大小,free加上缓存值
总结:
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached
第三行表示swap的使用:
used——已使用
free——未使用
注:部分内容摘自下面的文章,文章写的流畅易懂,建议阅读 https://book.2cto.com/201407/44607.html