Linux檢視佔用swap的程式指令碼
#Linux檢視佔用swap的程式
#!/bin/bash
echo -e `date +%y%m%d%H%M`
echo -e "PID\t\tSwap\t\tProc_Name"
# 拿出/proc目錄下所有以數字為名的目錄(程式名是數字才是程式,其他如sys,net等存放的是其他資訊)
for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]`
do
# 讓程式釋放swap的方法只有一個:就是重啟該程式。或者等其自動釋放。放
# 如果程式會自動釋放,那麼我們就不會寫指令碼來找他了,找他都是因為他沒有自動釋放。
# 所以我們要列出佔用swap並需要重啟的程式,但是init這個程式是系統裡所有程式的祖先程式
# 重啟init程式意味著重啟系統,這是萬萬不可以的,所以就不必檢測他了,以免對系統造成影響。
if [ $pid -eq 1 ];then continue;fi
grep -q "Swap" /proc/$pid/smaps 2>/dev/null
if [ $? -eq 0 ];then
swap=$(grep Swap /proc/$pid/smaps \
| gawk '{ sum+=$2;} END{ print sum }')
proc_name=$(ps aux | grep -w "$pid" | grep -v grep \
| awk '{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')
if [ $swap -gt 0 ];then
echo -e "${pid}\t${swap}\t${proc_name}"
fi
fi
done | sort -k2 -n | awk -F'\t' '{
pid[NR]=$1;
size[NR]=$2;
name[NR]=$3;
}
END{
for(id=1;id<=length(pid);id++)
{
if(size[id]<1024)
printf("%-10s\t%15sKB\t%s\n",pid[id],size[id],name[id]);
else if(size[id]<1048576)
printf("%-10s\t%15.2fMB\t%s\n",pid[id],size[id]/1024,name[id]);
else
printf("%-10s\t%15.2fGB\t%s\n",pid[id],size[id]/1048576,name[id]);
}
}'
#!/bin/bash
echo -e `date +%y%m%d%H%M`
echo -e "PID\t\tSwap\t\tProc_Name"
# 拿出/proc目錄下所有以數字為名的目錄(程式名是數字才是程式,其他如sys,net等存放的是其他資訊)
for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]`
do
# 讓程式釋放swap的方法只有一個:就是重啟該程式。或者等其自動釋放。放
# 如果程式會自動釋放,那麼我們就不會寫指令碼來找他了,找他都是因為他沒有自動釋放。
# 所以我們要列出佔用swap並需要重啟的程式,但是init這個程式是系統裡所有程式的祖先程式
# 重啟init程式意味著重啟系統,這是萬萬不可以的,所以就不必檢測他了,以免對系統造成影響。
if [ $pid -eq 1 ];then continue;fi
grep -q "Swap" /proc/$pid/smaps 2>/dev/null
if [ $? -eq 0 ];then
swap=$(grep Swap /proc/$pid/smaps \
| gawk '{ sum+=$2;} END{ print sum }')
proc_name=$(ps aux | grep -w "$pid" | grep -v grep \
| awk '{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')
if [ $swap -gt 0 ];then
echo -e "${pid}\t${swap}\t${proc_name}"
fi
fi
done | sort -k2 -n | awk -F'\t' '{
pid[NR]=$1;
size[NR]=$2;
name[NR]=$3;
}
END{
for(id=1;id<=length(pid);id++)
{
if(size[id]<1024)
printf("%-10s\t%15sKB\t%s\n",pid[id],size[id],name[id]);
else if(size[id]<1048576)
printf("%-10s\t%15.2fMB\t%s\n",pid[id],size[id]/1024,name[id]);
else
printf("%-10s\t%15.2fGB\t%s\n",pid[id],size[id]/1048576,name[id]);
}
}'
建議做定時任務監控swap空間使用情況
corntab -e
1 * * * * sh /root/swap.sh >> /root/swap/swap.log
曾經有一段時間機器的swap不停上漲,監控後發現是一些java程式佔用swap空間後,完全不釋放,殺死這些java程式後,釋放swap
管理員在2009年8月13日編輯了該文章文章。
-->
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26477398/viewspace-1478904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux swap 佔用分析指令碼Linux指令碼
- Linux檢視佔用記憶體的程式指令碼Linux記憶體指令碼
- Linux檢視埠被哪個程式佔用Linux
- 【shell】列出正在佔用swap的程式
- 《通過指令碼檢視哪些ip被佔用》shell筆記指令碼筆記
- LINUX SWAP的檢視與維護Linux
- 檢視 Linux 檔案佔用程式寫資料?Linux
- linux如何檢視埠被哪個程式佔用?Linux
- 檢視佔用磁碟空間的程式
- ubuntu檢視佔用某埠的程式Ubuntu
- linux下檢視程式佔用埠和埠占用程式命令Linux
- Linux檢視網路流量的指令碼Linux指令碼
- linux檢視mysql佔用磁碟空間LinuxMySql
- Windows netstat 檢視埠、程式佔用Windows
- 如何檢視埠被哪個程式佔用?
- Windows檢視埠被哪個程式佔用Windows
- 利用jstack檢視程式資源佔用JS
- swap檔案檢視
- 快速檢視LINUX 系統硬體的指令碼Linux指令碼
- LINUX 檢視真正PGA佔用的記憶體大小Linux記憶體
- 在Linux中,如何檢視佔用CPU最多的程序?Linux
- Linux 怎麼檢視服務的啟動程式所佔用的目錄Linux
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- Centos環境自寫指令碼檢視使用php或nginx佔用記憶體CentOS指令碼PHPNginx記憶體
- 檢視埠號被哪個應用程式佔用
- Linux/CentOS檢視埠被哪個程式佔用的幾種方法總結LinuxCentOS
- Linux下如何檢視哪些程式佔用的CPU記憶體資源最多Linux記憶體
- Linux/Centos檢視程式佔用記憶體大小的幾種方法總結LinuxCentOS記憶體
- linux檢視埠是否被佔用的命令是什麼 linux被哪個程式佔用命令介紹Linux
- linux系統檢視調整swap空間Linux
- 檢視linux系統硬碟目錄佔用大小Linux硬碟
- 檢視swap記憶體記憶體
- 檢視ORACLE AS 埠指令碼Oracle指令碼
- Linux中檢視指令碼程式是否存在的命令!Linux指令碼
- Linux(CentOS) 檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- Jtti:linux怎麼檢視swap是否開啟JttiLinux
- LINUX中如何檢視某個埠是否被佔用Linux
- Linux中如何檢視8080埠是否被佔用?Linux