Find out which processes are using swap space
Script สำหรับตรวจสอบว่ามี process ไหนบ้างที่ใช้งาน SWAP บน server ซึ่ง script นี้สามารถแสดงรายละเอียดของ process และ จำนวนเนื้อที่ที่ process นั้นๆใช้งาน
[shell]#!/bin/bash
# Get current swap usage for all running processes
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex “^/proc/[0-9]+”`
do
PID=`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 }’`
do
let SUM=$SUM+$SWAP
done
if (( $SUM > 0 )); then
echo “PID=$PID swapped $SUM KB ($PROGNAME)”
fi
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo “Overall swap used: $OVERALL KB”
[/shell]
หรือถ้าหากไม่สามารถรันได้ให้ใช้ script ด้านล่างแทนครับ
[shell]
#! /bin/bash
# Get current swap usage for all running processes
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex “^/proc/[0-9]+”`
do
PID=`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 }’`
do
SUM=$(($SUM+$SWAP))
done
if [ $SUM -gt 0 ]; then
echo “PID=$PID swapped $SUM KB ($PROGNAME)”
fi
OVERALL=$(($OVERALL+$SUM))
SUM=0
done
echo “Overall swap used: $OVERALL KB”
[/shell]
ตัวอย่าง ผลการรันคำสั่งตรวจสอบ process ที่ใช้งาน SWAP
[shell]PID=1 swapped 100 KB (init)
PID=538 swapped 696 KB (udevd)
PID=871 swapped 684 KB (udevd)
PID=1166 swapped 104 KB (named)
PID=1238 swapped 4 KB (lldpad)
PID=1272 swapped 24 KB (sshd)
PID=3622 swapped 1388 KB (mysqld)
PID=3693 swapped 72 KB (java)
PID=4736 swapped 692 KB (udevd)
PID=4971 swapped 188 KB (sudo)
PID=24633 swapped 1748 KB (swatch)
PID=24638 swapped 136 KB (perl)
Overall swap used: 5836 KB[/shell]