合 Linux中查询swap占用率最高的前几个进程
smem
1 2 3 4 5 | yum install -y smem -- swap消耗最多的前10个进程(单位KB,内存使用量(PSS,单位为KB)、swap使用量(单位为KB)) smem -s swap -r -n | head -n 11 |
脚本1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | cat > /tmp/swap_check.sh <<"EOF" #!/bin/bash #script name: swap_check.sh #author: wuhs #version: v1 #description: 这是一个检查哪些进程使用了SWAP分区的脚本 do_swap () { SUM=0 OVERALL=0 #获取进程目录 for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do #获取进程PID PID=`echo $DIR | cut -d / -f 3` #获取进程名称 PROGNAME=`ps -p $PID -o comm --no-headers` #获取进程的所有分区中SWAP值 for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` do #进程swap值求和 let SUM=$SUM+$SWAP done echo "PID=$PID - Swap used: $SUM - $PROGNAME" #总共swap分区值求和 let OVERALL=$OVERALL+$SUM SUM=0 done echo "Overall swap used: $OVERALL" } do_swap > /tmp/tmp.txt #查询结果排序并截取top10 cat tmp.txt |awk -F[\ \(] '{print $5,$1,$7}' | sort -n | tail -10 cat tmp.txt |tail -1 rm -rf tmp.txt EOF sh /tmp/swap_check.sh |