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分区使用,生产还是比较多的

原文地址:https://www.cnblogs.com/FengGeBlog/p/12119634.html