swap分区占用情况脚本
#在网上搜了个swap分区占用情况的脚本,用了感觉蛮好,特别留下来了,注释并优化之
echo '----------------------# '`date "+%Y%m%d %H%M"`' #----------------------------' for i in `ls -d /proc/* | grep -E '/[0-9]+$'` #显示所有proc下的文件,并匹配该目录下所有以数字开头和结尾的文件 do pid=${i##/proc/} #匹配i变量的值,并删掉/proc/ ##是以最长匹配模式删除 if [ -f $i/cmdline -a -f $i/smaps ];then #如果存在那两个文件,-a表示两个表达式的并列 cmd=$(cat $i/cmdline) if [ "$cmd" == "" ];then cmd="NULL" fi swap=$(cat $i/smaps | grep 'Swap' | awk '{gsub(/[^0-9]/,"",$1);S+=$2;}END{print S;}')
#gsub将一个域内不属于数字,全部用删除,第二个域相加(注意,域1的内容虽然被清空了,但域1,仍然存在,于是就成了"" 21 kb,数字那行仍属域2) if [ "$swap" == "" ];then continue fi echo "$cmd [$pid] => `echo $swap | awk '{print $1" KB",$1/1024" MB";}'`" #格式化输出占用swap分区的进程 fi done