Linux 内存使用情况检查

时间:2021-12-20 22:33:35
ps:其中rsz是是实际内存
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'  
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle |  sort -nrk5
其中rsz为实际内存,上例实现按内存排序,由大到小


$ top -u oracle
    PID:进程的ID
  USER:进程所有者
  PR:进程的优先级别,越小越优先被执行
  NInice:值
  VIRT:进程占用的虚拟内存
  RES:进程占用的物理内存
  SHR:进程使用的共享内存
  S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  %CPU:进程占用CPU的使用率
  %MEM:进程使用的物理内存和总内存的百分比
  TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
  COMMAND:进程启动命令名称


top命令  
top -d 1 -p pid [,pid ...]  //设置为delay 1s,默认是delay 3s  
如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)  


top -b -n 1 |grep oracle|sort -nrk10|awk '{print "VIRT:"$5,"RES:"$6,"cpu:"$9"%","mem:"$10"%"}' 


top -b -n 1 |grep oracle|sort -nrk10|awk '{print "PID:"$1,"USER:"$2,"VIRT:"$5,"RES:"$6,"cpu:"$9"%","mem:"$10"%"}' 


top -b -n 1 |sort -nrk10|awk '{print "PID:"$1,"USER:"$2,"VIRT:"$5,"RES:"$6,"cpu:"$9"%","mem:"$10"%"}' 




# linux 下 取进程占用 cpu 最高的前10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head


while true; do ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head; sleep 2; done




# linux 下 取进程占用内存(MEM)最高的前10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head




循环显示进程77988的设备格式的最后1行,间隔2秒,
while true; do pmap -d  77988 | tail -1; sleep 2; done


mapped: 73922396K    writeable/private: 25688K    shared: 73662464K
mapped: 73922396K    writeable/private: 25688K    shared: 73662464K
mapped: 73922404K    writeable/private: 25696K    shared: 73662464K
mapped: 73922412K    writeable/private: 25704K    shared: 73662464K
mapped: 73922412K    writeable/private: 25704K    shared: 73662464K
mapped: 73922420K    writeable/private: 25712K    shared: 73662464K
mapped: 73922428K    writeable/private: 25720K    shared: 73662464K
mapped: 73922436K    writeable/private: 25728K    shared: 73662464K
mapped: 73922436K    writeable/private: 25728K    shared: 73662464K
mapped: 73922444K    writeable/private: 25736K    shared: 73662464K
mapped: 73922452K    writeable/private: 25744K    shared: 73662464K
mapped: 73922452K    writeable/private: 25744K    shared: 73662464K
mapped: 73922460K    writeable/private: 25752K    shared: 73662464K


最后一行的值说明:
mapped 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz
writeable/private  表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小      
shared 表示进程和其他进程共享的内存大小


扩展进程内存:
pmap -x 77988


扩展和设备格式区域
Address: 内存开始地址
Kbytes: 占用内存的字节数(KB)
RSS: 保留内存的字节数(KB)
Dirty: 脏页的字节数(包括共享和私有的)(KB)
Mode: 内存的权限:read、write、execute、shared、private (写时复制)
Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
Offset: 文件偏移
Device: 设备名 (major:minor)