不可轻言放弃,否则对不起自己!

发布新日志

  • 使用shell脚本实现自动SSH互信功能(转)

    2015-09-22 14:17:01

     说假设有一个1000台节点的Hadoop集群,要配置节点之间的SSH免密码登录,该如何用shell脚本实现?

    #!/bin/expect
     
    #循环1000台机器的IP地址,生成密钥文件authorized_keys
     
    for ip in {cat ip.list}
    do
        ssh user@$ip ssh-keygen -t rsa  &>/dev/null
        expect{
                    "yes/no" { send "yes\r";exp_continue}
                    "password:"{send "$passwd\r";exp_continue}
                  }
        cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys &> /dev/null  
        exit
        if [ !-f ~/.ssh/authorized_keys ];<br>    then
           touch ~/.ssh/authorized_keys<br>    fi
        ssh user@$ip cat ~/.ssh/authorized_keys >> ~/.ssh/authorized_keys  &> /dev/null
        expect{
                    "yes/no" { send "yes\r";exp_continue}
                    "password:"{send "$passwd\r";exp_continue}
                  }   
    done
     
    #scp authorized_keys 文件到各台机器上面。
    for ip in {cat ip.list}
    do
       scp ~/.ssh/authorized_keys user@$ip:~/.ssh/ 
        expect{
                    "yes/no" { send "yes\r";exp_continue}
                    "password:"{send "$passwd\r";exp_continue}
                  }  
    done


    原文地址:http://www.cnblogs.com/vovlie/archive/2012/10/17/2727029.html
  • app性能数据收集

    2015-07-19 19:10:18

    功能描述

    集成monkey功能, 以及在手工测试app端功能时,自动收集相关数据,并生成HTML报告。

     

    实现方法

      1、采用python脚本来驱动测试;

      2、调用android SDK adbmonkey命令,进行数据采集和稳定性测试;

      3、采集数据写入文件和数据库;

      4、附带android其他小脚本,便于测试过程中使用;

      5、根据实际情况修改配置文件后进行数据采集,生成静态HTML报告,数据一目了然

     

    目录结构

    代码目录结构:


     

     

    性能数据收集使用指南

    测试准备

    1、配置文件

    只需保证配置文件内容正确即可。

    配置文件存放在src/config/目录下,名称是:config.ini。配置文件各参数介绍,参考如下:

    [PERFORMANCE]

    package_name = com.xxxxx.xxxx

    activity = com.xxxxx.xxx.xxxxxPager

    start_no = 10

    interval = 5

    capture_num = 100

    isROOT = True


    [MONKEY]

    #种子数

    throttle = 500

    #事件数

    event_number = 10000

    #事件延迟时间

    event_delay_time = 600

    #事件分布比,填写正整数,且总和不能超过100

    pct_touch = 30

    pct_motion = 30

    pct_nav = 0

    pct_trackball = 0

    pct_majornav = 10

    pct_syskeys = 10

    pct_appswitch = 10

    pct_anyevent = 10


    [CAPTURE_FILE]

    #性能数据采集后记录到文件

    cpu_info_file = cpu_info.txt

    cpu_load_file = cpu_load.txt

    mem_info_file = mem_info.txt

    flow_info_file = flow_info.txt


     

    2SQLIte数据库表设计说明

    表名 字段 字段说明
    cpu_data    
      capture_time 采集时间点
      occupancyRate 总的cpu消耗百分比
      user user百分比
      kernel kernel百分比
       
    cpu_load    
      capture_time 采集时间点
      lavg_1 1分钟平均负载
      lavg_5 5分钟平均负载
      lavg_15 15分钟平均负载
      nr_running 在采样时刻,运行队列的任务的数
      nr_threads 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
      last_pid 最大的pid值,包括轻量级进程,即线程
       
    flow_data    
      capture_time 采集时间点
      download wifi下载流量
      upload wifi上传流量
      down_flow_diff 本次download-上一次download,差值为两个采集时间点下载流量的实际消耗
      up_flow_diff 本次upload-上一次upload,差值为两个采集时间点上传流量的实际消耗
       
    mem_data    
      capture_time 采集时间点
      mem_percent 内存实际消耗百分比(PSS/MemoryTotal)


    3、创建表SQL语句

    表名 SQL语句
    cpu_data CREATE TABLE [cpu_data] (
      [capture_time] DATETIME NOT NULL,
      [occupancyRate] CHAR NOT NULL,
      [user] CHAR NOT NULL,
      [kernel] CHAR NOT NULL);
       
    cpu_load CREATE TABLE [cpu_load] (
      [capture_time] DATETIME NOT NULL,
      [lavg_1] CHAR NOT NULL,
      [lavg_5] CHAR NOT NULL,
      [lavg_15] CHAR NOT NULL,
      [nr_running] INT,
      [nr_threads] INT,
      [last_pid] CHAR);
       
    flow_data CREATE TABLE [flow_data] (
      [capture_time] DATETIME NOT NULL,
      [download] CHAR NOT NULL,
      [upload] CHAR NOT NULL,
      [down_flow_diff] CHAR,
      [up_flow_diff] CHAR);
       
    mem_data CREATE TABLE [mem_data] (
      [capture_time] DATETIME NOT NULL,
      [mem_percent] CHAR NOT NULL);

     

     

    4、涉及的第三方模块

    模块名称

    安装命令

    模块说明

    progressbar

    pip install progressbar

    进度条

    configobj

    pip install configobj

    读取配置文件

    matplotlib

    pip install matplotlib

    绘图使用

    dateuti

    pip install python-dateutil

    绘图使用

    numpy

    pip install numpy

    绘图使用

     

     

     

     

     

    性能数据收集代码执行

        执行src目录下run_performance.py,即可进行性能数据的收集工作,在数据收集期间,请手工进行app端的功能测试,这样的数据采集才具有意义。

     

    Monkey稳定性测试

    src目录下,执行run_monkey.py,可调用monkey命令进行稳定性测试,产生的日志信息记录在report目录下。

     

    说明:

        可在进行monkey稳定性过程中,进行性能数据收集操作,这样采集的数据为monkey稳定性测试期间被测app的性能数据。

     

     

    测试报告查看

    测试报告在report目录下Performance_Results.html文件,部分截图详见附件


  • python all any

    2014-07-07 14:53:15

    python all any

    all
    def all(iterable):
        for element in iterable:
            if not element:
                return False
        return True

    any
    def any(iterable):
       for element in iterable:
           if  element:
               return False
       return True
       

    all 只要list或tupe中含有0,'',false中的任何一个,则为false;否则为true
    any 只要list或tupe中含有0,'',false(全部),则为false;否则为true
    注意:
    all  空元组、空列表返回true
    any  空元组、空列表返回false
  • 删除文件中的空格

    2014-06-06 10:37:14

    #!/usr/bin/bask

    ls|while read i;do  

        mv "$i" $(echo $i|tr -d ' ') 2>/dev/null  

    done 

  • 文件列求和

    2014-01-21 16:40:51

    对文件中某一列进行数值求和
     
    198 MMSGSUSE11 [wyz] :/home/wyz/perl/testcase>more tmp.txt
    testAddCountryCode.AddCountryCode 5 0 0 796.28
    testChcekSAGipNormal.ChcekSAGIPNormalTest 3 0 0 418.28
    testCheckInfoNormal.CheckInfoNormalTest 3 0 0 748.26
    testCheckSAGIPNormal.StageInteractiveNormalTest 3 0 0 804.79
    testCheckSPinfo.CheckSPinfoTest 12 0 0 1736.24
    testConsumModify.ConsumModify 8 0 0 2628.19
    testCountryCodeAbnormalCase.CountryCodeAbnormalTest 3 0 0 899.41
    testDelCountryCode.DelCountryCodeTest 5 0 0 1512.43
    testEmigratedInteractive.EmigratedInteractiveTest 1 0 0 401.68
    testGeneralOndemand.OndemandTest 10 0 0 2835.79
    testGeneralOndemandAbnormal.OnDemandAbnormal 4 0 0 1029.27
    testGiveOndemandAbnormal.GiveOndemandAbnormal 2 0 0 115.75
     
     
    操作:
    200 MMSGSUSE11 [wyz] :/home/wyz/perl/testcase>awk '{m+=$2} END{print m}' tmp.txt
    59
     
     
    对多列求和
    201 MMSGSUSE11 [wyz] :/home/wyz/perl/testcase>more t.txt
    00|M00a|0A|a00|0.00|15.00
    00|M00a|0A|a00|0.00|15.00
    00|M0Z1|0B|my|10.00|0.00
    00|M0Z1|0A|a00|10.00|0.00
    00|M005|0A|a00|0.00|1.48
    00|M005|0A|a00|2.96|0.00
    00|M005|0A|a00|2.96|0.00
    202 MMSGSUSE11 [wyz] :/home/wyz/perl/testcase>awk -F '|' '{m+=$5;n+=$6} END {print m,n}' t.txt
    25.92 31.48
     
  • 集群软件配置

    2014-01-15 16:39:40

    共享磁盘设置

    查看共享磁盘与盘符的对应关系

    GW_8:~ # fdisk -l

     

    Disk /dev/sda: 145.9 GB, 145999527936 bytes

    255 heads, 63 sectors/track, 17750 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

       Device Boot      Start         End      Blocks   Id  System

    /dev/sda1               1        3134    25173823+  82  Linux swap / Solaris

    /dev/sda2   *        3135        5876    22025115   83  Linux

    /dev/sda3            5877       17750    95377905    f  W95 Ext'd (LBA)

    /dev/sda5            5877       12404    52436128+  83  Linux

    /dev/sda6           12405       17626    41945683+  83  Linux

     

    Disk /dev/sdb: 107.3 GB, 107374182400 bytes

    255 heads, 63 sectors/track, 13054 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Disk /dev/sdb doesn't contain a valid partition table

     

    Disk /dev/sdc: 463.8 GB, 463856467968 bytes

    255 heads, 63 sectors/track, 56394 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Disk /dev/sdc doesn't contain a valid partition table

     

    Disk /dev/dm-0: 463.8 GB, 463848079360 bytes

    255 heads, 63 sectors/track, 56392 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

     

    Disk /dev/dm-0 doesn't contain a valid partition table

    GW_8:~ # ls -l /dev/disk/by-id/

    total 0

    lrwxrwxrwx 1 root root  9 Mar  5 01:30 edd-int13_dev80 -> ../../sda

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 edd-int13_dev80-part1 -> ../../sda1

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 edd-int13_dev80-part2 -> ../../sda2

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 edd-int13_dev80-part3 -> ../../sda3

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 edd-int13_dev80-part5 -> ../../sda5

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 edd-int13_dev80-part6 -> ../../sda6

    lrwxrwxrwx 1 root root  9 Mar  5 01:30 scsi-360022a110003135e2d632e9f00000000 -> ../../sdb

    lrwxrwxrwx 1 root root  9 Mar  5 01:30 scsi-360022a110003135e2d635fa500000004 -> ../../sdc

    lrwxrwxrwx 1 root root  9 Mar  5 01:30 scsi-3600508e000000000d97c2018652fe50e -> ../../sda

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 scsi-3600508e000000000d97c2018652fe50e-part1 -> ../../sda1

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 scsi-3600508e000000000d97c2018652fe50e-part2 -> ../../sda2

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 scsi-3600508e000000000d97c2018652fe50e-part3 -> ../../sda3

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 scsi-3600508e000000000d97c2018652fe50e-part5 -> ../../sda5

    lrwxrwxrwx 1 root root 10 Mar  5 01:30 scsi-3600508e000000000d97c2018652fe50e-part6 -> ../../sda6

     

     

    整理出共享磁盘与盘符的对应关系

    VDisk(LUN)名称

    WWN

    映射磁盘ID

    映射盘符

    lun_ora

    60022a110003135e2d632e9f00000000

    scsi-360022a110003135e2d632e9f00000000

    /dev/sdb

     

    说明:

    /dev/sdc分区,用于文件系统的创建,存放彩信日志、话单与存储。

     

    DGASM File的空间分配

    本节针对中小容量阵列进行空间规划举例,产品依据实际情况进行调整

    基本原则

    l   dg_ora最大不超过150G

    l   dg_datadg_index的比例为1:1

    l   dg_backupdg_datadg_index之间的比例应在1:2~1:4之间,建议为1:3

    l   DG命名规则、DG用途、ASM File命名规则、ASM File用途、ASM File大小依据本章的规划进行设置。

    DG_ORA规划

    DG_ORA空间划分示例:

    100GDG_ORA划分

    DG名称


    ASM File名称

    ASM File大小(MB)

    用途

    DG_ORA

    [分配20.65G]

    system

    3000

    创建system表空间

    sysaux

    3000

    创建sysaux表空间

    temp

    4000

    创建temp表空间

    undotbs01

    4000

    创建undo表空间

    user

    50

    创建user表空间

    control01

    300

    创建控制文件

    control02

    300

    创建控制文件

    redolog01

    2000

    创建联机日志1号组成员

    redolog02

    2000

    创建联机日志2号组成员

    redolog03

    2000

    创建联机日志3号组成员

    剩下的空间可以分配给应用表空间,或应用表空间使用独立的ASM磁盘组下的某个成员(这时,应减少DG_ORA对应lun的大小分配)。

     

     

    挂接块设备并赋予正确的权限

    根据本章节整理的共享磁盘与盘符的对应关系,以root用户登录,编辑/etc/init.d/after.local添加以下记录(如果存在则跳过):

    mkdir -p /dev/diskgroup

    chmod 770 /dev/diskgroup

    chown grid:oinstall /dev/diskgroup

     

    ln -f -s /dev/disk/by-id/scsi-360022a110003135e2d632e9f00000000 /dev/diskgroup/dg_ora     

    chmod 660 /dev/diskgroup/dg_*   

    chown grid:oinstall /dev/diskgroup/dg_*

     

    /etc/init.d/after.local赋权限

    # chmod 744 /etc/init.d/after.local

     

    执行/etc/init.d/after.local

    # sh /etc/init.d/after.local

    配置HAS

    root用户登录服务器,执行脚本roothas.pl

    # /opt/oracrs/product/11gR2/grid/perl/bin/perl -I/opt/oracrs/product/11gR2/grid/perl/lib -I/opt/oracrs/product/11gR2/grid/crs/install /opt/oracrs/product/11gR2/grid/crs/install/roothas.pl
    下面是执行过程中的屏显信息

     

    Using configuration parameter file: /opt/oracrs/product/11gR2/grid/crs/install/crsconfig_params

    Creating trace directory

    User ignored Prerequisites during installation

    LOCAL ADD MODE

    Creating OCR keys for user 'grid', privgrp 'oinstall'..

    <

  • sqlite python执行delete报错

    2013-12-06 15:54:49

    #coding=gbk 
    from sqlite3 import dbapi2
     
    # 打开数据库 c:\mytest.db 
    conn=dbapi2.connect("c:\\mytest.db")
    # 创建数据表 mytb 
    sql1 = "CREATE TABLE IF NOT EXISTS mytb1 ( a char , b int , c real )"
    sql2 = "CREATE TABLE IF NOT EXISTS mytb2 ( a char , b int , c real )"
    sql3 = "CREATE TABLE IF NOT EXISTS mytb3 ( a char , b int , c real )"
    conn.execute( sql1 )  
    conn.execute( sql2 ) 
    conn.execute( sql3 )  
    cs = conn.cursor( )  
    cs.execute("SELECT name FROM sqlite_master WHERE type='table'")
    records = cs.fetchall()
    for i in range(len(records)):
        print 'i:',i
        print 'records:',records[i][0]
       
        #cs.execute("DELETE FROM  %s  " % records[i][0])
        cs.execute('delete from ?' ,records[i][0])
        conn.commit()
     
    cs.close()
    conn.close() 
     
     
    ===============================
    sqlite3.OperationalError: near "?": syntax error
     
     
     
     
  • TNS-12560 TNS-00583错误码

    2013-10-18 09:55:45

    表象
     
    LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 18-10月-2013 09:33:18
    Copyright (c) 1991, 2011, Oracle.  All rights reserved.
    Starting /home/oracle/product/11gR2/db1/bin/tnslsnr: please wait...
    TNSLSNR for Linux: Version 11.2.0.3.0 - Production
    System parameter file is /home/oracle/product/11gR2/db1/network/admin/listener.ora
    Log messages written to /home/oracle/diag/tnslsnr/linux250/listener_ora/alert/log.xml
    Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.137.83.15)(PORT=1526)))
    TNS-12560: TNS:protocol adapter error
     TNS-00583: Valid node checking: unable to parse configuration parameters

    Listener failed to start. See the error message(s) above...
    原因:
    这个问题,可能是由于listener.ora tnsnames.ora sqlnet.ora三个文件或其中的一个文件内容配置错误导致的;
    首先,要逐一排查listener.ora文件中内容是否正确,可以找其他别的好的坚挺文件内容进行比对;
    然后查看tnsnames.ora文件的内容;
    最后查看sqlnet.ora文件内容(如果有的话)。
     
    本次遇见的错误码,在对比listener.ora和tnsnames.ora文件的内容后,并没有发现问题,目标转向了sqlnet.ora文件,最终是因为sqlnet.ora文件内容中,多出了一行~开头的信息,删除了该行开头的~符号就问题解决。
     
     
    小结:
    文件内容在vi时,容易出错,对于配置文件,在vi后,要进行审查,防止文件内容存在比较隐蔽的错误。
  • 软件测试全景图

    2013-09-25 10:04:58

  • ORA-12526错误码

    2013-09-25 09:47:13

    ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式
     
    oerr ora 12526
    12526, 00000, "TNS:listener: all appropriate instances are in restricted mode"
    // *Cause:  Database instances supporting the service requested by the client
    // were in restricted mode. The Listener does not allow connections to
    // instances in restricted mode. This condition may be temporary, such as
    // during periods when database administration is performed.
    // *Action: Attempt the connection again. If error persists, then contact
    // the database administrator to change the mode of the instance,
    // if appropriate.
     
    解决方法:
    ALTER SYSTEM DISABLE RESTRICTED SESSION;
  • grid环境变量

    2013-08-12 19:34:47

    # Grid Environment
    export ORACLE_BASE=/opt/oracrs/base
    export ORACLE_HOME=/opt/oracrs/product/11gR2/grid
    export ORACLE_SID=+ASM
    export ORACLE_TERM=xterm
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
    export LD_LIBRARY_PATH
    SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib
    export SHLIB_PATH
    # Set shell search paths:
    export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH:/usr/local/bin
    # CLASSPATH must include the following JRE locations:
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
    export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    export DISPLAY=127.0.0.1:1.0
  • local_listener监听配置取值

    2013-08-12 16:24:36

    oracle@MMSG:~/product/11gR2/db/network/admin> more listener.ora
    # listener.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    LISTENER_ORA =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.83.17)(PORT = 1526))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
        )
      )
    ADR_BASE_LISTENER_ORA = /opt/oracle
    oracle@MMSG:~/product/11gR2/db/network/admin> more tnsnames.ora
    # tnsnames.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    MMSGDB =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = MMSG)(PORT = 1521))
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.83.17)(PORT = 1526))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = mmsgdb)
        )
      )
    LISTENER_MMSGDB =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = MMSG)(PORT = 1521))
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.83.17)(PORT = 1526))
      )
     
     
    SQL*Plus: Release 11.2.0.3.0 Production on 星期二 8月 13 00:22:29 2013
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Automatic Storage Management, OLAP, Data Mining
    and Real Application Testing options
    SQL> show parameter local_listener
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    local_listener                       string      LISTENER_MMSGDB
    SQL> exit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Automatic Storage Management, OLAP, Data Mining
    and Real Application Testing options 
     
     
     
    local_listener参数要正确设置,否则会出现业务数据库用户使用sid标示连接db时报TNS-12514错误,不使用sid连接时,正常,能登陆到db中
  • 查询表空间使用率

    2013-08-06 17:12:47

    一版只会展示表空间和占用率

    select total.tablespace_name,
        to_char(round((1 - free.MB / total.MB) * 100, 2),'990.99') || '%' as Used_Pct
    from   
        (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
        from dba_free_space
        group by tablespace_name) free,
       
        (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
        from dba_data_files
        group by tablespace_name) total
    where
        free.tablespace_name = total.tablespace_name ;
       

    第二版会展示占用率和当前空间大小和已经使用大小。

    select total.tablespace_name,
        to_char(round((1 - free.MB / total.MB) * 100, 2),'990.99') || '%' as Used_Pct,
        free.MB as freeMB,
        total.MB as totalMB
    from   
        (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
        from dba_free_space
        group by tablespace_name) free,
       
        (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
        from dba_data_files
        group by tablespace_name) total
    where
        free.tablespace_name = total.tablespace_name ;

     

    样例输出(version 2, version 1 没有后面两列):

    TABLESPACE_NAME                USED_PCT FREEMB                 TOTALMB               
    ------------------------------ -------- ---------------------- ----------------------
    SYSAUX                           94.44% 58                     1042.375              
    INFOX_WEB_MAIN_DATA              91.67% 62.5                   750                   
    INFOX_MAIN_DATA                   0.35% 498.25                 500                   
    INFOX_RESEND                      2.66% 194.6875               200                   
    INFOX_UNIWEB_MAIN_DATA            1.82% 77.5625                79                    
    USERS                            77.74% 65.125                 292.5625              
    INFOX_WEB_MAIN_LOG                1.84% 775.4375               790                   
    INFOX_UNIWEB_MAIN_INDEX           0.16% 38.9375                39                    
    SYSTEM                           99.33% 5.6875                 850                   
    INFOX_CONGESTION                 10.38% 89.625                 100                   
    UNDOTBS2                         63.32% 375.5625               1024                  
    INFOX_MAIN_INDEX                  0.05% 799.5625               800                   
    INFOX_TRAFFIC                     8.50% 91.5                   100                   
    INFOX_BACKUP_INDEX               28.98% 355.125                500                   
    INFOX_UNIWEB_MAIN_LOG             0.40% 78.6875                79       

  • 测试员,敢问路在何方?来自微软工程师

    2013-08-02 16:41:57

  • crontab详解

    2013-06-18 01:28:05

    1. 在命令行中输入 crontab -e   
    2.   
    3. 就可以配置 cron 了。   
    4.   
    5. cron 配置计划任务的书写格式   
    6.   
    7. * * * * * [用户名] 命令   
    8.   
    9. 分钟 小时 日 月 周 [用户名] 命令   
    10.   
    11. 说明:   
    12.   
    13. 第一段应该定义的是:分钟,表示每个小时的第几分钟来执行。范围是从0-59第二段应该定义的是:小时,表示从第几个小时来执行,范围是从0-23第三段应该定义的是:日期,表示从每个月的第几天执行,范围从1-31第四段应该定义的是:月,表示每年的第几个月来执行,范围从1-12第五段应该定义的是:周,表示每周的第几天执行,范围从0-6,其中 0表示星期日。每六段应该定义的是:用户名,也就是执行程序要通过哪个用户来执行,这个一般可以省略;第七段应该定义的是:执行的命令和参数。注:其中用户名可是省略,用户名定义的是程序用哪个用户来执行,比如mysql服务器,我们可以定义成以mysql用户来启动、停止、重新 启动,这时要写上用户名;不过对于cron来说意义不是太大,因为每个用户都有自己的cron配置文件。有些程序的启动必须用到root用户,这时我们就 可以修改root用户的cron配置文件就行了。在每个用户的配置文件中,不必指定用户名。   
    14.   
    15. 我们可以把计划任务写在全局性配置文件中,如果您想把一个计划放入全局性配置文件中,就得改发行版所对应的cron全局配置文件,比如Fedora 5的全局性配置文件是/etc/crontab文件;   
    16.   
    17. 每个用户也能定义自己的cron配置文件,用crontab -e 命令来定义;   
    18.   
    19. 举一例:让机器在每天830分重新启动;   
    20.   
    21. 关于时间格式中有7个字段。我们可以直接更改或者添加,当然这是系统任务调用。举个例子,比如我在每天的早上830分重新启动机器,就可以在   
    22. /etc/crontab中加入下面的两句,第一句就是注释了。以#号开始,后面写一个自己能知道这是什么任务的备注;   
    23.   
    24. # reboot OS   
    25. 30 8 * * * root /sbin/reboot   
    26. 第一段应该定义的是:分钟,表示每个小时的第几分钟来执行。范围是从0-59  
    27. 第二段应该定义的是:小时,表示从第几个小时来执行,范围是从0-23  
    28. 第三段应该定义的是:日期,表示从每个月的第几天执行,范围从1-31  
    29. 第四段应该定义的是:月,表示每年的第几个月来执行,范围从1-12  
    30. 第五段应该定义的是:周,表示每周的第几天执行,范围从0-6,其中 0表示星期日。   
    31. 每六段应该定义的是:用户名,也就是执行程序要通过哪个用户来执行,这个一般可以省略;   
    32. 第七段应该定义的是:执行的命令和参数。   
    33.   
    34. 对比上面的例子就知道,30是不是分钟??8是不是小时?如果有*代表的地方,表示全部,也就是说,每个月,每天,每星期都要执行。root 表示用root用户执行,命令是/sbin/reboot ,也就是说,系统在每天 830分重新启动;   
    35.   
    36. 我们可以把每天830分重新启动的计划任务写入cron全局性配置文件中,也可以定义在root用户自己的cron配置文件中。如果定义在 root自己的配置文件,请用root身份来执行 crontab -e 来修改配置文件;crontab -e 进入修改配置文件的过程,其实和vi的用法一样,请参看vi 的用法:《文件编辑器 vi》   
    37.   
    38. 这里有c r o n t a b文件条目的一些例子:   
    39. 30 21 * * * /apps/bin/cleanup.sh   
    40. 上面的例子表示每晚的21:3 0运行/a p p s/b i n目录下的cleanup.sh。   
    41. 45 4 1,10,22 * * /apps/bin/backup.sh   
    42. 上面的例子表示每月11 02 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。   
    43. 10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;   
    44. 上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。   
    45. 0,30 18-23 * * * /apps/bin/dbcheck.sh   
    46. 上面的例子表示在每天1 8 : 0 02 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c h e c k . s h。   
    47. 0 23 * * 6 /apps/bin/qtrend.sh   
    48. 上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s h。   
    49.   
    50.   
    51. 让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。   
    52.   
    53. 重启cron服务是:/etc/init.d# ./cron restart  
  • data命令详解

    2013-06-18 01:16:54

    date命令使用
    2007年09月28日 04:30 来源:ChinaUnix博客 作者:xinyv 编辑:周荣茂

        #显示时区

        [cnscn@root /home/cnscn/backup]# date +%Z

        CST

        #显示世纪

        [cnscn@root /home/cnscn/backup]# date +%C

        20

        ========================设置===============================

        #设置时间为: 2005年02月22日 09:10:46

        [cnscn@root /home/cnscn/backup]# date 022209102005.46 #月 日 时 分 年 . 秒

        二 2月 22 09:10:46 CST 2005

        #[cnscn@root /home/cnscn/backup]# date -s "+3 hours" #将时间增加3小时

        二 2月 22 09:46:14 CST 2005

        #[cnscn@root /home/cnscn/backup]# date -s "-40 minutes" #将时间减少40分钟

        二 2月 22 09:06:35 CST 2005

        #[cnscn@root /home/cnscn/backup]# date -s "+1 year" #时间增加1年

        三 2月 22 09:14:55 CST 2006

        #[cnscn@root /home/cnscn/backup]# date -s "-1 year" #时间减少一年

        二 2月 22 09:15:02 CST 2005

        ======================按日期显示============================

        [cnscn@root /home/cnscn/backup]# date -d "+1 year"

        三 2月 22 09:57:46 CST 2006

        [cnscn@root /home/cnscn/backup]# date -d "-1 month"

        六 1月 22 09:49:08 CST 2005

        [cnscn@root /home/cnscn/backup]# date -d "-1 month" +%s

        1106358557

        #[cnscn@root /home/cnscn/backup]# date -d "7 days ago" #显示7天前的时间

        二 2月 15 09:16:09 CST 2005

        #[cnscn@root /home/cnscn/backup]# date -d "7 days ago" +%s #显示7天前时间的秒值

        1108430178

        #[cnscn@root /home/cnscn/backup]# date -d "7 days" #显示7天后时间的秒值

        二 3月 1 09:17:11 CST 2005

        #[cnscn@root /home/cnscn/backup]# date -d "7 days" +%s #显示7天后时间的秒值

        1109639824

        =======================================================

        #显示当前系统时间和日期

        $date

        #完整的日期时间显示

        [cnscn@root /home/cnscn/backup]# date +%c

        2005年02月22日 星期二 09时32分19秒

        #以格林威治标准时间显示目前时间和日期

        [cnscn@root /home/cnscn/backup]# date -u

        二 2月 22 01:38:20 UTC 2005

        #以当地习惯显示日期

        [cnscn@root /home/cnscn/backup]# date +%x

        2005年02月22日

        #以mm/dd/yy格式显示系统日期

        [cnscn@root /home/cnscn/backup]# date +%D

        02/22/05

        =========================================================

        #英文全称月份

        [cnscn@root /home/cnscn/backup]# date +%B

        二月

        #英文缩写月份

        [cnscn@root /home/cnscn/backup]# date +%b

        2月

        ============================================================

        #今年第几天

        [cnscn@root /home/cnscn/backup]# date +%j

        053

        ============================================================

        #时:分:秒

        [cnscn@root /home/cnscn/backup]# date +%T09:24:07

        #加上AM与PM

        [cnscn@root /home/cnscn/backup]# date +%T%p

        09:24:07上午

        [cnscn@root /home/cnscn/backup]# date +%r

        09:34:44 上午

        =========================================================

        #周几

        [cnscn@root /home/cnscn/backup]# date +%w

        2

        #本地格式周几全称

        [cnscn@root /home/cnscn/backup]# date +%A

        星期二

        #本地格式周几缩写

        [cnscn@root /home/cnscn/backup]# date +%a

        二

        #今年第几周

        [cnscn@root /home/cnscn/backup]# date +%U

        08

        1)把时间转成秒

         $date -d "20061206 07:08" +%s

         1165360080

        2)把秒转换成时间

         $ date

         2006年 07月 06日 星期四 11:57:18 CST

         $ date -d "now" +%s

         1152158238

         $ date -d "19700101 1152158238 seconds UTC"

         2006年 07月 06日 星期四 11:57:18 CST

  • 计算机常用端口全集

    2013-06-18 01:15:30

    计算机常用端口全集 

    1 传输控制协议端口服务多路开关选择器   
    2 compressnet 管理实用程序   
    3 压缩进程   
    5 远程作业登录   
    7 回显(Echo)   
    9 丢弃   
    11 在线用户   
    13 时间   
    15 netstat   
    17 每日引用   
    18 消息发送协议   
    19 字符发生器   
    20 文件传输协议(默认数据口)   
    21 文件传输协议(控制)   
    22 SSH远程登录协议   
    23 telnet 终端仿真协议   
    24 预留给个人用邮件系统   
    25 smtp 简单邮件发送协议   
    27 NSW 用户系统现场工程师   
    29 MSG ICP   
    31 MSG验证   
    33 显示支持协议   
    35 预留给个人打印机服务   
    37 时间   
    38 路由访问协议   
    39 资源定位协议   
    41 图形   
    42 WINS 主机名服务   
    43 "绰号" who is服务   
    44 MPM(消息处理模块)标志协议   
    45 消息处理模块   
    46 消息处理模块(默认发送口)   
    47 NI FTP   
    48 数码音频后台服务   
    49 TACACS登录主机协议   
    50 远程邮件检查协议   
    51 IMP(接口信息处理机)逻辑地址维护   
    52 施乐网络服务系统时间协议   
    53 域名服务器   
    54 施乐网络服务系统票据交换   
    55 ISI图形语言   
    56 施乐网络服务系统验证   
    57 预留个人用终端访问   
    58 施乐网络服务系统邮件   
    59 预留个人文件服务   
    60 未定义   
    61 NI邮件?   
    62 异步通讯适配器服务   
    63 WHOIS+   
    64 通讯接口   
    65 TACACS数据库服务   
    66 Oracle SQL*NET   
    67 引导程序协议服务端   
    68 引导程序协议客户端   
    69 小型文件传输协议   
    70 信息检索协议   
    71 远程作业服务   
    72 远程作业服务   
    73 远程作业服务   
    74 远程作业服务   
    75 预留给个人拨出服务   
    76 分布式外部对象存储   
    77 预留给个人远程作业输入服务   
    78 修正TCP   
    79 Finger(查询远程主机在线用户等信息)   
    80 全球信息网超文本传输协议(www)   
    81 HOST2名称服务   
    82 传输实用程序   
    83 模块化智能终端ML设备   
    84 公用追踪设备   
    85 模块化智能终端ML设备   
    86 Micro Focus Cobol编程语言   
    87 预留给个人终端连接   
    88 Kerberros安全认证系统   
    89 SU/MIT终端仿真网关   
    90 DNSIX 安全属性标记图   
    91 MIT Dover假脱机   
    92 网络打印协议   
    93 设备控制协议   
    94 Tivoli对象调度   
    95 SUPDUP   
    96 DIXIE协议规范   
    97 快速远程虚拟文件协议   
    98 TAC(东京大学自动计算机)新闻协议   
    101 usually from sri-nic   
    102 iso-tsap   
    103 ISO Mail   
    104 x400-snd   
    105 csnet-ns   
    109 Post Office   
    110 Pop3 服务器(邮箱发送服务器)   
    111 portmap 或 sunrpc   
    113 身份查询   
    115 sftp   
    117 path 或 uucp-path   
    119 新闻服务器   
    121 BO jammerkillah   
    123 network time protocol (exp)   
    135 DCE endpoint resolutionnetbios-ns   
    137 NetBios-NS   
    138 NetBios-DGN   
    139 win98 共享资源端口(NetBios-SSN)   
    143 IMAP电子邮件   
    144 NeWS - news   
    153 sgmp - sgmp   
    158 PCMAIL   
    161 snmp - snmp   
    162 snmp-trap -snmp   
    170 network PostScript.   
    175 vmnet   
    194 Irc   
    315 load   
    400 vmnet0   
    443 安全服务   
    456 Hackers Paradise   
    500 sytek   
    512 exec   
    513 login   
    514 shell - cmd   
    515 printer - spooler   
    517 talk   
    518 ntalk   
    520 efs   
    526 tempo - newdate   
    530 courier - rpc   
    531 conference - chat   
    532 netnews - readnews   
    533 netwall   
    540 uucp - uucpd  543 klogin   
    544 kshell   
    550 new-rwho - new-who   
    555 Stealth Spy(Phase)   
    556 remotefs - rfs_server   
    600 garcon   
    666 Attack FTP   
    750 kerberos - kdc   
    751 kerberos_master   
    754 krb_prop   
    888 erlogin   
    1001 Silencer 或 WebEx   
    1010 Doly trojan v1.35   
    1011 Doly Trojan   
    1024 NetSpy.698 (YAI)   
    1025 NetSpy.698   
    1033 Netspy   
    1042 Bla1.1   
    1047 GateCrasher   
    1080 Wingate   
    1109 kpop   
    1243 SubSeven   
    1245 Vodoo   
    1269 Mavericks Matrix   
    1433 Microsoft SQL Server 数据库服务  
    1492 FTP99CMP (BackOriffice.FTP)  
    1509 Streaming Server  
    1524 ingreslock  
    1600 Shiv  
    1807 SpySender  
    1981 ShockRave  
    1999 Backdoor  
    2000 黑洞(木马) 默认端口  
    2001 黑洞(木马) 默认端口  
    2023 Pass Ripper  
    2053 knetd  
    2140 DeepThroat.10 或 Invasor  
    2283 Rat  
    2565 Striker  
    2583 Wincrash2  
    2801 Phineas  
    3129 MastersParadise.92  
    3150 Deep Throat 1.0  
    3210 SchoolBus  
    3389 Win2000 远程登陆端口  
    4000 OICQ Client  
    4567 FileNail  
    4950 IcqTrojan  
    5000 WindowsXP 默认启动的 UPNP 服务  
    5190 ICQ Query  
    5321 Firehotcker  
    5400 BackConstruction1.2 或 BladeRunner  
    5550 Xtcp  
    5555 rmt - rmtd  
    5556 mtb - mtbd  
    5569 RoboHack  
    5714 Wincrash3  
    5742 Wincrash  
    6400 The Thing  
    6669 Vampire  
    6670 Deep Throat  
    6711 SubSeven  
    6713 SubSeven  
    6767 NT Remote Control  
    6771 Deep Throat 3  
    6776 SubSeven  
    6883 DeltaSource  
    6939 Indoctrination  
    6969 Gatecrasher.a  
    7306 网络精灵(木马)  
    7307 ProcSpy  
    7308 X Spy  
    7626 冰河(木马) 默认端口  
    7789 ICQKiller  
    8000 OICQ Server  
    9400 InCommand  
    9401 InCommand  
    9402 InCommand  
    9535 man  
    9536 w  
    9537 mantst  
    9872 Portal of Doom  
    9875 Portal of Doom  
    9989 InIkiller  
    10000 bnews  
    10001 queue  
    10002 poker  
    10167 Portal Of Doom  
    10607 Coma  
    11000 Senna Spy Trojans  
    11223 ProgenicTrojan  
    12076 Gjamer 或 MSH.104b  
    12223 Hack?9 KeyLogger  
    12345 netbus木马 默认端口  
    12346 netbus木马 默认端口  
    12631 WhackJob.NB1.7  
    16969 Priotrity  
    17300 Kuang2  
    20000 Millenium II (GrilFriend)  
    20001 Millenium II (GrilFriend)  
    20034 NetBus Pro  
    20331 Bla  
    21554 GirlFriend 或 Schwindler 1.82  
    22222 Prosiak  
    23456 Evil FTP 或 UglyFtp 或 WhackJob  
    27374 SubSeven  
    29891 The Unexplained  
    30029 AOLTrojan  
    30100 NetSphere  
    30303 Socket23  
    30999 Kuang  
    31337 BackOriffice  
    31339 NetSpy  
    31666 BO Whackmole  
    31787 Hack a tack  
    33333 Prosiak  
    33911 Trojan Spirit 2001 a  
    34324 TN 或 Tiny Telnet Server  
    40412 TheSpy  
    40421 MastersParadise.96  
    40423 Master Paradise.97  
    47878 BirdSpy2  
    50766 Fore 或 Schwindler  
    53001 Remote Shutdown  
    54320 Back Orifice 2000  
    54321 SchoolBus 1.6  
    61466 Telecommando  
    65000 Devil  
    8000 灰鸽子木马默认端口  
    5022 华夏同盟远程控制默认端口  
    4899 远程登录端口 

         

    计算机常用端口全集 

       我们常常会在各类的技术文章中见到诸如135、137、139、443之类的“端口”,可是这些端口究竟有什么用呢?它会不会给我们的计算机带来潜在的威胁呢?究竟有多少端口是有用的?

    端口:0  
    服务:Reserved  
    说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。  



    端口:1  
    服务:tcpmux  
    说明:这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,默认情况下tcpmux在这种系统中被打开。Irix机器在发布是含有几个默认的无密码的帐户,如:IP、GUEST UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。许多管理员在安装后忘记删除这些帐户。因此HACKER在INTERNET上搜索tcpmux并利用这些帐户。 
    端口:7  
    服务:Echo  
    说明:能看到许多人搜索Fraggle放大器时,发送到X.X.X.0和X.X.X.255的信息。  

    端口:19  
    服务:Character Generator  
    说明:这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时会发送含有垃圾字符的数据流直到连接关闭。HACKER利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。同样Fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。  

    端口:21  
    服务:FTP  
    说明:FTP服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口。  

    端口:22  
    服务:Ssh  
    说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在。  

    端口:23  
    服务:Telnet  
    说明:远程登录,入侵者在搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马Tiny Telnet Server就开放这个端口。  

    端口:25  
    服务:SMTP  
    说明:SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的E-MAIL服务器上,将简单的信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口。  

    端口:31  
    服务:MSG Authentication  
    说明:木马Master Paradise、Hackers Paradise开放此端口。  

    端口:42  
    服务:WINS Replication  
    说明:WINS复制  

    端口:53  
    服务:域名 Name Server(域)  
    说明:域服务器所开放的端口,入侵者可能是试图进行区域传递(TCP),欺骗域(UDP)或隐藏其他的通信。因此防火墙常常过滤或记录此端口。  

    端口:67  
    服务:Bootstrap Protocol Server  
    说明:通过DSL和Cable modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址。HACKER常进入它们,分配一个地址把自己作为局部路由器而发起大量中间人(man-in-middle)攻击。客户端向68端口广播请求配置,服务器向67端口广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。  

    端口:69  
    服务:Trival File Transfer  
    说明:许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常由于错误配置而使入侵者能从系统中窃取任何 文件。它们也可用于系统写入文件。  

    端口:79  
    服务:Finger Server  
    说明:入侵者用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其他机器Finger扫描。 

     

    端口:80  
    服务:HTTP  
    说明:用于网页浏览。木马Executor开放此端口。  

    端口:99  
    服务:Metagram Relay  
    说明:后门程序ncx99开放此端口。  

    端口:102  
    服务:Message transfer agent(MTA)-X.400 over TCP/IP  
    说明:消息传输代理。  

    端口:109  
    服务:Post Office Protocol -Version3  
    说明:POP3服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交 换缓冲区溢出的弱点至少有20个,这意味着入侵者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误。  

    端口:110  
    服务:SUN公司的RPC服务所有端口  
    说明:常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等  

    端口:113  
    服务:Authentication Service  
    说明:这是一个许多计算机上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多计算机的信息。但是它可作为许多服务的记录器,尤其是FTP、POP、IMAP、SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务,将会看到许多这个端口的连接请求。记住,如果阻断这个端口客户端会感觉到在防火墙另一边与E-MAIL服务器的缓慢连接。许多防火墙支持TCP连接的阻断过程中发回RST。这将会停止缓慢的连接。  

    端口:119  
    服务:Network News Transfer Protocol  
    说明:NEWS新闻组传输协议,承载USENET通信。这个端口的连接通常是人们在寻找USENET服务器。多数ISP限制,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM。  

    端口:135  
    服务:本地 Service  
    说明:Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和RPC的服务利用计算机上的end-point mapper注册它们的位置。远端客户连接到计算机时,它们查找end-point mapper找到服务的位置。HACKER扫描计算机的这个端口是为了找到这个计算机上运行Exchange Server吗?什么版本?还有些DOS攻击直接针对这个端口。  

    端口:137、138、139  
    服务:NETBIOS Name Service  
    说明:其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINS Regisrtation也用它。  

    端口:143  
    服务:Interim Mail Access Protocol v2  
    说明:和POP3的安全问题一样,许多IMAP服务器存在有缓冲区溢出漏洞。记住:一种LINUX蠕虫(admv0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已经被感染的用户。当REDHAT在他们的LINUX发布版本中默认允许IMAP后,这些漏洞变的很流行。这一端口还被用于IMAP2,但并不流行。  

    端口:161  
    服务:SNMP  
    说明:SNMP允许远程管理设备。所有配置和运行信息的储存在数据库中,通过SNMP可获得这些信息。许多管理员的错误配置将被暴露在Internet。Cackers将试图使用默认的密码public、private访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向用户的网络。  

    端口:177  
    服务:X Display Manager Control Protocol  
    说明:许多入侵者通过它访问X-windows操作台,它同时需要打开6000端口。  
    端口:389  
    服务:LDAP、ILS  
    说明:轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口。  
    端口:443  
    服务:Https  
    说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。  

    端口:456  
    服务:【NULL】  
    说明:木马HACKERS PARADISE开放此端口。  

    端口:513  
    服务:Login,remote login  
    说明:是从使用cable modem或DSL登陆到子网中的UNIX计算机发出的广播。这些人为入侵者进入他们的系统提供了信息。  

    端口:544  
    服务:【NULL】  
    说明:kerberos kshell  

    端口:548  
    服务:Macintosh,File Services(AFP/IP)  
    说明:Macintosh,文件服务。  

    端口:553  
    服务:CORBA IIOP (UDP)  
    说明:使用cable modem、DSL或VLAN将会看到这个端口的广播。CORBA是一种面向对象的RPC系统。入侵者可以利用这些信息进入系统。  

    端口:555  
    服务:DSF  
    说明:木马PhAse1.0、Stealth Spy、IniKiller开放此端口。  

    端口:568 
  • 查看linux信息

    2013-06-18 01:11:28

    Linux
    内存: cat /proc/meminfo
    cpu: cat /proc/cpuinfo
    硬盘: df -h -T(no device的设备看不到)
    fdisk -l可以在redhat9.0中看; redhat企业版不行.
    还有几个命令可以看很多硬件设备的信息.
    lspci -v
    dmidecode 
    dmesg

    Solaris
    网卡速度: dmesg |grep link 
    CPU频率: psrinfo -v 或者mpstat
    cpu\内存等:prtdiag -v (大部分信息全部列出) 需要先进入/usr/platform/sun4u/sbin
    硬盘: iostat -E
     
    linux 下查看网卡工作速率
    root@localhost ~]# mii-tool
    eth0: negotiated 100baseTx-FD, link ok 100M
    linux 下查看网卡工作速率
    Ethtool是用于查询及设置网卡参数的命令。
    概要:
    ethtool ethX //查询ethX网口基本设置
    ethtool –h //显示ethtool的命令帮助(help)
    ethtool –i ethX //查询ethX网口的相关信息
    ethtool –d ethX //查询ethX网口注册性信息
    ethtool –r ethX //重置ethX网口到自适应模式
    ethtool –S ethX //查询ethX网口收发包统计
    ethtool –s ethX [speed 10|100|1000]\ //设置网口速率10/100/1000M
    [duplex half|full]\ //设置网口半/全双工
    [autoneg on|off]\ //设置网口是否自协商
     
    我在网上看到有人写了这样的脚本来查看主机网卡流量
    #!/bin/bash
    #network
    #Mike.Xu
    while : ; do
    time=`date +%m"-"%d" "%k":"%M`
    day=`date +%m"-"%d`
    rx_before=`ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-`
    tx_before=`ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-`
    sleep 2
    rx_after=`ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-`
    tx_after=`ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-`
    echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps"
    sleep 2
    done
    这个脚本是对的吗,而且为什么rx_result=$[(rx_after-rx_before)/256] , tx_result=$[(tx_after-tx_before)/256]是除以256???这个没看懂,求高手解决,谢谢啦
    脚本是计算两秒钟的 接收 发送出的网卡流量。
    除以 256 是因为你计算的 kbps 。网卡是 64字节一个包. . 
     
    Linux下查看网卡实时流量方法 
    1,使用slurm的监测方法:
    虽然GNOME的系统监视器可以查看到网络状态,但是像slurm这样的命令行工具,占用资源少,查看方便,用起来到是别有一番风味。今天把它介绍给大家。slurm 最初是给FreeBSD的做端口状态监视器,现在我简要的将一些功能做一下概述:
    ? 显示实时流量吐吞状态 
    ? 视图显示可选择 
    ? 可以监视任何网络接口 
    ? 显示关于接口的详细信息
    安装slurm到Ubuntu
    sudo aptitude install slurm
    这样安装就完成了
    Slurm 语法
    slurm [-hHz] [-csl] [-d delay] -i interface
    如果你想监视第一块网卡(eth0),使用下面的命令:
    slurm -i eth0
    终端里的输出类似下面这样。
    2,systat命令监测网络流量
    目前我只在RH AS4及FreeBSD 上有此命令,Ubuntu没有,估计要另行安装.
    使用方法为:
    systat -if 3
    查看网卡流量,其中3表示3秒刷新一次流量
    linux下如何查看网卡的类型
    法一:kudzu --probe --class=network 
    法二:lspci
    网卡是百兆还是千兆
    ifconfig -m 
    用ifconfig命令查看RX bytes和TX bytes这两项参数
     
    这是mii-tool的结果
    eth0: negotiated 100baseTx-FD flow-control, link ok
    eth1: negotiated 100baseTx-FD flow-control, link ok

    这是lspci的信息
    12:02.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet (rev 10)
    12:02.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet (rev 10)
    BCM5704 Gigabit Ethernet
    千兆,千兆网卡接在百兆网上
    mii-tool 只能显示最高 100Mbps,即使当时是千兆的,也显示不出来



    测试机器的硬件信息:

    查看CPU信息(型号)
    # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
    8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
    (看到有8个逻辑CPU, 也知道了CPU型号)

    # cat /proc/cpuinfo | grep physical | uniq -c
    4 physical id : 0
    4 physical id : 1
    (说明实际上是两颗4核的CPU)

    # getconf LONG_BIT
    32
    (说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

    # cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
    8
    (结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)


    再完整看cpu详细信息, 不过大部分我们都不关心而已.
    # dmidecode | grep 'Processor Information'

    查看内 存信息
    # cat /proc/meminfo

    # uname -a
    Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
    (查看当前操作系统内核信息)

    # cat /etc/issue | grep Linux
    Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
    (查看当前操作系统发行版信息)

    查看机器型号
    # dmidecode | grep "Product Name" 

    查看网卡信息
    # dmesg | grep -i eth
     
     
    linux查看硬件信息的命令


    在LINUX环境开发驱动程序,首先要探测到新硬件,接下来就是开发驱动程序。

    常用命令整理如下:

    用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)

    查看CPU信息:cat /proc/cpuinfo

    查看板卡信息:cat /proc/pci

    查看PCI信息:lspci (相比cat /proc/pci更直观) 
    例子: lspci |grep Ethernet 查看网卡型号

    查看内存信息:cat /proc/meminfo

    查看USB设备:cat /proc/bus/usb/devices

    查看键盘和鼠标:cat /proc/bus/input/devices

    查看系统硬盘信息和使用情况:fdisk & disk - l & df

    查看各设备的中断请求(IRQ):cat /proc/interrupts

    查看系统体系结构:uname -a


    dmidecode查看硬件信息,包括bios、cpu、内存等信息

    dmesg | more 查看硬件信息


    对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
    Cpuinfo 主机CPU信息
    Dma 主机DMA通道信息
    Filesystems 文件系统信息
    Interrupts 主机中断信息
    Ioprots 主机I/O端口号信息
    Meninfo 主机内存信息
    Version Linux内存版本信息 
     
    Linux获取CPU的详细信息
    2010年07月26日 星期一 17:42
    如何获得CPU的详细信息: 
    linux命令:cat /proc/cpuinfo
    用命令判断几个物理CPU,几个核等:
    逻辑CPU个数:
    # cat /proc/cpuinfo | grep "processor" | wc -l
    物理CPU个数:
    # cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
    每个物理CPU中Core的个数:
    # cat /proc/cpuinfo | grep "cpu cores" | wc -l
    是否为超线程?
    如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
    每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
    # cat /proc/cpuinfo | grep “siblings”

    其他特征:
    目前intel新的多核心cpu都会在后面显示具体的型号数字,例如:
    model name : Intel(R) Xeon(R) CPU X3230 @ 2.66GHz
    说明是 Xeon 3230的cpu,而不显示型号的具体数字的,大部分都是奔腾的CPU
    很多主机商都骗人,用奔腾的cpu,却说是多核心的CPU。
    探针看到的数据:
    类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
    类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
    类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
    类型:Intel(R) Xeon(TM) CPU 2.80GHz 缓存:1024 KB
    没有具体的型号,缓存1M,一般都是奔腾系列的cpu,或者是intel假双核的cpu,具体要根据上面说的去判断。新的多核心cpu都能看到具体的型号。
    另外多核心的xeon的CPU,一般主频都不高,达到2.8和3.0的只有很少的几个高端CPU型号,一般主机商不会用这么好的。
     
     
     
    (1) 处理器使用率 
    (2) 内存使用率 
    (3) 流入流出数据包 
    (4) 整体网络负载 
    这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚,可以使用man proc来查看proc文件系统的联机手册。 
    (1) 处理器使用率 
    这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。它们均位于/proc/stat文件的第一行。CPU的利用率使用如下公式来计算。 
    CPU利用率 = 100 *(user + nice + system)/(user + nice + system + idle) 
    (2) 内存使用率 
    这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。 
    内存使用百分比 = 100 * (cmem / umem) 
    (3)网络利用率 
    为了得到网络利用率的相关数据,需要从/proc/net/dev文件中获得两个数据:从本机输出的数据包数,流入本机的数据包数。它们都位于这个文件的第四行。 
    性能收集程序开始记录下这两个数据的初始值,以后每次获得这个值后均减去这个初始值即为从集群启动开始从本节点通过的数据包。 
    利用上述数据计算出网络的平均负载,方法如下: 
    平均网络负载 = (输出的数据包+流入的数据包) / 2    

  • 文本合并

    2013-06-18 01:06:34

    各种命令可谓是unix/linux系统中优美的部分,它们能够帮助我们搞定各种繁杂的任务,使我们的工作变得更轻松、更舒适、更给力。

    命令之乐

     

    文件拼接

    假如我有这么一个文件,含有多行空行:

    191 GW_8 [wyz] :/home/wyz/tmp>vi tmp.txt

    1,2,3,4,5,6

     

     

     

     

    7,8,9,0,1,2

     

     

     

     

     

    q,w,e,r,t,y

     

     

     

     

     

     

    a,s,d,f,g,h

     

     

     

     

     

     

     

     

    这里仅是示例,具体应用场景,自己想吧。

     

    问题:如何压缩空白行?

    简而言之,即删除空行,你的方法呢?

     

    好吧,先从最土的开始。。。。。。

    方法一:通过vi编辑,通过stdin使用命令d逐行删除

    文件内容少还好,成百上千行,效率就不行了。

     

    方法二:借助第三方工具删除空行

    比如使用Ueditftp方式打开后,选择空行并逐个删除。

     

     

     

    192 GW_8 [wyz] :/home/wyz/perl/tmp>more tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    193 GW_8 [wyz] :/home/wyz/perl/tmp>

     

    压缩空白行

     

     

     

     

     

     

    各种命令可谓是unix/linux系统中优美的部分,它们能够帮助我们搞定各种繁杂的任务,使我们的工作变得更轻松、更舒适、更给力。

    这里仅开个头,能不能持续、能不能有效果,端看大家的意愿了。如果能持续,长久累积下来,就是一个非常完美的文档与参考手册,价值不菲。

     

    今天开个头(也可能是个结尾)。

     

    实战演练1

    文件拼接

     

    假如我有这么一个文件,含有多行空行:

    191 GW_8 [wyz] :/home/wyz/tmp>vi tmp.txt

    1,2,3,4,5,6

     

     

     

     

    7,8,9,0,1,2

     

     

     

     

     

    q,w,e,r,t,y

     

     

     

     

     

     

    a,s,d,f,g,h

     

     

     

     

     

     

     

     

    这里仅是示例,具体应用场景,自己想吧。

     

    问题:如何压缩空白行?

    简而言之,即删除空行,你的方法呢?

     

    都有哪些方法呢?

    方法1:不用忽略了more

    192 GW_8 [wyz] :/home/wyz/tmp>more tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    193 GW_8 [wyz] :/home/wyz/tmp>

     

    more命令具有压缩空行的功能,你是否注意到了?

     

     

     

    方法2、你使用最多的cat命令

    194 GW_8 [wyz] :/home/wyz/tmp>cat -s tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    195 GW_8 [wyz] :/home/wyz/tmp>

     

    等同于more,压缩了多余的空白行,仅保留一个空白行。

     

    方法3、使用tr移除空行

    201 GW_8 [wyz] :/home/wyz/tmp>cat tmp.txt  | tr -s '\n'

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    202 GW_8 [wyz] :/home/wyz/tmp>

     

    方法4、使用sed移除空行

    202 GW_8 [wyz] :/home/wyz/tmp>cat tmp.txt | sed '/^$/d'

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    203 GW_8 [wyz] :/home/wyz/tmp>

     

    方法5、使用xargs分割空行

    206 GW_8 [wyz] :/home/wyz/tmp>cat tmp.txt | xargs -n 1

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    207 GW_8 [wyz] :/home/wyz/tmp>

    Xargs中的” ”,即xargs使用空格作为默认定界符。

     

    方法6perl单行程序

    176 GW_8 [wyz] :/home/wyz/tmp>perl -pi -e 's/^\s+$//g' tmp.txt;cat tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    177 GW_8 [wyz] :/home/wyz/tmp>

    或者

    131 GW_8 [wyz] :/home/wyz/tmp>perl -pe 's/^\s+$//g' tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

     

    方法7uniq

    204 GW_8 [wyz] :/home/wyz/tmp>uniq -u tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    或者

    205 GW_8 [wyz] :/home/wyz/tmp>uniq  tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    206 GW_8 [wyz] :/home/wyz/tmp>

     

    方法8grep

    206 GW_8 [wyz] :/home/wyz/tmp>grep -v '^$' tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    207 GW_8 [wyz] :/home/wyz/tmp>

     

    228 GW_8 [wyz] :/home/wyz/tmp>cat tmp.txt | grep '^[0-9a-z]'

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

     

     

    方式9sort

    219 GW_8 [wyz] :/home/wyz/tmp>sort tmp.txt | grep -v '^$'

    1,2,3,4,5,6

    7,8,9,0,1,2

    a,s,d,f,g,h

    q,w,e,r,t,y

    221 GW_8 [wyz] :/home/wyz/tmp>sort -u tmp.txt

     

    1,2,3,4,5,6

    7,8,9,0,1,2

    a,s,d,f,g,h

    q,w,e,r,t,y

     

    方式10

    228 GW_8 [wyz] :/home/wyz/tmp>cat tmp.txt | grep '^[0-9a-z]'

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

     

     

    方式11

    229 GW_8 [wyz] :/home/wyz/tmp>grep '^[0-9a-z]' tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    230 GW_8 [wyz] :/home/wyz/tmp>

     

    方式12

    238 GW_8 [wyz] :/home/wyz/tmp>sed '/^$/'d tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

     

    方式13

    264 GW_8 [wyz] :/home/wyz/tmp>sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P' tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

     

     

    方式14

    266 GW_8 [wyz] :/home/wyz/tmp>sed '/./\!d' tmp.txt

    1,2,3,4,5,6

    7,8,9,0,1,2

    q,w,e,r,t,y

    a,s,d,f,g,h

    267 GW_8 [wyz] :/home/wyz/tmp>

     

    方式15

    267 GW_8 [wyz] :/home/wyz/tmp>sed '$\!N; /^\(.*\)\n\1$/\!P; D' tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    268 GW_8 [wyz] :/home/wyz/tmp>

     

    方式16

    269 GW_8 [wyz] :/home/wyz/tmp>sed '/./,/^$/\!d'  tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    方式17

    270 GW_8 [wyz] :/home/wyz/tmp> sed '/^$/N;/\n$/D' tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

     

     

     

    271 GW_8 [wyz] :/home/wyz/tmp>sed '/^$/N;/\n$/N;//D' tmp.txt

    1,2,3,4,5,6

     

     

    7,8,9,0,1,2

     

     

    q,w,e,r,t,y

     

     

    a,s,d,f,g,h

     

    方式18 uniq

    279 GW_8 [wyz] :/home/wyz/tmp>uniq tmp.txt

    1,2,3,4,5,6

     

    7,8,9,0,1,2

     

    q,w,e,r,t,y

     

    a,s,d,f,g,h

     

    280 GW_8 [wyz] :/home/wyz/tmp>

     

    方式19

    281 GW_8 [wyz] :/home/wyz/tmp>sort tmp.txt | grep -v '^$'

    1,2,3,4,5,6

    7,8,9,0,1,2

    a,s,d,f,g,h

    q,w,e,r,t,y

    282 GW_8 [wyz] :/home/wyz/tmp>

     

     

    还有其他的方法,是否想到了呢,想到了就接着补充吧。

  • linux几个命令

    2013-03-04 20:05:09

    ==========================================================================
    查看http的并发请求数及其TCP连接状态

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'
    TIME_WAIT 44
    SYN_SENT 5
    ESTABLISHED 226


    ==========================================================================
    获取IP地址

    ifconfig eth0  | sed -n '2'p | awk '{print $2}' | cut -c 6-22
    ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-30  
    ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | cut -d: -f2 | awk '{print $1}'
    ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'


    netstat
    或者grep,然后sed s替换

    ==========================================================================
    杀掉某用户下所有进程
    ps -ef | grep oracle | awk  '{print $2}' | xargs kill -9

    lsof -i:1521 | grep -v "PID" | awk '{print "kill -9",$2}'| sh

    ==========================================================================
    原端口1521建立连接的对应机器的IP与端口,并统计数量
    netstat -an -t | grep ":1521" | grep ESTABLISHED | awk '{printf "%s    %s\n",$5,$6}' | sort | uniq -c



    ==========================================================================
    查找某目录下txt文件,计算其文件大小总和
    find . -name "*.txt" -exec wc -c {} \; | awk '{print $1}' | awk '{a+=$1}END{print a}'


    ==========================================================================
    杀死僵尸进程
    ps -eal | awk '{if ($2=="Z") print $2}' | xargs kill -9


    ==========================================================================
    怎样知道进程在那个CPU上?
    ps -eo pid,args,psr

    ==========================================================================
    查找目录下文件大于100M
    find . -size +100M -type f


    查询目录下文件,显示单位为Mb
    find . -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n",size,$2);}' | head


    统计目录下文件大小
    du $1 | sort -rn | sort -n | awk '{printf "%7.2fM --> %s\n",$1/1024,$2}' | sed 's:/.*/([^/]{1,})$:1:g'

    ==========================================================================
    替换
    sed -i 's/sysread/read/gi' d.txt
    perl -p -i -e 's/sysread/read/gi' d.txt


    ==========================================================================
    统计一个目录中的目录个数
    ls -l | awk '/^d/' | wc -l

    统计一个目录中的文件个数
    ls -l | awk '/^-/' | wc -l


    统计一个目录中的全部文件数
    find ./ -type f -print | wc -l

    统计一个目录中的全部子目录数
    find ./ -type d -print | wc -l


    ==========================================================================

    去掉第一列(如行号代码)
    awk '{for(i=2;i<=NF;i++) if(i!=NF) {printf $i " "}else{print $i} }' a.txt



    ==========================================================================
    删除大小为0的文件
    rm -i `find . -size 0`
    find . -size 0 | xargs rm {} \;
    find . -size 0 | xargs rm -rf &


    ==========================================================================
    tar 分卷压缩与合并
    zip 有4G压缩限制,如果解决这个限制?分卷压缩

    以100M为例
    tar分卷压缩: tar -cvzpf - portal600 | split -d -b 100m
    tar多卷合并: cat x* > portal600.tar.gz


981/512345>
Open Toolbar