发布新日志

  • TOP中只查看某个或某些进程的信息-yc

    2012-04-19 09:18:24

    TOP中只查看某个或某些进程的信息


    top中使用CPU或MEM排序,还是看不到我们想了解的进程的相关信息;
    这时就可以指定对某个或某些进程进行TOP信息显示;


    1、查看某个进程的信息
    例:mysqld的信息
    (1)得到mysqld进程的pid
    [root@6 ~]# pidof mysqld
    21538

    (2)top指定查看PID
    [root@6 ~]# top -p 21538

    top - 09:15:06 up 30 days, 53 min,  3 users,  load average: 0.07, 0.22, 0.23
    Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
    Cpu(s):  3.0%us,  6.9%sy,  0.2%ni, 89.4%id,  0.3%wa,  0.1%hi,  0.1%si,  0.0%st
    Mem:   1035140k total,   994888k used,    40252k free,   383072k buffers
    Swap:  2048248k total,       80k used,  2048168k free,   237456k cached

      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                         
    21538 mysql     15   0  146m  21m 4372 S  0.0  2.1   3:03.84 mysqld


    2、查看某些进程的信息
    例:mysqld/httpd的信息
    (1)得到mysqld/httpd进程的pid
    [root@6 ~]# pidof mysqld
    21538

    [root@6 ~]# pidof httpd
    31117 31116 31115 31114

    (2)top指定查看PID
    [root@6 ~]# top -p 21538,31117,31116,31115,31114

    top - 09:20:05 up 30 days, 58 min,  3 users,  load average: 0.37, 0.24, 0.23
    Tasks:   5 total,   0 running,   5 sleeping,   0 stopped,   0 zombie
    Cpu(s):  3.0%us,  6.9%sy,  0.2%ni, 89.4%id,  0.3%wa,  0.1%hi,  0.1%si,  0.0%st
    Mem:   1035140k total,   994364k used,    40776k free,   383404k buffers
    Swap:  2048248k total,       80k used,  2048168k free,   237560k cached

      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                         
    21538 mysql     15   0  146m  21m 4372 S  0.0  2.1   3:03.86 mysqld                                                                          
    31117 apache    15   0 60036 8428 4668 S  0.0  0.8   0:00.48 httpd                                                                           
    31116 apache    15   0 60308 9.9m 6288 S  0.0  1.0   0:00.48 httpd                                                                           
    31115 apache    15   0 60100 8552 4756 S  0.0  0.8   0:00.48 httpd                                                                           
    31114 apache    15   0 59892 6452 3060 S  0.0  0.6   0:00.41 httpd 
  • linux-服务器资源监控-yc

    2011-12-31 17:19:08

    有时要长时间监控服务器的负载、CPU、内存、IO信息,因不确定监控时长,用loadrunner不方便,所以写了一个shell脚本来监控;
    特此记录下,以后方便使用;


    #!/bin/bash
    while [ 1==1 ]
    do
            w | sed -n '1p' | awk '{print $10}' | sed  's/,//' >> monitorAvgLoad.log
            free | grep Mem | awk '{print $3}' >>monitorMemUsed.log
            free | grep Mem | awk '{print $4}' >>monitorMemFree.log
            free | grep Mem | awk '{print $6}' >>monitorMemBuffers.log
            free | grep Mem | awk '{print $7}' >>monitorMemCached.log
            free | grep Swap | awk '{print $3}' >>monitorSwapUsed.log
            free | grep Swap | awk '{print $4}' >>monitorSwapFree.log
            iostat | sed -n '4p' | awk '{print $1}' >>monitorCPUUser.log
            iostat | sed -n '4p' | awk '{print $3}' >>monitorCPUSystem.log
            iostat | sed -n '4p' | awk '{print $4}' >>monitorCPUIowait.log
            iostat | sed -n '4p' | awk '{print $6}' >>monitorCPUIdle.log
            iostat -x | grep "sda " | awk '{print $NF}' >>monitorIOUtil.log
            sleep 10
    done
  • Tcpdump 的用法-zt

    2011-12-22 14:46:28

    转自:http://network.51cto.com/art/200512/15473.htm

    一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
    第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
    第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
      除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
      普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
    # tcpdump 
    tcpdump: listening on fxp0
    11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
    11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
                           0000 0000 0080 0000 1007 cf08 0900 0000
                           0e80 0000 902b 4695 0980 8701 0014 0002
                           000f 0000 902b 4695 0008 00
    11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
                           ffff 0060 0004 ffff ffff ffff ffff ffff
                           0452 ffff ffff 0000 e85b 6d85 4008 0002
                           0640 4d41 5354 4552 5f57 4542 0000 0000
                           0000 00
    使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,
    使用-c参数指定要监听的数据包数量,
    使用-w参数指定将监听到的数据包写入文件中保存
     A想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
    #tcpdump host 210.27.48.1 
    B想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中适用 括号时,一定要
    #tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) 
    C如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
    #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
    D如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
    #tcpdump tcp port 23 host 210.27.48.1
    (有些版本这种情况下,需要增加一个and:
    tcpdump tcp port 23 and host 210.27.48.1
    E 对本机的udp 123 端口进行监视 123 为ntp的服务端口
    # tcpdump udp port 123 

    F 系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所有数据: 
    #tcpdump -i eth0 src host hostname
    G 下面的命令可以监视所有送到主机hostname的数据包: 
    #tcpdump -i eth0 dst host hostname
    H  我们还可以监视通过指定网关的数据包: 
    #tcpdump -i eth0 gateway Gatewayname
    I 如果你还想监视编址到指定端口的TCP或UDP数据包,那么执行以下命令: 
    #tcpdump -i eth0 host hostname and port 80
    J 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包
    ,使用命令:
    #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
    K 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令
    :(在命令行中适用 括号时,一定要
    #tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
    L 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
     #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
    M 如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
     #tcpdump tcp port 23 host 210.27.48.1
    第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型
    除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,
    greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'o
    r' ,'||';
    第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,
    如果我们只需要列出送到80端口的数据包,用dst port;如果我们只希望看到返回80端口的数据包,用src port。 
    #tcpdump –i eth0 host hostname and dst port 80  目的端口是80
    或者
    #tcpdump –i eth0 host hostname and src port 80  源端口是80  一般是提供http的服务的主机
    如果条件很多的话  要在条件之前加and 或 or 或 not
    #tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80
    如果在ethernet 使用混杂模式 系统的日志将会记录
    May  7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled.
    May  7 20:03:46 localhost kernel: device eth0 entered promiscuous mode
    May  7 20:03:57 localhost kernel: device eth0 left promiscuous mode
    tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。
  • linux-top刷新频率

    2011-12-08 16:08:01

    有些服务器,装完linux后,top信息刷新过快,无法查看内容
    这时就需要修改top的刷新频率:

    方法:
    top
    输入-d
    再输入刷新间隔的时间(有的是以秒为单位,有的是以毫秒为单位,一般会出现这个问题的机器,都是以毫秒为单位的,暂不确认是什么原因导致的)
    回车
    再输入W 保存该设置到配置文件中
  • linux-如何解压RPM包-zt

    2011-12-07 16:59:37

    转自:http://www.cnblogs.com/joeblackzqq/archive/2011/03/19/1989137.html

    有时我们需要RPM包中的某个文件,如何解压RPM包呢?

    RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

    rpm2cpio xxx.rpm | cpio -div

    

    例如:

    [root@localhost oracle]# rpm2cpio oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm | cpio -div
    ./usr/lib/oracle/11.2/client/bin/adrci
    ./usr/lib/oracle/11.2/client/bin/genezi
    ./usr/lib/oracle/11.2/client/lib/libclntsh.so.11.1
    ./usr/lib/oracle/11.2/client/lib/libnnz11.so
    ./usr/lib/oracle/11.2/client/lib/libocci.so.11.1
    ./usr/lib/oracle/11.2/client/lib/libociei.so
    ./usr/lib/oracle/11.2/client/lib/libocijdbc11.so
    ./usr/lib/oracle/11.2/client/lib/ojdbc5.jar
    ./usr/lib/oracle/11.2/client/lib/ojdbc6.jar
    ./usr/lib/oracle/11.2/client/lib/xstreams.jar
    336597 块
    [root@localhost oracle]# ls

  • linux-iptables-修改防火墙规则

    2011-11-02 13:02:21

    1、编辑防火墙配置文件:
    vi /etc/sysconfig/iptables

    -A INPUT -p udp -m udp --dport 161 -j ACCEPT
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [51:5942]
    :RH-Firewall-1-INPUT - [0:0]
    -A INPUT -s 59.57.251.34 -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT -s 218.5.74.235 -p tcp -m tcp -j ACCEPT
    -A INPUT -s 192.168.0.0/24 -j ACCEPT
    -A INPUT -s 127.0.0.1 -j ACCEPT
    -A INPUT -s 59.57.251.38 -j ACCEPT
    -A INPUT -p tcp -m multiport --dports 20,21,25,80,443 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 9000:9045 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
    -A INPUT -p udp -m udp --sport 53 -j ACCEPT
    -A INPUT -p udp -m udp --sport 161 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 10598 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 25 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 20 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 21 -j ACCEPT
    -A OUTPUT -j ACCEPT
    -A INPUT -j DROP
    COMMIT


    简单说明:
    -A INPUT -s 59.57.251.34 -p tcp -m tcp --dport 22 -j ACCEPT
    -s 59.57.251.34:源IP为59.57.251.34
    -p tcp:tcp协议
    -m tcp:使用 tcp 扩展模块的功能 (tcp扩展模块提供了 --dport等功能)
    -dport 22:目标端口为22
    -j ACCEPT:接受请求

    -A OUTPUT -j ACCEPT
    默认出去的数据包都可以通过防火墙
    -A INPUT -j DROP
    默认进来的数据包都被防火墙丢弃

    防火墙规则是从上到下走的,所以这两条放在最后面;
    即除了上面的那些特殊规则,都按最后的两个默认设置来执行;

    2、重启防火墙
    service iptables stop
    service iptables start


    3、查看防火墙规则
    iptables -L

  • Php显示tokyotyrant数据库记录

    2011-06-15 15:50:13

    1)对key进行查询:

    <?php

    $tt = new TokyoTyrantTable("localhost",1978);

    $query = $tt->get("3232273076.2998259876.0.1308899091.63970.16946");

    foreach ($query as $key => $value) {

        echo " $key => $value <br/>"; 

    }

    ?>

    2)对非key字段进行查询:

    <?php

    $tt = new TokyoTyrantTable("localhost",1978);

    $query = $tt->getQuery();

    $query->addCond("size",1,"12");

    foreach ($query as $key => $value) {

        echo "<br/>KEY => $key  ";

        foreach($value as $k=>$v)

            echo " $k => $v   ";

            echo "<br/>";

    }

    ?>


    注意项:$key显示的是tt当前key,唯一标识;

    一个key对应一个value数组;


    addCond函数,第二个参数可以接受的  
    TokyoTyrant::RDBQC_STREQ: 0, 字符串相等判断.  
    TokyoTyrant::RDBQC_STRINC: 1, 字符串包含判断.  
    TokyoTyrant::RDBQC_STRBW: 2, 字符串以xx开始判断.  
    TokyoTyrant::RDBQC_STREW: 3, 字符串以xx结尾判断.  
    TokyoTyrant::RDBQC_STRAND: 4, $expr包含所有的右逗号(或空格)隔开部分全部都包含在目标中.  
    TokyoTyrant::RDBQC_STROR: 5, $expr包含所有的右逗号(或空格)隔开部分的其中至少一个包含在目标中.  
    TokyoTyrant::RDBQC_STROREQ: 6, $expr包含所有的右逗号(或空格)隔开部分的其中某部分与目标完全相同.  
    TokyoTyrant::RDBQC_STRRX: 7, 正则表达式匹配.  
    TokyoTyrant::RDBQC_NUMEQ: 8, 数字等于.  
    TokyoTyrant::RDBQC_NUMGT: 9, 数字大于.  
    TokyoTyrant::RDBQC_NUMGE: 10, 数字大于等于.  
    TokyoTyrant::RDBQC_NUMLT: 11, 数字小于.  
    TokyoTyrant::RDBQC_NUMLE: 12, 数字小于等于.  
    TokyoTyrant::RDBQC_NUMBT: 13, 数字范围(between), 范围涉及两个值$expr中用,隔开.  
    TokyoTyrant::RDBQC_NUMOREQ: 14, 和给定的任意一个值相等即匹配多个值之间在$expr中用,隔开.  
    TokyoTyrant::RDBQC_NEGATE: 16777216, 与给定条件不相等的


    参考资料:

    http://cn.php.net/manual/zh/class.tokyotyrantquery.php

    http://hi.baidu.com/stodbx2002/blog/item/a057c26eae8c15c981cb4aba.html

  • linux-fdisk硬盘剩余空间进行分区的操作步骤

    2011-02-10 16:46:25


    linux-硬盘剩余空间进行分区的操作步骤
    1、fdisk分区
    例:fdisk /dev/sda
        Command (m for help): p——(打印当前硬盘分区信息)
        Command (m for help): n——(增加分区)
        Command (m for help): w——(保存退出)
    fdisk相关操作参考:http://www.51testing.com/?uid-130600-action-viewspace-itemid-228925

    2、partprobe——(内核在不重启的情况接受新的分区表信息)
    partprobe参考:http://space.itpub.net/8183550/viewspace-678508

    使用fdisk命令创建新的分区时,如果该磁盘正在使用,在保存分区信息时,肯定会给出一个警告,告诉你内核不会接受新的分区表,需要重启。这个时候你如果想对新分出来的分区设备做mkfs,系统提示你没有那个设备。手工创建设备也不行,主要是内核没有接受这样的设备。
    只是parted软件包另外包含了一个工具–partprobe,它能使内核在不重启的情况接受新的分区表信息,这个工具对fdisk当然也有效。

    3、mkfs.ext3 /dev/sda7——(格式化分区)

    4、mount -o rw /dev/sda7 /mine——(采用读写方式挂接设备到/mine目录)


    注意:
    硬盘分区有三种类型:
     p primary partition表示主分区,分区号只能为1到4;
     e extended表示扩展分区,分区号也只能为1到4;
     l logical表示逻辑分区,要建逻辑分区之前,必须先建扩展分区;
    通常,1-3会建为主分区,4建为扩展分区;逻辑分区为5及以上,包含在4扩展分区内;
    主分区及逻辑分区,使用前,需要进行格式化,扩展分区不需要;
    硬盘的容量=主分区的容量+扩展分区的容量
    扩展分区的容量=各个逻辑分区的容量之和


       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         200     1606468+  83  Linux
    /dev/sdb4             201         522     2586465    5  Extended
    /dev/sdb5             201         300      803218+  83  Linux
    /dev/sdb6             301         522     1783183+  83  Linux

    1为增加的主分区,大小从1-200;
    4为增加的扩展分区,大小从201-522;
    5、6为增加的逻辑分区,大小分别为201-300及301-522;
    单位为:cylinder(磁柱)8225.280
    每个 cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(约为)=8.225280M(约为)


  • 实例解说Linux中fdisk分区使用方法-zt

    2011-02-10 16:45:10

    转自:http://hi.baidu.com/zhangzhiyin88/blog/item/597e4afab87bf8859f514658.html

    一、
    fdisk 的介绍;

     fdisk - Partition table manipulator for Linux ,(磁盘分区表操作工具),其实就是linux下的分区工具;

    二、fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段;

    我们会看到两个设备一个是/dev/sda ,另一个是/dev/sdb

    fdisk 操作硬盘的命令格式如下:
    # fdisk /dev/sda

     # fdisk /dev/sdb

    注:在以后的例子中,我们要以 /dev/sdb设备为例,来讲解如何用fdisk 来操作添加、删除分区等动作;

    1、fdisk 的说明;
    当我们通过 fdisk 设备,进入相应设备的操作时,会发现有如下的提示;以 fdisk /dev/sda 设备为例,以下同;
     # fdisk /dev/sdb

    Command (m for help):     // input 'm' and enter key for help
    Command action
    a   toggle a bootable flag
    b   edit bsd disklabel
    c   toggle the dos compatibility flag
    d   delete a partition  // 这是删除一个分区的动作
     l   list known partition types   // 列出分区类型,以供我们设置相应分区的类型
    m   print this menu  // 列出帮助信息
    n   add a new partition  // 添加一个分区
    o   create a new empty DOS partition table
    p   print the partition table  // 列出分区表
     q   quit without saving changes  // 不保存退出
    s   create a new empty Sun disklabel
    t   change a partition's system id  // 改变分区类型
    u   change display/entry units
    v   verify the partition table
    w   write table to disk and exit  // 把分区表写入硬盘并退出
     x   extra functionality (experts only)  // 扩展应用,专家功能

     2、列出当前操作硬盘的分区情况,用p

    Command (m for help): p

    Disk /dev/sdb: 2032 MB, 2032664576 bytes
    63 heads, 62 sectors/track, 1016 cylinders
    Units = cylinders of 3906 * 512 = 1999872 bytes

    Device Boot    Start     End    Blocks   Id   System
    /dev/sdb1                1     500    976469   83   Linux
    /dev/sdb2            501     700    390600   83   Linux
      /dev/sdb3            701    1016    617148    5   Extended


    3、通过fdisk的 d 指令来删除一个分区

    Command (m for help): d
    Partition number (1-5): 3  // 我想删除 sdb3,就在这里输入 3

    Command (m for help): // 再查看一下硬盘分区情况,看是否删除了?

    Disk /dev/sdb: 2032 MB, 2032664576 bytes    
    63 heads, 62 sectors/track, 1016 cylinders
    Units = cylinders of 3906 * 512 = 1999872 bytes

    Device Boot    Start     End    Blocks   Id   System
    /dev/sdb1                1     500    976469   83   Linux
    /dev/sdb2            501     700    390600   83   Linux

    Command (m for help):

    警告:删除分区时要小 心,请看好分区的序号,如果您删除了扩展分区,扩展分区之下的逻辑分区都会删除;所以操作时一定要小心;如果知道自己操作错了,请不要惊 慌,用q不保存退出;切记切记!!!!在分区操作错了之时,千万不要输入w保存退出!!!

     4、通 过fdisk的 n 指令增加一个分区;

    Command (m for help): n  // input 'n' key
    Command action
    e   extended
    p   primary partition (1-4)
     e  // input 'e' key to choose extended
    Partition number (1-4): // input 3 to add /dev/sdb3
    First cylinder (701-1016, default 701):   // default enter
    Using default value 701
    Last cylinder or +size or +sizeM or +sizeK (701-1016, default 1016):   // default enter
    Using default value 1016

    Command (m for help): p

    Disk /dev/sdb: 2032 MB, 2032664576 bytes
    63 heads, 62 sectors/track, 1016 cylinders
    Units = cylinders of 3906 * 512 = 1999872 bytes

    Device Boot    Start       End    Blocks   Id  System
    /dev/sdb1                1       500    976469   83  Linux
    /dev/sdb2             501      700    390600   83  Linux
    /dev/sdb3             701     1016    617148    5  Extended

    Command (m for help): n
    Command action
    l   logical (5 or over)
    p   primary partition (1-4)
    // input 'l' to choose logical
    First cylinder (801-1016, default 801):
    Using default value 801
    Last cylinder or +size or +sizeM or +sizeK (801-1016, default 1016):
    Using default value 1016

    Command (m for help): p

    Disk /dev/sdb: 2032 MB, 2032664576 bytes
    63 heads, 62 sectors/track, 1016 cylinders
    Units = cylinders of 3906 * 512 = 1999872 bytes

    Device Boot    Start       End    Blocks   Id  System
    /dev/sdb1               1       500    976469   83  Linux
    /dev/sdb2           501       700    390600   83  Linux
    /dev/sdb3           701     1016    617148    5  Extended
    /dev/sdb5           701       800    195269   83  Linux
    /dev/sdb6           801     1016    421817   83  Linux

    Command (m for help):

     5、通过fdisk的 t 指令指定分区类型

    Command (m for help): t
    Partition number (1-6): 1  // choose first sector /dev/sdb1
    Hex code (type L to list codes): 6  // choose Linux System to Fat16 System
    Changed system type of partition 1 to 6 (FAT16)

    Command (m for help): t
    Partition number (1-6): 2
    Hex code (type L to list codes): 6
    Changed system type of partition 2 to 6 (FAT16)

    Command (m for help): t
    Partition number (1-6): 5
    Hex code (type L to list codes): 6
    Changed system type of partition 5 to 6 (FAT16)

    Command (m for help): t
    Partition number (1-6): 6
    Hex code (type L to list codes): 6
    Changed system type of partition 6 to 6 (FAT16)

    Command (m for help): p

    Disk /dev/sdb: 2032 MB, 2032664576 bytes
    63 heads, 62 sectors/track, 1016 cylinders
    Units = cylinders of 3906 * 512 = 1999872 bytes

    Device Boot    Start       End    Blocks   Id  System
    /dev/sdb1                1       500    976469    6  FAT16
    /dev/sdb2            501       700    390600    6  FAT16
    /dev/sdb3            701     1016    617148    5  Extended
    /dev/sdb5            701       800    195269    6  FAT16
    /dev/sdb6            801     1016    421817    6  FAT16

    Command (m for help):

     6、fdisk 的退出,用 q 或者 w
    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: If you have created or modified any DOS 6.x
    partitions, please see the fdisk manual page for additional
    information.
    Syncing disks.

    7、OK 大功告成。。。
  • linux增加/删除虚拟IP地址-zt

    2010-12-21 14:14:14

    网卡上增加一个IP:
    ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0
    删除网卡的第二个IP地址:
    ip addr del 192.168.0.1 dev eth0
    这种方式增加的虚拟IP,可以通过ifconfig查看

     

    另一种增加虚拟IP的方法(ifconfig查看不到):

    增加虚拟IP:
    ip -f inet addr add 192.168.146.229/32 brd 192.168.146.229 dev eth0

    查看虚拟IP:
    ip -f inet addr

    删除虚拟IP:
    ip -f inet addr delete 192.168.146.229/32 brd 192.168.146.229 dev eth0

  • mysql及date时间戳与标准时间转换

    2010-11-20 13:04:53

    mysql时间戳与标准时间转换

    时间戳 to 标准时间
    FROM_UNIXTIME(xxxxxxxxxx);

    mysql> select FROM_UNIXTIME("1290214840");
    +-----------------------------+
    | FROM_UNIXTIME("1290214840") |
    +-----------------------------+
    | 2010-11-20 09:00:40         |
    +-----------------------------+
    1 row in set (0.03 sec)

     

    标准时间 to 时间戳
    UNIX_TIMESTAMP('YYYY-MM-DD HH:MM:SS'');

    mysql> select UNIX_TIMESTAMP("2010-11-20 09:00:40"); 
    +---------------------------------------+
    | UNIX_TIMESTAMP("2010-11-20 09:00:40") |
    +---------------------------------------+
    |                            1290214840 |
    +---------------------------------------+
    1 row in set (0.02 sec)

     

    date时间戳与标准时间转换

    # date  -d "2010-12-31 12:45:20" +%s 
    # 1293770720

    # date -d @1293770720
    # Fri Dec 31 12:45:20 CST 2010

     

     

     

  • linux进入单用户模式

    2010-11-16 15:23:50

    linux忘记密码,或因watchdog出错,一直重启电脑时,可以通过进入单用户模式来解决问题;


    linux进入单用户模式的方法如下:
     
     grub

     进入启动画面之后,敲入“e”,把光标移动到kernel ...那一行,再敲入“e”,在kernel 一行的最后加上空格single(或输入1),回车
     敲入“b”,启动系统,即进入单用户模式。

     如果修改密码,这时就可以用passwd命令改密码了。
     如:passwd root
     改完后exit退出single模式(或直接输入init 3启动正常模式)。
     
     去除watchdog开机自启动;这时就可以直接chkconfig watchdog off。
     exit退出single模式(或直接输入init 3启动正常模式)。
     这样重启后,就可以正常登录linux,解决问题;


    如果系统的配置与脚本文件出现错误,linux单用户模式下的根文件系统进入“read-only file system”既只读状态,此时,键入:   
     #mount –o remount rw –t ext3 / 
    让根文件系统重新mount成可读写,你就可以自由编辑出现错误的系统文件了


  • linux-利用sar进行性能监控-yc

    2010-09-16 14:50:49


    为了监控服务器性能
    写了个shell脚本,监控服务器的:CPU、MEM、磁盘IO、负载四个指标
    记录下来,以备不时之需

    sar安装方法:
    yum install sysstat


    脚本内容如下:

    #!/bin/bash
    if (( $# != 2))
    then
        echo "usage:num1-Please enter the number of script. execution"
        echo "usage:num2-Please enter a value for rest time"
        exit 1
    fi

    sar -d 0 | head -3 | tail -1 > dev8-0.log
    sar -u 0 | head -3 | tail -1 > cpu.log
    sar -r 0 | head -3 | tail -1 > mem.log
    echo "" > loadAverage.log
    for ((i=1;i<=$1;i++))
    do
        sar -d 1 | grep dev8-0 | grep -v Average >> dev8-0.log
        sar -u 1 | head -4 | tail -1 >> cpu.log
        sar -r 1 | head -4 | tail -1 >> mem.log
        monitorDate=`date +'%F %T'`
        load=`w | grep 'load average' | awk -F ',' {'print $4,$5,$6'}`
        echo $monitorDate $load >> loadAverage.log
        sleep $2
    done


    脚本使用方法:
    chmod +x monitor.sh(脚本名)
    ./monitor.sh 5 1
    每1秒记录监控数据一次,共记录5次
    注:每次运行脚本时,会把上一次的日志清空;


    脚本内容解释:
    sar -d 1:打印磁盘IO信息,采样间隔1秒
    sar -u 1:打印CPU信息,采样间隔1秒
    sar -r 1:打印MEM信息,采样间隔1秒
    然后再利用一些grep/head/tail/awk等命令取得想要的部份信息;
    (使用过程中发现,采样间隔使用0秒时,会出现打印出来的CPU和磁盘IO信息全一样,MEM会有所不同。。。)


    脚本运行结果:
    ./monitor.sh 5 1
    运行后,当前目录下会生成下面几个日志文件:

    # cat cpu.log
    02:21:24 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
    02:21:24 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
    02:21:25 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
    02:21:26 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
    02:21:27 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
    02:21:28 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
    %user 在用户模式中运行进程所花的时间
    %nice 运行正常进程所花的时间
    %system 在内核模式(系统)中运行进程所花的时间
    %iowait 没有进程在该CPU上执行时,处理器等待I/O完成的时间
    %idle 没有进程在该CPU上执行的时间

    #cat mem.log
    02:21:24 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
    02:21:24 PM   2884304   1267572     30.53    335216    795552   2048248         0      0.00         0
    02:21:25 PM   2884428   1267448     30.53    335216    795552   2048248         0      0.00         0
    02:21:26 PM   2884428   1267448     30.53    335216    795552   2048248         0      0.00         0
    02:21:27 PM   2884428   1267448     30.53    335216    795552   2048248         0      0.00         0
    02:21:28 PM   2884552   1267324     30.52    335216    795552   2048248         0      0.00         0
    kbmemfree 空闲内存大小
    kbmemused 内存使用量大小
    %memused 内存使用量百分比
    kbbuffers 内存buffers大小
    kbcached 内存cached大小
    kbswpfree 空闲swap大小
    kbswpused swap使用量大小
    %swpused swap使用量百分比

    # cat dev8-0.log
    02:21:24 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    02:21:24 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
    02:21:25 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
    02:21:26 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
    02:21:27 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
    02:21:28 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
    DEV  sar命令正在监视的块设备的名字。
    tps  每秒传输数(或者每秒IO数)
    rd_sec/s 每秒512字节读取数
    wr_sec/s 每秒512字节写入数
    %util  设备饱和度时,会发生此值接近100%。


    # cat loadAverage.log

    2010-09-16 14:21:24 load average: 0.14 0.14 0.15
    2010-09-16 14:21:25 load average: 0.61 0.23 0.18
    2010-09-16 14:21:26 load average: 0.61 0.23 0.18
    2010-09-16 14:21:27 load average: 0.61 0.23 0.18
    2010-09-16 14:21:28 load average: 0.61 0.23 0.18

  • linux top命令详解-zt

    2010-05-26 14:16:23

    top命令和ps命令的基本作用是相同的,显示系统当前的进程和其它状况;但是top是 一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供 了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的 很多特性都可以通过交互式命令或者在个人定制文件中进行设定。在后面的介绍中将把命令参数和交互命令分开讲述。

    下面是该命令的语法格式:
    top [-] [d delay] [q] [c] [s] [S]
    d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
    q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那幺top将以尽可能高的优先级运行。
    S 指定累计模式。
    s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
    i 使top不显示任何闲置或者僵死进程。
    c 显示整个命令行而不只是显示命令名
    top命令显示的项目很多,默认值是每5秒更新一次,当然这是可以设置的。显示的各项目为:
    uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1秒,5秒,15秒的负载值)。
    processes

    自最近一次刷新以来的运行进程总数。当然这些进程被分为正在运行的,休眠的,停止的等很多种类。进程和状态显示可以通过交互命令t来实现。

    CPU states

    显示用户模式,系统模式,优先级进程(只有优先级为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先级进程所消耗的时间也被列入到用户 和系统的时间中,所以总的百分比将大于100%。Mem 内存使用情况统计,其中包括总的可用内存,空闲内存,已用内存,共享内存和缓存所占内存的情况。
    Swap 交换空间统计,其中包括总的交换空间,可用交换空间,已用交换空间。
    PID 每个进程的ID。
    PPID 每个进程的父进程ID。
    UID 每个进程所有者的UID 。
    USER 每个进程所有者的用户名。
    PRI 每个进程的优先级别。
    NI 该进程的优先级值。
    SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。
    TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。
    DSIZE 数据和堆栈的大小。
    TRS 文本驻留大小。
    D 被标记为“不干净”的页项目。
    LIB 使用的库页的大小。对于ELF进程没有作用。
    RSS 该进程占用的物理内存的总数量,单位是KB。
    SHARE 该进程使用共享内存的数量。
    STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。
    TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那幺该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。%CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。%MEM 该进程占用的物理内存占总内存的百分比。
    COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行。

    下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
    <空格>; 立即刷新显示。
    Ctrl+L 擦除并且重写屏幕。
    h或者? 显示帮助画面,给出一些简短的命令总结说明。
    k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什幺样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
    i 忽略闲置和僵死进程。这是一个开关式命令。
    q 退出程序。
    r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
    S 切换到累计模式。
    s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
    f或者F 从当前显示中添加或者删除项目。
    o或者O 改变显示项目的顺序。
    l 切换显示平均负载和启动时间信息。
    m 切换显示内存信息。
    t 切换显示进程和CPU状态信息。
    c 切换显示命令名称和完整命令行。
    M 根据驻留内存大小进行排序。
    P 根据CPU使用百分比大小进行排序。
    T 根据时间/累计时间进行排序。
    W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
    从上面的介绍中可以看到,top命令是一个功能十分强大的监控系统的工具,尤其对于系统管理员而言更是如此。一般的用户可能会觉得ps命令其实就够用了,但是top命令的强劲功能确实提供了不少方便。下面来看看实际使用的情况。

    [例] 键入top命令查看系统状况
    $ top
    1:55pm up 7 min, 4 user, load average:0.07,0.09,0.06
    29 processes:28 sleeping, 1 running, 0 zombie, 0 stopped
    CPU states: 4.5% user, 3.6% system, 0.0% nice, 91.9%
    idle
    Mem: 38916K av, 18564K used, 20352K free, 11660K shrd,
    1220K buff
    Swap: 33228K av, 0K used, 33228K free, 11820K cached
    PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME
    COMMAND
    363 root 14 0 708 708 552 R 0 8.1 1.8 0:00 top
    1 root 0 0 404 404 344 S 0 0.0 1.0 0:03 init
    2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
    3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:00 kswapd
    4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread
    5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread
    312 root 1 0 636 636 488 S 0 0.0 1.6 0:00 telnet
    285 root 6 0 1140 1140 804 S 0 0.0 2.9 0.00 bash
    286 root 0 0 1048 1048 792 S 0 0.0 2.6 0.00 bash
    25 root 0 0 364 364 312 S 0 0.0 0.9 0.00 kerneld
    153 root 0 0 456 456 372 S 0 0.0 1.1 0.00 syslogd
    160 root 0 0 552 552 344 S 0 0.0 1.4 0.00 klogd
    169 daemon 0 0 416 416 340 S 0 0.0 1.0 0.00 atd
    178 root 2 0 496 496 412 S 0 0.0 1.2 0.00 crond
    187 bin 0 0 352 352 284 S 0 0.0 0.9 0.00 portmap
    232 root 0 0 500 500 412 S 0 0.0 1.2 0.00 rpc.mountd
    206 root 0 0 412 412 344 S 0 0.0 1.0 0.00 inetd
    215 root 0 0 436 436 360 S 0 0.0 1.1 0.00 icmplog

    第一行的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。
    第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。
    第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。
    第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。
    第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。然后下面就是和ps相仿的各进程情况列表了。总的来说,top命令的功能强于ps,但需要长久占用前台,所以用户应该根据自己的情况来使用这个命令。
    google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);
  • linux-文件按大小来排序

    2010-05-19 14:41:12

    linux-文件按大小来排序

    可利用下面两个命令:
    1、ls或ll的参数-s可显示文件大小;
    2、sort命令可进行排序;
       -k参数表示对第几个字段进行排序;

    ls -s:第一列显示的是文件大小
    ls -s | sort -k 1 -n:表示对第一个字段(即文件大小)按数值大小进行排序;
    如果想倒序,可以增加-r参数;

  • linux-mount: unknown filesystem type 'smbfs'解决方法记录

    2010-02-05 09:59:46

    今天在使用CentOS release 5.2 (Final),mount其它服务器的文件目录时

    # mount -t smbfs -o username="administrator",password="" //192.168.1.100/cp /mnt/ntfs

    提示出错:
    mount: unknown filesystem type 'smbfs'

    查资料后,说smbfs改为cifs了,所以要用下面的方法:

    # mount -t cifs -o username="administrator",password="" //192.168.1.101/cp /mnt/ntfs

    成功!!

     

  • tomcat服务器rar文件在浏览器中乱码显示,无法正常下载-解决方案

    2010-01-26 10:57:28

    tomcat服务器rar文件在浏览器中乱码显示,无法正常下载-解决方案

    使用tomcat服务器时,可能会遇到一个问题,一些类型的文件无法正常下载,而是直接在浏览器中打开,且显示的全是乱码;

    解决方法:
    在tomcat/conf/web.xml文件中配置如下信息即可:

    <mime-mapping>
      <extension>rar</extension>
      <mime-type>application/rar</mime-type>
    </mime-mapping>

     

    RAR的MIME类型为: application/octet-stream或application/x-rar-compressed或application/rar。

    其它类型文件,如遇到相似问题,也可以配置对应的mime类型来解决;

  • linux-AS4U7系统安装SNMP时遇到的问题解决记录

    2010-01-20 17:44:38

    AS4U7系统安装SNMP时遇到的问题解决记录

     

    1)make make install时,如果有如下报错:

    grep: /usr/lib/libbeecrypt.la: No such file or directory

    /bin/sed: can't read /usr/lib/libbeecrypt.la: No such file or directory

    libtool: link: `/usr/lib/libbeecrypt.la' is not a valid libtool archive

    make[1]: *** [libnetsnmpmibs.la] Error 1

    make[1]: Leaving directory `/usr/local/net-snmp-5.4.2.1/agent'

    make: *** [subdirs] Error 1

    说明缺少libbeecrypt.la libbeecrypt.so等共享库

    如果确认系统中有libbeecrypt.la,也许他安装在/usr/local下面,可尝试:

    ln -s /usr/local/lib/libbeecrypt.la /usr/lib/libbeecrypt.la

    如果/usr/local下面没有,那么你必须安装beecrypt

     

    下载路径:http://nchc.dl.sourceforge.net/sourceforge/beecrypt/beecrypt-4.2.1.tar.gz

     

    Beecrypt安装:

    cd /usr/local

    tar xzvf beecrypt-4.2.1.tar.gz

    ./configure

    make

    make install

    ln -s /usr/local/lib/libbeecrypt.la /usr/lib/libbeecrypt.la

     

    安装完beecrypt后,回到net-snmp目录再make&make install

    cd /usr/local/net-snmp-5.4.2.1

    make

    make install

     

    2)如果make过程中有报如下错误:

    /usr/bin/ld: cannot find -lelf

    collect2: ld returned 1 exit status

    make[1]: *** [snmpd] Error 1

    make[1]: Leaving directory `/usr/local/net-snmp-5.4.2.1/agent'

    make: *** [subdirs] Error 1

    解决方法:

    ln -s /usr/lib/libelf.so.1  /usr/lib/libelf.so

     

    再回到net-snmp目录进行:make&make install

    cd /usr/local/net-snmp-5.4.2.1

    make

    make install

     

  • linux-分区有问题,进不了系统时的解决方法

    2009-12-08 16:44:21

    linux-分区有问题,进不了系统时的解决方法

    进入系统过程中,分区有问题,提示可以输入root密码进入shell模式,修改后再进系统

    这时可以执行如下操作:
    1)输入root密码;
    2)mount -o remount,rw /
    #####这步一定要做,不然对文件只有只读权限,无法进行下面的操作#####
    3)vi /etc/fstab
    #####这里,把有问题的分区设置屏蔽或修改掉;#####
    4)reboot
    #####重启后就可以进入系统#####

  • linux-乱码文件删除方法

    2009-12-04 09:48:35

    使用linux过程中,常常遇到一些乱码文件,这个时候,删除也不行,转移也不行
    下面介绍两种方法,可以解决这个问题

    (1)转自

    当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。^+[U-Brc#s

    但是我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件。首先,我们要取得文件的i节点号。这个可以通过ls命令的-i选项获得得,也可以通过ll -i 来获得。

    第二步,使用find命令将文件名传递给rm命令。e.g:删除节点为12345的乱码文件夹可以使用如下命令

    find ./ -inum 12345 -print -exec rm {} -rf  \;1

     

    (2)rm  -- -file

    --表示这是rm最后一个参数

    e.g:  rm -rf -- *.eml

     

973/5<12345>
Open Toolbar