shell脚本编写查看每个进程使用的swap分区的大小
#今天接到领导任务需要查看每个进程使用的swap分区大小,遂编写此脚本进行查看
#!/bin/bash function ComputeSwap { SUM=0 LUNXUN=0 for PID in `cat 1.txt| xargs` ; do PROGNAME=`ps -p $PID -o comm --no-headers` for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` do let SUM=$SUM+$SWAP done echo "PID=$PID - Swap used: $SUM - ($PROGNAME )" let LUNXUN=$LUNXUN+$SUM SUM=0 done echo "ALL swap used: $LUNXUN" } ls /proc | grep "^[0-9]"| sort -n > 1.txt ComputeSwap
我们看看最后执行的结果是什么
[root@master01 ~]# bash a.sh PID=1 - Swap used: 0 - (systemd ) PID=2 - Swap used: 0 - (kthreadd ) PID=3 - Swap used: 0 - (rcu_gp ) PID=4 - Swap used: 0 - (rcu_par_gp ) PID=6 - Swap used: 0 - (kworker/0:0H-xf ) PID=7 - Swap used: 0 - (kworker/u128:0- ) PID=8 - Swap used: 0 - (mm_percpu_wq ) PID=9 - Swap used: 0 - (ksoftirqd/0 ) PID=10 - Swap used: 0 - (rcu_sched ) PID=11 - Swap used: 0 - (rcu_bh )
这是测试环境下的,所以没有swap分区使用,生产还是比较多的