限制进程使用虚拟内存 linux_Linux下精确定位使用swap的进程,网友:值得拥有

67da7f718106f2cedc464ff94da67eb3.png

相信做过运维的朋友,一定碰到在linux系统中,有时候会使用swap交换分区,一旦应用使用了swap,那么性能就会直线下降,应用响应时间变成,过一会儿,应用不再使用swap,应用又自动恢复了。

当运维人员去定位到底是哪个应用使用swap交换分区时,又非常的困难,因为很少有日志会记录这个,从监控平台,能看到某个时间段,linux的swap交换分区有使用。

为了解决这个问题,下面给大家分享一个Linux下精确定位使用swap的进程的shell脚本,这个脚本可以放到crontab下,一分钟执行一次。

8af3ec33dd994ac53a1f0adbf73bea0d.png

脚本内容如下所示

[root@localhost ~]# cat swap.sh  #!/bin/bash# Get current swap usage for all running processesfunction getswap {SUM=0OVERALL=0for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; doPID=`echo $DIR | cut -d / -f 3`PROGNAME=`ps -p $PID -o comm --no-headers`for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`dolet SUM=$SUM+$SWAPdoneecho "PID=$PID - Swap used: $SUM - ($PROGNAME )"let OVERALL=$OVERALL+$SUMSUM=0doneecho "Overall swap used: $OVERALL"}getswap输出结果[root@localhost ~]# ./swap.sh PID=1 - Swap used: 0 - (systemd )PID=2 - Swap used: 0 - (kthreadd )PID=4 - Swap used: 0 - (kworker/0:0H )PID=5 - Swap used: 0 - (kworker/u256:0 )PID=6 - Swap used: 0 - (ksoftirqd/0 )PID=7 - Swap used: 0 - (migration/0 )PID=8 - Swap used: 0 - (rcu_bh )PID=9 - Swap used: 0 - (rcu_sched )PID=10 - Swap used: 0 - (lru-add-drain )PID=11 - Swap used: 0 - (watchdog/0 )PID=13 - Swap used: 0 - (kdevtmpfs )PID=14 - Swap used: 0 - (netns )PID=15 - Swap used: 0 - (khungtaskd )PID=16 - Swap used: 0 - (writeback )PID=17 - Swap used: 0 - (kintegrityd )PID=18 - Swap used: 0 - (bioset )PID=19 - Swap used: 0 - (bioset )PID=20 - Swap used: 0 - (bioset )PID=21 - Swap used: 0 - (kblockd )PID=22 - Swap used: 0 - (md )PID=23 - Swap used: 0 - (edac-poller )Overall swap used: 0

如果觉得输出的结果太多,还可以过滤掉Swap used: 0的记录

[root@localhost ~]# cat swap.sh #!/bin/bash# Get current swap usage for all running processesfunction getswap {SUM=0OVERALL=0for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; doPID=`echo $DIR | cut -d / -f 3`PROGNAME=`ps -p $PID -o comm --no-headers`for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`dolet SUM=$SUM+$SWAPdoneecho "PID=$PID - Swap used: $SUM - ($PROGNAME )"let OVERALL=$OVERALL+$SUMSUM=0doneecho "Overall swap used: $OVERALL"}getswap|egrep -v "Swap used: 0"输出结果[root@localhost ~]# ./swap.sh Overall swap used: 0
51f42807b381b6003a237ccc8e1784a5.png

这个功能脚本,你值得收藏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值