admin 发表于 2023-5-31 10:30:26

查看pid使用swap得情况

1.脚本
#!/bin/bash
#description: 这是一个检查哪些进程使用了SWAP分区的脚本
do_swap () {
SUM=0
OVERALL=0
#获取进程目录
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/"` ; do
      #获取进程PID
    PID=`echo $DIR | cut -d / -f 3`
查看指定进程得swap
#!/bin/bash
#author: zclinux
#script name: swap_sum.sh
#version: v2
#description: 查看具体进程占用多少swap
#./swap_sum.sh /proc/`pidof xxx`/smaps

SUM=0
OVERALL=0
file=$1
#获取进程的所有分区中SWAP值
for SWAP in `grep Swap $file 2>/dev/null| grep -v SwapPss | awk '{ print $2 }'`
do
      #进程swap值求和
    let SUM=$SUM+$SWAP
done
#echo " Swap used: $SUM - $PROGNAME"
#总共swap分区值求和
let OVERALL=$OVERALL+$SUM
# echo "Overall swap used: $OVERALL"

## 可读性处理
## 小于1024kb直接输出
if [ $OVERALL -le 1024 ];then
      echo "Total swap is used: ${OVERALL}KB "

## 小于1024字节,转换为MB      
elif [ $OVERALL -le 1048576 ];then
      let sum=OVERALL/1024
      echo "Total swap is used: ${sum}MB"

## 不存在复数,所以剩下1024*1024 转换为GB
else
      let sum=OVERALL/1048576
      echo "Total swap is used: ${sum}GB"
fi
2.执行命令
for i in $( cd /proc;ls |grep "^"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10
页: [1]
查看完整版本: 查看pid使用swap得情况