天天看點

檢視占用swap的應用

<code>for</code> <code>pid </code><code>in</code> <code>`ls </code><code>-</code><code>l </code><code>/</code><code>proc | grep ^d | awk </code><code>'{ print $9 }'</code><code>| grep </code><code>-</code><code>v [^</code><code>0</code><code>-</code><code>9</code><code>]`</code>

<code>do</code>

<code>   </code><code># 讓程序釋放swap的方法隻有一個:就是重新開機該程序。或者等其自動釋放。放</code>

<code>   </code><code># 如果程序會自動釋放,那麼我們就不會寫腳本來找他了,找他都是因為他沒有自動釋放。</code>

<code>   </code><code># 是以我們要列出占用swap并需要重新開機的程序,但是init這個程序是系統裡所有程序的祖先程序</code>

<code>   </code><code># 重新開機init程序意味着重新開機系統,這是萬萬不可以的,是以就不必檢測他了,以免對系統造成影響。</code>

<code>   </code><code>if</code> <code>[ $pid </code><code>-</code><code>eq </code><code>1</code> <code>];then </code><code>continue</code><code>;fi</code>

<code>   </code><code>grep </code><code>-</code><code>q </code><code>"Swap"</code> <code>/</code><code>proc</code><code>/</code><code>$pid</code><code>/</code><code>smaps </code><code>2</code><code>&gt;</code><code>/</code><code>dev</code><code>/</code><code>null</code>

<code>   </code><code>if</code> <code>[ $? </code><code>-</code><code>eq </code><code>0</code> <code>];then </code>

<code>       </code><code>swap</code><code>=</code><code>$(grep Swap </code><code>/</code><code>proc</code><code>/</code><code>$pid</code><code>/</code><code>smaps \</code>

<code>           </code><code>| gawk </code><code>'{ sum+=$2;} END{ print sum }'</code><code>)</code>

<code>       </code><code>proc_name</code><code>=</code><code>$(ps aux | grep </code><code>-</code><code>w </code><code>"$pid"</code> <code>| grep </code><code>-</code><code>v grep \</code>

<code>           </code><code>| awk </code><code>'{ for(i=11;i&lt;=NF;i++){ printf("%s ",$i); }}'</code><code>)</code>

<code>       </code><code>if</code> <code>[ $swap </code><code>-</code><code>gt </code><code>0</code> <code>];then </code>

<code>           </code><code>echo </code><code>-</code><code>e </code><code>"${pid}\t${swap}\t${proc_name}"</code>

<code>       </code><code>fi  </code>

<code>   </code><code>fi  </code>

<code>done | sort </code><code>-</code><code>k2 </code><code>-</code><code>n | awk </code><code>-</code><code>F</code><code>'\t'</code> <code>'{</code>

<code>   </code><code>pid[NR]</code><code>=</code><code>$</code><code>1</code><code>;</code>

<code>   </code><code>size[NR]</code><code>=</code><code>$</code><code>2</code><code>;</code>

<code>   </code><code>name[NR]</code><code>=</code><code>$</code><code>3</code><code>;</code>

<code>}</code>

<code>END{</code>

<code>   </code><code>for</code><code>(</code><code>id</code><code>=</code><code>1</code><code>;</code><code>id</code><code>&lt;</code><code>=</code><code>length(pid);</code><code>id</code><code>+</code><code>+</code><code>)</code>

<code>   </code><code>{</code>

<code>       </code><code>if</code><code>(size[</code><code>id</code><code>]&lt;</code><code>1024</code><code>)</code>

<code>           </code><code>printf(</code><code>"%-10s\t%15sKB\t%s\n"</code><code>,pid[</code><code>id</code><code>],size[</code><code>id</code><code>],name[</code><code>id</code><code>]);</code>

<code>       </code><code>else</code> <code>if</code><code>(size[</code><code>id</code><code>]&lt;</code><code>1048576</code><code>)</code>

<code>           </code><code>printf(</code><code>"%-10s\t%15.2fMB\t%s\n"</code><code>,pid[</code><code>id</code><code>],size[</code><code>id</code><code>]</code><code>/</code><code>1024</code><code>,name[</code><code>id</code><code>]);</code>

<code>       </code><code>else</code>

<code>           </code><code>printf(</code><code>"%-10s\t%15.2fGB\t%s\n"</code><code>,pid[</code><code>id</code><code>],size[</code><code>id</code><code>]</code><code>/</code><code>1048576</code><code>,name[</code><code>id</code><code>]);</code>

<code>   </code><code>}</code>

<code>}'</code>

<code></code>

本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1971980,如需轉載請自行聯系原作者

繼續閱讀