zoukankan      html  css  js  c++  java
  • Linux

    swap 分区

      硬盘分区为主分区+扩展分区 所有的逻辑分区都在扩展分区内;wap分区,即交换区,系统在物理内存不够时,与Swap进行交换;Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

    列出正在占用swap的进程
    
    #!/bin/bash
    echo -e "PID		Swap		Proc_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}	${swap}	${proc_name}"
    fi 
    fi 
    done | sort -k2 -n | awk -F'	' '{
    pid[NR]=$1;
    size[NR]=$2;
    name[NR]=$3;
    }
    END{
    for(id=1;id<=length(pid);id++)
    {
    if(size[id]<1024)
    printf("%-10s	%15sKB	%s
    ",pid[id],size[id],name[id]);
    else if(size[id]<1048576)
    printf("%-10s	%15.2fMB	%s
    ",pid[id],size[id]/1024,name[id]);
    else
    printf("%-10s	%15.2fGB	%s
    ",pid[id],size[id]/1048576,name[id]);
    }
    }'
  • 相关阅读:
    css布局
    常用正则表达式
    读书笔记Hadoop实战1
    C++ IDE for Linux
    由计算机的锁是怎么实现的
    pthread
    转:C++反汇编揭秘2 – VC编译器的运行时错误检查(RTC)
    PyDev Python 开发的IDE
    转:C++反汇编揭秘1 一个简单的C++程序反汇编解析
    如何查找命令对应的软件包
  • 原文地址:https://www.cnblogs.com/sharesdk/p/8687378.html
Copyright © 2011-2022 走看看