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中檢視指令碼程式是否存在的命令!Linux指令碼
- Linux檢視埠被哪個程式佔用Linux
- 檢視 Linux 檔案佔用程式寫資料?Linux
- 檢視佔用磁碟空間的程式
- linux檢視mysql佔用磁碟空間LinuxMySql
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- 在Linux中,如何檢視佔用CPU最多的程序?Linux
- Jtti:linux怎麼檢視swap是否開啟JttiLinux
- linux檢視埠是否被佔用的命令是什麼 linux被哪個程式佔用命令介紹Linux
- Linux/Centos檢視程式佔用記憶體大小的幾種方法總結LinuxCentOS記憶體
- Linux中如何檢視8080埠是否被佔用?Linux
- Centos環境自寫指令碼檢視使用php或nginx佔用記憶體CentOS指令碼PHPNginx記憶體
- 如何檢視埠被哪個程式佔用?
- Linux(CentOS) 檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- LINUX中如何檢視某個埠是否被佔用Linux
- linux磁碟已滿,檢視哪個檔案佔用多Linux
- LINUX中埠是否被佔用應該如何檢視呢?Linux
- Linux系統檢查指令碼Linux指令碼
- jmap檢視java程式佔用的資料庫連線數Java資料庫
- linux 檢視程式 kill程式Linux
- NBU指令碼:檢視啟用或未啟用加速的備份策略指令碼
- linux下檢視埠是否被佔用以及檢視所有埠Linux
- Linux檢視程式PID的方法?Linux
- Linux檢視埠占用情況,並強制釋放佔用的埠Linux
- win10埠被佔用如何檢視?win10快速檢視被佔用埠的方法教程Win10
- 檢視Ubuntu上佔用指定埠的程序Ubuntu
- liunx下檢視tomcat佔用的埠號Tomcat
- Cmd命令 檢視埠被佔用
- 一個快速檢視trace的小指令碼指令碼
- win10怎麼檢視埠被佔用_win10如何檢視埠被佔用Win10
- Linux技巧--檢視檔案及資料夾佔用空間大小Linux
- Linux 檢視程式情況Linux
- linux程式和埠檢視Linux
- 檢視 Linux 殭屍程式Linux
- Centos7:檢視某個埠被哪個程式佔用CentOS
- 使用shell指令碼在Linux中管理Java應用程式指令碼LinuxJava
- win10系統下檢視埠被哪個程式佔用的方法Win10
- 檢視資料庫佔用磁碟空間的方法資料庫
- 第 5 篇:用檢視集,簡化你的程式碼