·¢²¼ÐÂÈÕÖ¾

  • postfix-postmapÃüÁî

    2017-08-22 11:04:37

    1¡¢Öؽ¨hash±í£º
    postmap hash:/etc/mail/access
        ==>×Ô¶¯½¨Á¢ /etc/mail/access.db

    ×¢£ºsendmailµÄrpm°üÖУ¬Ò²ÓÐÒ»¸ömakemapÃüÁҲ֧³ÖÖØÐÂÉú³Éhash±í£º
    makemap
      hash /etc/mail/access.db < /etc/mail/access

    2¡¢²éѯij¸ö±í£º
    postmap -q milter-limit-to-Sum:a@a.com /etc/mail/access
        =>-q²ÎÊýºóÃæ¸úµÄÊÇkey£¬×Ô¶¯²é/etc/mail/access.dbÎļþÖÐkey=milter-limit-to-Sum:a@a.comµÄ¼Ç¼

    ¾ÙÀý£º
    # postmap -q milter-limit-to-Sum:a@a.com /etc/mail/access
    1/1h


        man postmapÖÐ-q²ÎÊýµÄ˵Ã÷£º   
           -q key Search  the  specified  maps  for  key and write the first value found to the standard output stream. The exit status is zero when the requested
                  information was found.

                  If a key value of - is specified, the program reads key values from the standard input stream and writes one line of key value output  for  each
                  key that was found. The exit status is zero when at least one of the requested keys was found.   
                 

    3¡¢É¾³ýij¸ö¼ü£º
    postmap -d milter-limit-to-Sum:a@a.com /etc/mail/access
        =>-d²ÎÊýºóÃæ¸úµÄÊÇkey£¬É¾³ý/etc/mail/access.dbÎļþÖÐkey=milter-limit-to-Sum:a@a.comµÄ¼Ç¼

    ¾ÙÀý£º
    # postmap -q milter-limit-to-Sum:a@a.com /etc/mail/access
    1/1h
    # postmap -d milter-limit-to-Sum:a@a.com /etc/mail/access
    # postmap -q milter-limit-to-Sum:a@a.com /etc/mail/access
    #


        man postmapÖÐ-d²ÎÊýµÄ˵Ã÷£º   
           -d key Search the specified maps for key and remove one entry per map.  The exit status is zero when the requested information was found.

                  If a key value of - is specified, the program reads key values from the standard input stream. The exit status is zero when at least one of  the
                  requested keys was found.
                 
    4¡¢Ôö¼ÓÒ»¸ö¼üÖµ£º
    echo "milter-limit-to-Sum:a@a.com    1/1h" | postmap -i /etc/mail/access
        =>Ôö¼Ó"milter-limit-to-Sum:a@a.com    1/1h"¼üÖµÖÁ/etc/mail/access.db

    ¾ÙÀý£º
    # echo "milter-limit-to-Sum:a@a.com 1/1h" | postmap -i /etc/mail/access
    # postmap -q milter-limit-to-Sum:a@a.com /etc/mail/access
    1/1h


        man postmapÖÐ-i²ÎÊýµÄ˵Ã÷£º   
           -i     Incremental mode. Read entries from standard input and do not truncate an existing database. By default, postmap(1) creates a new database  from
                  the entries in file_name.
  • linux-mailÀûÓÃÍⲿÓÊÏäµØÖ··¢Óʼþ

    2016-09-01 16:12:23

    bin/mail»áĬÈÏʹÓñ¾µØsendmail·¢ËÍÓʼþ£¬ÕâÑùÒªÇ󱾵صĻúÆ÷±ØÐë°²×°ºÍÆô¶¯Sendmail·þÎñ£¬ÅäÖñȽÏÂé·³£¬¶øÇÒ»á´øÀ´²»±ØÒªµÄ×ÊÔ´Õ¼Óá£
    ¶øͨ¹ýÐÞ¸ÄÅäÖÃÎļþ¿ÉÒÔʹÓÃÍⲿSMTP·þÎñÆ÷£¬¿ÉÒÔ´ïµ½²»Ê¹ÓÃsendmail¶øÓÃÍⲿµÄsmtp·þÎñÆ÷·¢ËÍÓʼþµÄÄ¿µÄ£º

    ÐÞ¸Ä/etc/mail.rc
    Ôö¼ÓÏÂÃæµÄÅäÖã¨Çë¸ù¾Ýʵ¼ÊÌæ»»ÄÚÈÝ£©£º
    set from=fromUser@domain.com smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=password smtp-auth=login

    ˵Ã÷£º
    fromÊÇ·¢Ë͵ÄÓʼþµØÖ·
    smtpÊÇ·¢ÉúµÄÍⲿsmtp·þÎñÆ÷µÄµØÖ·
    smtp-auth-userÊÇÍⲿsmtp·þÎñÆ÷ÈÏÖ¤µÄÓû§Ãû
    smtp-auth-passwordÊÇÍⲿsmtp·þÎñÆ÷ÈÏÖ¤µÄÓû§ÃÜÂë
    smtp-authÊÇÓʼþÈÏÖ¤µÄ·½Ê½

    ÅäÖóɹ¦ºó£¬¾Í¿ÉÒÔʹÓÃÁË
    ¿ÉÒÔ·¢ËÍÒ»·âÓʼþ²âÊÔһϣº
    mail -s "test" user@test.com <content.txt ÆäÖÐ-sºóÃæµÄÊÇÓʼþ±êÌ⣬user@sohu.comÊÇÊÕ¼þÈ˵ØÖ·£¬content.txtÀïÃæÊÇÓʼþÕýÎÄ

  • php-Ò»¸öÒ³ÃæÏìӦδÍê³Éʱ£¬ÁíÒ»Ò³ÃæÎÞ·¨¼ÌÐø²Ù×÷£¨sessionËÀËø£©

    2016-08-18 12:27:31

    php×öÁËÒ»¸öÔ¶³Ì²éѯµÄ¹¦ÄÜ£¬ºǫ́´¦Àíʱ¼ä±È½Ï¾Ã£¬Êý¾ÝÁ¿´óʱ£¬ÓпÉÄܵ½¼¸Ê®·ÖÖÓ£»

    µ±PHP ´¦Àí´óÊý¾ÝÁ¿²Ù×÷ʱ£¬²»Äܼ°Ê±²Ù×÷Íê³É£¬ÕâʱºòÓÖÓзÃÎÊÆäËû¿ØÖÆÆ÷
    »òÕß
    Òì²½ÇëÇóʱºò»áÔì³Ésession ËÀËøÏÖÏó
    Õâʱ£¬±ØÐëÔÚAÒ³Ãæ´¦ÀíÍê³Éºó£¬BÒ³Ãæ²Å¿ÉÒÔ¼ÌÐø´¦Àí£»


    ´¦Àí·½°¸£º
    ÔÚAÒ³ÃæÉÏÔö¼Ó£ºsession_write_close();
    ÕâÑù¾Í¿ÉÒÔ²»¸ÉÈÅBÒ³Ãæ¼ÌÐø´¦ÀíÁË¡£
  • linux·þÎñÆ÷ʹÓÃtsocksÉèÖôúÀí

    2016-08-17 10:38:17


    Ò»¡¢tosocks½éÉÜ£º
    ¹ÙÍø£º
    http://tsocks.sourceforge.net

    tsocks¸ÅÊö£º
    SOCKS servers are a form. of proxy that are commonly used in firewalled LAN environments to allow access between networks, and often to the Internet. The problem is that most applications don't know how to gain access through SOCKS servers. This means that network based applications that don't understand SOCKS are very limited in networks they can reach. An example of this is simple 'telnet'. If you're on a network firewalled from the internet with a SOCKS server for outside access, telnet can't use this server and thus can't telnet out to the Internet.
    tsocks' role is to allow these non SOCKS aware applications (e.g telnet, ssh, ftp etc) to use SOCKS without any modification. It does this by intercepting the calls that applications make to establish network connections and negotating them through a SOCKS server as necessary.

    linuxÉÏ£¬Èç¹ûÖ»ÊÇ×öhttp»òftpµÄ´úÀí£¬¿ÉÒÔ¼òµ¥µÄÉèÖû·¾³±äÁ¿£ºhttp_proxy¡¢https_proxy¡¢ftp_proxy£»
    ÕâÀïʹÓÃtsocks£¬ÊÇΪÁ˽â¾össhͨ¹ý´úÀíÁ¬½ÓÔ¶³Ì·þÎñÆ÷

    ¶þ¡¢ÏÂÔØ°²×°
    ´Ó¹ÙÍøÏÂÔØ×îа汾£¬±¾ÎÄʹÓõÄÊÇ£ºtsocks-1.8beta5.tar.gz

    tar xzvf tsocks-1.8beta5.tar.gz
    cd tsocks-1.8
    ./configure
    make && make install

    È·ÈÏÊÇ·ñ´æÔÚ£º/usr/lib/libtsocks.soÎļþ£¬Èç¹ûûÓУ¬cp -af libtsocks.so.1.8 /usr/lib/libtsocks.so
    ×¢£ºtsocks-1.8°üÀïµÄlibtsocks.so£¬Ö»ÊÇlibtsocks.so.1.8µÄÈíÁ´½Ó£¬¸´ÖÆʵ¼ÊÎļþ¹ýÈ¥ÒÔÃⰲװĿ¼ɾ³ý£¬µ¼Ö²»¿ÉÓá£

    Èý¡¢ÅäÖÃtsocks
    tar.gz°üÖÐÓÐÁ½¸öÅäÖÃÎļþÄ£°å£º
    tsocks.conf.simple.example
    tsocks.conf.complex.example
    ¸´ÖÆÒ»¸öµ½/etc/tsocks.conf

    ÑùÀý£º
    # cat /etc/tsocks.conf             
    # This is the configuration for libtsocks (transparent socks)
    # Lines beginning with # and blank lines are ignored
    #
    # The basic idea is to specify:
    #       - Local subnets - Networks that can be accessed directly without
    #                         assistance from a socks server
    #       - Paths - Paths are basically lists of networks and a socks server
    #                 which can be used to reach these networks
    #       - Default server - A socks server which should be used to access
    #                          networks for which no path is available
    # Much more documentation than provided in these comments can be found in
    # the man pages, tsocks(8) and tsocks.conf(8)

    # Local networks
    # For this example this machine can directly access 192.168.0.0/255.255.255.0
    # (192.168.0.*) and 10.0.0.0/255.0.0.0 (10.*)

    local = 192.168.0.0/255.255.0.0
    local = 10.0.0.0/255.0.0.0
    local = 211.211.211.0/255.255.255.224

    # Default server
    # For connections that aren't to the local subnets or to 150.0.0.0/255.255.0.0
    # the server at 192.168.0.1 should be used (again, hostnames could be used
    # too, see note above)

    server = 211.211.211.211 #´úÀí·þÎñÆ÷IP
    # Server type defaults to 4 so we need to specify it as 5 for this one
    server_type = 5 #´úÀí·þÎñÆ÷ʹÓÃsocks5°æ±¾
    # The port defaults to 1080 but I've stated it here for clarity
    server_port = 1080 #´úÀí·þÎñÆ÷¶Ë¿Ú

    default_user = ´úÀíÕʺÅÓû§Ãû
    default_pass = ´úÀíÕʺÅÃÜÂë



    ÕâÀïÅäÖÃËùÓеĶ¼Ê¹ÓÃĬÈϵĴúÀí·þÎñÆ÷
    Ò²¿ÉÒÔʹÓÃpathÀ´Ö¸¶¨²¿·Ö×ßÆäËû´úÀí·þÎñÆ÷£¬¾ßÌå²Î¼û£ºtsocks.conf.complex.exampleÄ£°åÖеÄÅäÖü°ËµÃ÷£»
    Ä£°åÖУºlocal = 192.168.0.0/255.255.255.0 ×ÓÍøÑÚÂëÅäÖôíÎó£¬Ó¦ÐÞ¸ÄΪ255.255.0.0

    ËÄ¡¢Ê¹ÓÃtsocks
    Ô´Âë°²×°µÄtsocks£¬Ä¬ÈÏ·¾¶Îª£º/usr/bin/tsocks
    tsocks [application [applications arguments]]
    tsocks [on|off]

    ¾Ù¸öʵÀý°É£º
    tsocks firefox  #Ö®ºóÔÚfirefoxÉÏä¯ÀÀÍøÒ³¾Í»áĬÈÏʹÓÃtsocksÅäÖõĴúÀí


    source tsocks on #ÉèÖõ±Ç°shellµÄtsocks
    tsocks show    #²é¿´µ±Ç°ShellµÄtsocksÉèÖã¬LD_PRELOAD="/usr/lib/libtsocks.so"£»Èç¹ûLD_PRELOADΪ¿Õ£¬±íʾûÉèÖóɹ¦£»
    do_something   #ÕâÀï¾ÍÄÜĬÈÏʹÓÃtsocksµÄ´úÀíÈ¥do somethingÁË£¬Ç°ÃæÒѾ­ÉèÖÃÁË
    source tsocks off #¹Ø±Õµ±Ç°shellµÄtsocks´úÀíÉèÖÃ
    tsocks show    #Ôٴβ鿴£¬LD_PRELOAD="".

    ²é¿´/usr/bin/tsocksÎļþ£¬ÄÜ·¢ÏÖtsocks on Ö»ÊÇÉèÖÃLD_PRELOAD»·¾³±äÁ¿£¬tsocks offÖ»ÊÇÈ¥³ýLD_PRELOAD»·¾³±äÁ¿µÄÉèÖã»
    ËùÒÔÈç¹ûÏëÈÃËùÓÐÓû§¶¼¿ÉÒÔʹÓÃtsocksÅäÖã¬Ö±½ÓÔÚ/etc/profileÖÐÉèÖãºexport LD_PRELOAD="/usr/lib/libtsocks.so"
    ÔÙsource /etc/profile£¬ÈÃËùÓÐÓû§¶¼ÉúЧ£»


    Îå¡¢Óöµ½µÄÎÊÌâ¼°½â¾ö·½°¸
    10:26:43 libtsocks(31015): Need a password in tsocks.conf or $TSOCKS_PASSWORD to authenticate withssh: connect to host 151.151.151.151 port 22: Connection refused
    ʹÓõĴúÀí·þÎñÆ÷£¬ÐèÒªÕʺÅÃÜÂë½øÐÐÉí·ÝУÑ飬Ôö¼Ódefault_user¼°default_passÅäÖýâ¾ö£»

    10:30:45 libtsocks(31032): SOCKS server 211.211.211.211 (211.211.211.211) is not on a local subnet!
    ÉèÖõĴúÀíûÓÐÓë/etc/tsocks.confÎļþÖеÄlocalÉèÖõÄÍøÂçÔÚͬһ¸ö×ÓÍøÖС£ÅäÖãºlocal = 211.211.211.0/255.255.255.224½â¾ö£»

    ERROR: ld.so: object '/usr/lib/libtsocks.so' from LD_PRELOAD cannot be preloaded: ignored.
    .so¿âÎļþ²»´æÔÚ£¬´Ó°²×°°üÖи´ÖƹýÈ¥£ºcp -af libtsocks.so.1.8 /usr/lib/libtsocks.so



  • PhpÁ½ÖÖµ÷ÓÃsshµÄ·½·¨

    2016-08-16 09:18:38

     
    1.ÓÃkey·½Ê½
    public function ssh_cmd($cmd)
    {
        $content = '';
        $host = "192.168.146.180";
       
        $connection = ssh2_connect($host,22,array('hostkey'=>'ssh-rsa'));
        if (!$connection)
            die('Connection failed');
        else
        {
            if(ssh2_auth_pubkey_file($connection, 'root','/root/.ssh/id_rsa.pub','/root/.ssh/id_rsa'))
            {
                $stream = ssh2_exec($connection, $cmd);
                $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

                stream_set_blocking($stream, true);
                stream_set_blocking($errorStream, true);

                if ($stream === FALSE) 
                        die('Command exec failed!');
                else
                        $content = stream_get_contents($stream).stream_get_contents( $errorStream );

                fclose($stream);
                fclose( $errorStream );
            }
            else
            {
                die('Public Key Authentication Failed');
            }
        }
        return $content;
    }

    ʹÓÃkey·½Ê½Ê±£¬ÐèÒªÔÚphpÖ´ÐзþÎñÆ÷ÉÏ£¬rootÓû§Ö´ÐÐssh-keygenÃüÁÉú³É½¨Á¢°²È«ÐÅÈιØϵµÄÖ¤Êé¡£
    [root@Client root]# ssh-keygen -b 1024 -t rsa
    °ÑÉú³ÉµÄ /root/.ssh/id_rsa.pub ÖеÄÄÚÈÝ£¬×·¼Óµ½ sshÁ¬½ÓµÄ·þÎñÆ÷ /root/.ssh/authorized_keys Îļþºó£»
    phpÖ´ÐзþÎñÆ÷ÉÏ£¬sshÁ¬½Ó²âÊÔ£ºssh -o GSSAPIAuthentication=no 192.168.146.180
    Á¬½Ó³É¹¦£¬±íʾ°²È«ÐÅÈιØϵÅäÖÃÍê³É£»

    Ö´ÐÐphp¹ý³ÌÖУ¬Èç¹ûÌáʾ£º
    Warning: ssh2_auth_pubkey_file(): Authentication failed for root using public key: Unable to open public key file
    ±íʾphpÖ´ÐÐÓû§ÎÞȨÏÞ·ÃÎÊ/root/.ssh/id_rsa.pub&id_rsa
    ½â¾ö·½·¨¿É²ÎÕÕ£ºhttp://www.php.net/manual/en/function.ssh2-auth-pubkey-file.php

    ÁíÍâ´´½¨Ò»¸öĿ¼À´´æ·ÅÖ¤ÊéÐÅÏ¢£¬È磺
    mkdir /home/.ssh
    cp -af /root/.ssh/id_rsa /home/.ssh/      
    cp -af /root/.ssh/id_rsa.pub /home/.ssh/
    chmod 777 /home/.ssh -R
    ÐÞ¸Ässh2_auth_pubkey_fileÖз¾¶Î»Öã¬ÔÙÖØÊÔ£»

          
    2.ÓÃÃÜÂ뷽ʽ

    public function ssh_cmd($cmd)
    {
        $content = '';
        $host = "192.168.146.180";
        $hostuser = "root";
        $sshpasswd = "123456";
        $connection = ssh2_connect($host,22);

        if (!$connection)
                die('Connection failed');
        else
        {
            if(ssh2_auth_password($connection, $hostuser, $sshpasswd))
            {
                $stream = ssh2_exec($connection, $cmd);
                $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

                stream_set_blocking($stream, true);
                stream_set_blocking($errorStream, true);

                if ($stream === FALSE) 
                        die('Command exec failed!');
                else
                        $content = stream_get_contents($stream).stream_get_contents( $errorStream );

                fclose($stream);
                fclose( $errorStream );
            }
            else
            {
                die('Public Key Authentication Failed');
            }
        }
        return $content;
    }
        
  • tctmgrÖ§³ÖµÄÃüÁîºÍ²ÎÊý-zt

    2016-07-11 17:45:35

    ת×Ô£ºhttp://blog.csdn.net/leonzhang2008/article/details/5407051

    tctmgrÖ§³ÖµÄÃüÁîºÍ²ÎÊý

        tctmgr create [-tl] [-td|-tb|-tt|-tx] path [bnum [apow [fpow]]]   
        ´´½¨Êý¾Ý¿â  
        
        tctmgr inform. [-nl|-nb] path  
        Êä³öÊý¾Ý¿âµÄͳ¼ÆÐÅÏ¢
       
        tctmgr put [-nl|-nb] [-sx] [-dk|-dc|-dai|-dad] path pkey [cols ...]  
        ´´½¨¼Ç¼  
       
        tctmgr out [-nl|-nb] [-sx] path pkey  
        ɾ³ý¼Ç¼ 
       
        tctmgr get [-nl|-nb] [-sx] [-px] [-pz] path pkey  
        ͨ¹ýÖ÷¼ü²éѯ¼Ç¼ 
       
        tctmgr list [-nl|-nb] [-m num] [-pv] [-px] [-fm str] path  
        Êä³öËùÓмǼ
        -pv:ÏÔʾËùÓÐÏêÇ飻-m num£ºÏÔʾ¼Ç¼ÌõÊý
       
        tctmgr search [-nl|-nb] [-ord name type] [-m num] [-sk num] [-kw] [-pv] [-px] [-ph] [-bt num] [-rm] [-ms type] path [name op expr ...]  
        ͨ¹ý×Ô¶¨ÒåÌõ¼þ²éѯ¼Ç¼  
        Àý£ºtctmgr search test.tct date NUMBT 1383235200,1385827199 folder STREQ cur
       
        tctmgr optimize [-tl] [-td|-tb|-tt|-tx] [-tz] [-nl|-nb] [-df] path [bnum [apow [fpow]]]  
        ÓÅ»¯Êý¾Ý¿â 
       
        tctmgr setindex [-nl|-nb] [-it type] path name  
        ÉèÖÃË÷Òý  
       
        tctmgr importtsv [-nl|-nb] [-sc] path [file]  
        Store records of TSV in each line of a file.  
        #µ¼ÈëTSV
        #tsvÎļþÊÇÒÔtab·Ö¸ôµÄÎļþ£¬Àý£º key1/tvalue1/n
        Àý£ºtchmgr importtsv test.tct tsv.txt   
       
        tctmgr version  
        Print the version information of Tokyo Cabinet. 

       
    ¸½²éѯÌõ¼þ±í´ïʽ£¨Ç°Ãæ¼Ó~£¬Ï൱ÓÚ±ê×¼sqlÖеķǣ©

        STREQ £ºÍêÈ«°üº¬×Ö·û´®£¬Ï൱ÓÚ±ê×¼sqlÖеÄwhere ×Ö¶Î=¡®×Ö·û´®¡¯
        STRINC £º°üº¬´Ë×Ö·û´®£¬Ï൱ÓÚ±ê×¼sqlÖÐlike ¡®*×Ö·û´®*¡¯
        STRBW £ºÒÔ´Ë×Ö·û´®¿ªÍ·µÄÄÚÈÝ£¬Ï൱ÓÚ±ê×¼sqlÖÐlike ¡®×Ö·û´®*¡¯
        STREW £ºÒÔ´Ë×Ö·û´®½áβµÄÄÚÈÝ£¬Ï൱ÓÚ±ê×¼sqlÖÐlike ¡®*×Ö·û´®¡¯
        STRAND £º°üº¬ÔÚijÇø¼äÄÚµÄÄÚÈÝ£¬Èç±ê×¼sqlÖÐlike ¡®a-z¡¯£¬ÄÇôËûÖ»ÄÜÊÇaµ½zµÄ×Öĸ
        STROR £º²»°üº¬ÔÚijÇø¼äÄÚµÄÄÚÈÝ£¬Èç±ê×¼sqlÖÐlike ¡®!a-z¡¯£¬ÄÇôËûÖ»ÄÜÊÇÊý×Ö»òÆäËûµÄ·ûºÅ
        STRRX £º×éºÏʽ½á¹¹£¬Èç±ê×¼sqlÖÐlike ¡°a¡°!b-m¡±#¡±
        NUMEQ £ºÊýÖµ´óСһÑù Ï൱ÓÚ±ê×¼sqlÖÐ where a=¡®1¡¯
        NUMGT £ºÊýÖµ´óÓÚijһֵ Ï൱ÓÚ±ê×¼sqlÖÐ where a>¡®1¡¯
        NUMGE £ºÊýÖµ´óÓÚµÈÓÚijһֵ Ï൱ÓÚ±ê×¼sqlÖÐ where a>=¡®1¡¯
        NUMLT £ºÊýֵСÓÚijһֵ Ï൱ÓÚ±ê×¼sqlÖÐ where a<¡®1¡¯
        NUMLE £ºÊýֵСÓÚijһֵ Ï൱ÓÚ±ê×¼sqlÖÐ where a<=¡®1¡¯
        NUMBT £ºÊýÖµ´¦ÓÚijһÊýÖµÇø¼ä£¬Ï൱ÓÚ±ê×¼sqlÖÐ where a> 1 and a < 10
        NUMOREQ £ºÊýÖµ²»´¦ÓÚijһÊýÖµµÄÇø¼ä£¬Èç¹ûÊÇa´óÓÚ1£¬Ð¡ÓÚ10µÄ»°£¬ÄÇÕâ¸ö±í´ïʽÓұߵÄÄÚÈÝÓ¦¸ÃÏ൱ÓÚ±ê×¼sqlÖÐ where a< 1 or a > 10
        
  • linux-awk & sedÖ®ÆæÊýÐÐÓëżÊýÐеĴòÓ¡-zt

    2016-06-16 14:48:33

    ת×Ô£ºhttp://blog.chinaunix.net/uid-10540984-id-316081.html

    ¶ÔÓÚÕâ¸öÎÊÌâ»òÐí´ó¼Ò¾õµÃ²»ÄÑ£¬È·ÊµÒ²²»ÊÇʲô̫ÄѵÄÎÊÌ⣬Ê×ÏÈÏëµ½µÄÊǶÔ2µÄÈ¡Ó࣬³ÏÈ»£¬ÔÚ±à³Ì˼ÏëÀïÕâÊÇÒ»¸ö¸ÅÄî¡£ÏÂÃæÎÒÃÇ¿´¿´¼¸¸öÀý×Ó¡£
     
    1. $ cat file
    2. 1
    3. 2
    4. 3
    5. 4
    6. 5
    7. 6
    8. $ awk 'NR%2' file
    9. 1
    10. 3
    11. 5
    12. $ awk '!(NR%2)' file
    13. 2
    14. 4
    15. 6

    [½âÎö]

      ÕâÓ¦¸ÃÊÇ×î±ê×¼µÄ´ð°¸£¬NRÊÇÐкţ¬awkµÄÄÚ½¨º¯Êý£¬µ±µÚÒ»ÐУ¬NR==1ʱ£¬¶Ô2È¡Ó࣬½á¹ûÊÇ1£¬ÔÚawkµÄÖ´ÐÐģʽÀÕâ¸ö1¾ÍÊÇpattern£¬ ΪÕ棬ִÐÐĬÈϵÄ{print}£¬Õâ¸öaction²Ù×÷¡£ÄÇô´òÓ¡³ö¸ÃÐУ¬µ½µÚ2ÐÐÔòÓàÊýÊÇ0£¬patternΪ0£¬ÔòΪ¼Ù£¬²»»áÖ´ÐÐĬÈ쵀 {print}£¬Ôò²»»áÊä³öżÊýÐС£¾Í´ïµ½ÁËÖ»Êä³öÆæÊýÐеÄЧ¹û£¬·´Ö®ÔòÊä³öżÊýÐÐÁË¡£ÎÒÃÇÔÙ¿´¿´Ò»¸ö¸üÐÂÓ±µÄ°ì·¨¡£

    1. $ awk '++i%2' file
    2. 1
    3. 3
    4. 5
    5. $ awk 'i++%2' file
    6. 2
    7. 4
    8. 6

    [½âÎö]

      ÕâÐÐÃüÁî³ä·ÖµÄÀûÓÃÁËCÓïÑÔÖÐ ++i Óë i++ µÄÇø±ð£¬i++ ÖÐiµÄÖµ×Ô¼ÓÒ»´ÎºóÕâ¸ö±í´ïʽµÄ½á¹ûµÈÓÚ1£¬µ«´ËʱiµÄÖµÈÔȻΪ0£¬ÎªÊ²Ã´ÄØ£¿iµÄÖµÔÚµ±Ç°±í´ïʽÖв»»á¸Ä±ä£¬++iÖÐiµÄÖµ×Ô¼ÓÒ»´Îºó£¬iµÄÖµÊÇ1£¬Ìý ÆðÀ´ºÜì¶Ü£¿È·Êµ±È½ÏÈÄ¿Ú£¬ÎÒÃÇÔÙµ÷ÓÃÒ»¸öC³ÌÐòÀ´ËµÃ÷Àý×Ó£º

    1. # include <stdio.h>
    2. int main(void)
    3. {
    4.     int i, j, a, b;
    5.     i = j = 0;
    6.     a = i++;
    7.     b = ++j;
    8.     printf ("a = %d , i = %d , b = %d , j = %d\n",a,i,b,j);
    9.     return 0;
    10. }
    11. /*
    12. ÔËÐнá¹û:
    13. a = 0 , i = 1 , b = 1 , j = 1
    14. */

    [½âÎö]

      ÔÚÕâ¸öCÓïÑÔ³ÌÐòÖв»ÄÑ¿´³ö£¬aµÄÖµÊÇ0£¬iµÄֵȴÊÇ1£¬i++ ÊÇ°Ñ×Ô¼ÓÇ°µÄÖµ¸³Óè**¬Ôò ++i ²»Ò»Ñù¡£Õâ¾Í¿ÉÒÔ½âÊÍΪʲô i++ Êä³öµÄÊÇżÊýÐÐÁË£¬µÚÒ»ÐÐʱ£¬ÒòΪ¶Ô2È¡ÓàµÄʱºò i++ ×Ô¼ÓÒ»´ÎºóµÄÖµÊÇ1£¬µ« i++ ÊÇ°ÑiµÄ×Ô¼ÓÇ°µÄֵȥ¶Ô2È¡ÓàµÄ£¬0¶Ô2È¡Óà½á¹ûΪ0£¬Ìõ¼þΪ¼Ù£¬µ½µÚ¶þÐеÄʱºòiµÄÖµ²ÅÊÇÉÏ´Î×Ô¼ÓºóµÄֵΪ1£¬¶Ô2È¡ÓàÊýΪ1£¬patternΪÕ棬Ôò Êä³öµÚ2ÐУ¬ÒÔ´ËÀàÍÆ¡£++i ÔòÊÇ×Ô¼ÓºóiµÄÖµÊÇ1£¬ËùÒÔÊä³öµÄÆæÊýÐС£++i ºÍ i++ ËûÃÇ×ԼӵĽá¹û¶¼ÊÇiΪ1£¬µ«ÊÇÔÚ¸³ÖµºÍ±È½ÏµÄʱºò£¬È´ÊÇÓÐÇø±ðµÄ¡£¿´µ½ÕâÀïÎÒÏë´ÏÃ÷µÄÄúÒѾ­Ã÷°×ÁËËüÃǵÄÇø±ð¡£ÎÒÃÇÔÙ¿´¿´µÚÈýÖз½·¨¡£

     

    1. $ awk 'i=!i' file
    2. 1
    3. 3
    4. 5
    5. $ awk '!(i=!i)' file
    6. 2
    7. 4
    8. 6

    [½âÎö]

      Õâ¾ä»¹ÐèÒªÎÒ½âÊÍÂ𣿸óÏÂÏë±ØÒѾ­Ã÷°×ÆäÖеİÂÃîÁË°É¡£^_^

     

    1. $ awk 'and(FNR,1)' file
    2. 1
    3. 3
    4. 5
    5. $ awk '!and(FNR,1)' file
    6. 2
    7. 4
    8. 6

    [½âÎö]

      awkÀïÃæÓÐÈý¸öbuilt-in function£¬·Ö±ðÊÇ£ºand(a, b)°´Î»Ó룬or(a, b)°´Î»»ò£¬xor(a, b)°´Î»Òì»ò£¬µ±FNRΪ1µÄʱºò£¬¾ÍÊǵÚÒ»ÐУ¬1µÄ2½øÖÆΪ0001£¬Óë0001°´Î»Ó룬µÃµ½½á¹ûÊÇ0001£¬0001µÄ½á¹ûΪÕ棬¾Í´òÓ¡¸ÄÐУ¬µ± FNRΪ2ʱ¶þ½øÖƱíʾΪ0010£¬ÄÇôÓÖÓë0001ÏàÓ룬½á¹ûΪ0000£¬Ìõ¼þΪ¼Ù£¬Ôò²»´òÓ¡¡£Ö»Óе±FNRΪÆæÊýʱ£¬¶þ½øÖƵÄβÊýΪ1£¬Óë0001Ïà Óë½á¹û²ÅΪÕ棬·ñÔò½á¹û¶¼Îª¼Ù¡£¼´Ö»Êä³öÆæÊýÐУ¬·ÇÔòÊä³öżÊýÐС£

     

    1. $ sed -n 'p;n' file
    2. 1
    3. 3
    4. 5
    5. $ sed -n 'n;p' file
    6. 2
    7. 4
    8. 6

    [½âÎö]

      sedÒ²²»ÄѽâÊÍ£¬ºÃºÃ¿´¿´ÊÖ²á°É¡£

     

    1. $ seq 6 | sed -n '1~2p'
    2. 1
    3. 3
    4. 5
    5. $ seq 6 | sed -n '0~2p'
    6. 2
    7. 4
    8. 6

    [½âÎö]

      FIRST~STEP
      This GNU extension matches every STEPth line starting with line FIRST.In particular, lines will be selected when there exists a non-negative N such that the current line-number equals FIRST + (N * STEP).  Thus, to select the odd-numbered lines, one would use`1~2'.



    1. seq 10 | sed '0~3a\=='

    2. seq 10 | awk 'ORS=NR%3?"\n":"\n==\n"

    [½âÎö]

    ÿ¸ôÈýÐоÍÔÚºóÃæÌí¼ÓÒ»¸ö·Ö¸î·û¡£

  • vim²é¿´Îļþ£¬¶àÁË<200b>×Ö·û£¬Ê¹ÓÃsed½øÐйýÂË

    2016-06-12 16:50:05

    vim²é¿´Îļþ£¬·¢ÏÖ¶àÁË<200b>×Ö·û£¬Ê¹ÓÃ/200bËÑË÷Æ¥Åä²»ÉÏ£»
    grep 200b ҲƥÅä²»ÉÏ

    ²éѯºó²ÅÖªµÀ£º
    200bÊÇ£ºUnicode Character 'ZERO WIDTH SPACE' (U+200B)
    ²Î¼û£º
    http://www.fileformat.info/info/unicode/char/200B/index.htm

    ´¦Àí·½·¨¼û£º
    http://superuser.com/questions/207207/how-can-i-delete-u200b-zero-width-space-using-sed

    sed 's/\xe2\x80\x8b//g' inputfile

    ÌØ×ö¸ö¼Ç¼£¡
  • mysql-ʹÓÃUDFs¶Ômemcache½øÐвÙ×÷

    2016-06-08 08:57:51

    UDFsÊÇUser Defined FunctionsµÄËõд£¬±íʾMySQLµÄÓû§¶¨Ò庯Êý£¬Ó¦ÓóÌÐò¿ÉÒÔÀûÓÃÕâЩº¯Êý´ÓMySQL 5.0ÒÔÉÏ°æ±¾µÄÊý¾Ý¿âÖзÃÎÊMemcachedдÈë»òÕß»ñÈ¡µÄÊý¾Ý¡£
    ´ËÍ⣬MySQL´Ó5.1°æ±¾¿ªÊ¼Ö§³Ö´¥·¢Æ÷£¬´Ó¶ø¿ÉÒÔÔÚ´¥·¢Æ÷ÖÐʹÓÃUDFsÖ±½Ó¸üÐÂMcmcachedµÄÄÚÈÝ£¬ÕâÖÖ·½Ê½½µµÍÁËÓ¦ÓóÌÐòÉè¼ÆºÍ±àдµÄ¸´ÔÓÐÔ¡£

    °²×°UDFsÐèÒªÔÚÊý¾Ý¿â·þÎñÆ÷ÉÏ°²×°Á½¸ö°ü£¬·Ö±ðÊÇlibmemcachedºÍmemcached_functions_mysql


    libmemcachedÏÂÔصØÖ·£ºhttps://launchpad.net/libmemcached/
    memcached_functions_mysqlÏÂÔصØÖ·£ºhttps://launchpad.net/memcached-udfs/+milestones


    °²×°³É¹¦ºó£¬µÇ¼mysql£¬¿ÉÒÔʹÓÃÃüÁî²é¿´UDFs£º
    PS£ºÊ¾ÀýΪ1.1°æ±¾µÄmemcached_functions_mysql½á¹û£»²»Í¬°æ±¾Ö§³ÖµÄº¯Êý²»Í¬¡£

    mysql> select * from mysql.func;         
    +------------------------------+-----+---------------------------------+----------+
    | name                         | ret | dl                              | type     |
    +------------------------------+-----+---------------------------------+----------+
    | memc_add                     |   2 | libmemcached_functions_mysql.so | function |
    | memc_add_by_key              |   2 | libmemcached_functions_mysql.so | function |
    | memc_servers_set             |   2 | libmemcached_functions_mysql.so | function |
    | memc_server_count            |   2 | libmemcached_functions_mysql.so | function |
    | memc_set                     |   2 | libmemcached_functions_mysql.so | function |
    | memc_set_by_key              |   2 | libmemcached_functions_mysql.so | function |
    | memc_cas                     |   2 | libmemcached_functions_mysql.so | function |
    | memc_cas_by_key              |   2 | libmemcached_functions_mysql.so | function |
    | memc_get                     |   0 | libmemcached_functions_mysql.so | function |
    | memc_get_by_key              |   0 | libmemcached_functions_mysql.so | function |
    | memc_get_cas                 |   2 | libmemcached_functions_mysql.so | function |
    | memc_get_cas_by_key          |   2 | libmemcached_functions_mysql.so | function |
    | memc_delete                  |   2 | libmemcached_functions_mysql.so | function |
    | memc_delete_by_key           |   2 | libmemcached_functions_mysql.so | function |
    | memc_append                  |   2 | libmemcached_functions_mysql.so | function |
    | memc_append_by_key           |   2 | libmemcached_functions_mysql.so | function |
    | memc_prepend                 |   2 | libmemcached_functions_mysql.so | function |
    | memc_prepend_by_key          |   2 | libmemcached_functions_mysql.so | function |
    | memc_increment               |   2 | libmemcached_functions_mysql.so | function |
    | memc_decrement               |   2 | libmemcached_functions_mysql.so | function |
    | memc_replace                 |   2 | libmemcached_functions_mysql.so | function |
    | memc_replace_by_key          |   2 | libmemcached_functions_mysql.so | function |
    | memc_servers_behavior_set    |   2 | libmemcached_functions_mysql.so | function |
    | memc_servers_behavior_get    |   0 | libmemcached_functions_mysql.so | function |
    | memc_behavior_set            |   2 | libmemcached_functions_mysql.so | function |
    | memc_behavior_get            |   0 | libmemcached_functions_mysql.so | function |
    | memc_list_behaviors          |   0 | libmemcached_functions_mysql.so | function |
    | memc_list_hash_types         |   0 | libmemcached_functions_mysql.so | function |
    | memc_list_distribution_types |   0 | libmemcached_functions_mysql.so | function |
    | memc_udf_version             |   0 | libmemcached_functions_mysql.so | function |
    | memc_libmemcached_version    |   0 | libmemcached_functions_mysql.so | function |
    | memc_stats                   |   0 | libmemcached_functions_mysql.so | function |
    | memc_stat_get_keys           |   0 | libmemcached_functions_mysql.so | function |
    | memc_stat_get_value          |   0 | libmemcached_functions_mysql.so | function |
    +------------------------------+-----+---------------------------------+----------+
    34 rows in set (0.00 sec)


    ×¢Ò⣺
    memcached_functions_mysqlÔÚV1.0ÒÔÇ°µÄ°æ±¾£¬º¯Êý·µ»ØÖµ£¬Ä¬ÈÏ0±íʾ³É¹¦£¬1±íʾʧ°Ü£»
    µ«ÔÚV1.0¿ªÊ¼£¬ÐÞ¸ÄÁË·µ»ØÖµ£¬0±íʾʧ°Ü£¬1±íʾ³É¹¦£»

    ¼û£º
    https://launchpad.net/memcached-udfs/+milestone/version-1.0
    Changelog
    1.0 Thursday, July 30, 2009 12:00:00 EST 2009
     * Fixed issue of setting NULLs with user-defined variables (Thanks to
     Jean-Jacques Moortgat @ aol dot com !)
     * Fixed issue of obtaining a NULL value FROM memcached
     * All set functions now return 0 (failure) or 1 (success)
     * Other cleanups
     * More tests
  • ʹÓÃsysbench²âÊÔmysqlÐÔÄÜ

    2016-05-26 15:52:57

    sysbenchÊÇÒ»¸öÄ£¿é»¯µÄ¡¢¿çƽ̨¡¢¶àÏ̻߳ù×¼²âÊÔ¹¤¾ß£¬Ö÷ÒªÓÃÓÚÆÀ¹À²âÊÔ¸÷ÖÖ²»Í¬ÏµÍ³²ÎÊýϵÄÊý¾Ý¿â¸ºÔØÇé¿ö¡£

    ËüÖ÷Òª°üÀ¨ÒÔϼ¸ÖÖ·½Ê½µÄ²âÊÔ£º

    1¡¢cpuÐÔÄÜ

    2¡¢´ÅÅÌioÐÔÄÜ

    3¡¢µ÷¶È³ÌÐòÐÔÄÜ

    4¡¢ÄÚ´æ·ÖÅä¼°´«ÊäËÙ¶È

    5¡¢POSIXÏß³ÌÐÔÄÜ

    6¡¢Êý¾Ý¿âÐÔÄÜ(OLTP»ù×¼²âÊÔ)


    sysbenchÏÂÔصØÖ·£ºhttp://downloads.mysql.com/source/sysbench-0.4.12.10.tar.gz

    °²×°¹ý³Ì£º

    tar xzvf sysbench-0.4.12.10.tar.gz 

    cd sysbench-0.4.12.10

    ./configure 

    make

    make install


    È·ÈÏÊÇ·ñ°²×°³É¹¦£º

    # sysbench --version

    sysbench 0.4.12.10


    sysbench²ÎÊý£º

    # sysbench

    Missing required command argument.

    Usage:

      sysbench [general-options]... --test=<test-name> [test-options]... command


    General options:

      --num-threads=N             number of threads to use [1]

      --max-requests=N            limit for total number of requests [10000]

      --max-time=N                limit for total execution time in seconds [0]

      --forced-shutdown=STRING    amount of time to wait after --max-time before forcing shutdown [off]

      --thread-stack-size=SIZE    size of stack per thread [32K]

      --init-rng=[on|off]         initialize random number generator [off]

      --seed-rng=N                seed for random number generator, ignored when 0 [0]

      --tx-rate=N                 target transaction rate (tps) [0]

      --tx-jitter=N               target transaction variation, in microseconds [0]

      --report-interval=N         periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]

      --report-checkpoints=[LIST,...]dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. []

      --test=STRING               test to run

      --debug=[on|off]            print more debugging info [off]

      --validate=[on|off]         perform. validation checks where possible [off]

      --help=[on|off]             print help and exit

      --version=[on|off]          print version and exit


    Log options:

      --verbosity=N      verbosity level {5 - debug, 0 - only critical messages} [4]


      --percentile=N      percentile rank of query response times to count [95]


    Compiled-in tests:

      fileio - File I/O test

      cpu - CPU performance test

      memory - Memory functions speed test

      threads - Threads subsystem performance test

      mutex - Mutex performance test

      oltp - OLTP test


    Commands: prepare run cleanup help version


    See 'sysbench --test=<name> help' for a list of options for each test.


    ÕâÀï½øÐÐoltp²âÊÔ£º

    PS£ºÁª»úÊÂÎñ´¦ÀíOLTP£¨on-line transaction processing£©Ö÷ÒªÊÇÖ´Ðлù±¾µÄ¡¢ÈÕ³£µÄÊÂÎñ´¦Àí£¬±ÈÈçÊý¾Ý¿â¼Ç¼µÄÔö¡¢É¾¡¢¸Ä¡¢²é¡£


    # sysbench --test=oltp help

    sysbench 0.4.12.10:  multi-threaded system evaluation benchmark


    oltp options:

      --oltp-test-mode=STRING                  test type to use {simple,complex,nontrx,sp} [complex]

      --oltp-reconnect-mode=STRING             reconnect mode {session,transaction,query,random} [session]

      --oltp-sp-name=STRING                    name of store procedure to call in SP test mode []

      --oltp-read-only=[on|off]                generate only 'read' queries (do not modify database) [off]

      --oltp-avoid-deadlocks=[on|off]          generate update keys in increasing order to avoid deadlocks [off]

      --oltp-skip-trx=[on|off]                 skip BEGIN/COMMIT statements [off]

      --oltp-range-size=N                      range size for range queries [100]

      --oltp-point-selects=N                   number of point selects [10]

      --oltp-use-in-statement=N                Use IN-statement with 10 PK lookups per query [0]

      --oltp-simple-ranges=N                   number of simple ranges [1]

      --oltp-sum-ranges=N                      number of sum ranges [1]

      --oltp-order-ranges=N                    number of ordered ranges [1]

      --oltp-distinct-ranges=N                 number of distinct ranges [1]

      --oltp-index-updates=N                   number of index update [1]

      --oltp-non-index-updates=N               number of non-index updates [1]

      --oltp-nontrx-mode=STRING                mode for non-transactional test {select, update_key, update_nokey, insert, delete} [select]

      --oltp-auto-inc=[on|off]                 whether AUTO_INCREMENT (or equivalent) should be used on id column [on]

      --oltp-connect-delay=N                   time in microseconds to sleep after connection to database [10000]

      --oltp-user-delay-min=N                  minimum time in microseconds to sleep after each request [0]

      --oltp-user-delay-max=N                  maximum time in microseconds to sleep after each request [0]

      --oltp-table-name=STRING                 name of test table [sbtest]

      --oltp-table-size=N                      number of records in test table [10000]

      --oltp-dist-type=STRING                  random numbers distribution {uniform,gaussian,special} [special]

      --oltp-dist-iter=N                       number of iterations used for numbers generation [12]

      --oltp-dist-pct=N                        percentage of values to be treated as 'special' (for special distribution) [1]

      --oltp-dist-res=N                        percentage of 'special' values to use (for special distribution) [75]

      --oltp-point-select-mysql-handler=[on|off]Use MySQL HANDLER for point select [off]

      --oltp-point-select-all-cols=[on|off]    select all columns for the point-select query [off]

      --oltp-secondary=[on|off]                Use a secondary index in place of the PRIMARY index [off]

      --oltp-num-partitions=N                  Number of partitions used for test table [0]

      --oltp-num-tables=N                      Number of test tables [1]


    General database options:


      --db-driver=STRING  specifies database driver to use ('help' to get list of available drivers)

      --db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto]


    Compiled-in database drivers:

      mysql - MySQL driver


    mysql options:

      --mysql-host=[LIST,...]       MySQL server host [localhost]

      --mysql-port=N                MySQL server port [3306]

      --mysql-socket=STRING         MySQL socket

      --mysql-user=STRING           MySQL user [sbtest]

      --mysql-password=STRING       MySQL password []

      --mysql-db=STRING             MySQL database name [sbtest]

      --mysql-table-engine=STRING   storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]

      --mysql-engine-trx=STRING     whether storage engine used is transactional or not {yes,no,auto} [auto]

      --mysql-ssl=[on|off]          use SSL connections, if available in the client library [off]

      --myisam-max-rows=N           max-rows parameter for MyISAM tables [1000000]

      --mysql-create-options=STRING additional options passed to CREATE TABLE []

      

    ³£ÓõIJÎÊýÁбí


    --mysql-host=test.mysql.rds.aliyuncs.com #Êý¾Ý¿âhost 

    --mysql-port=3306 #Êý¾Ý¿â¶Ë¿Ú 

    --mysql-user=your_username #Êý¾Ý¿âÓû§Ãû 

    --mysql-password=your_password #Êý¾Ý¿âÃÜÂë 

    --mysql-db=your_db_for_test #Êý¾Ý¿âÃû 

    --mysql-table-engine=STRING   storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated},ĬÈÏ´æ´¢ÒýÇæΪ[innodb]

    --oltp-tables-count=10 #Ä£ÄâµÄ±íµÄ¸öÊý£¬¹æ¸ñÔ½¸ß¸ÃÖµÔ½´ó 

    --oltp-table-size=6000000 #Ä£ÄâµÄÿÕűíµÄÐÐÊý£¬¹æ¸ñÔ½¸ß¸ÃÖµÔ½´ó 

    --oltp-table-name=sbtest #²âÊÔ±íÃû£¬Ä¬ÈÏΪ[sbtest]

    --num-threads=50 #Ä£ÄâµÄ²¢·¢ÊýÁ¿£¬¹æ¸ñÔ½¸ß¸ÃÖµÔ½´ó 

    --max-requests=100000000 #×î´óÇëÇó´ÎÊý 

    --max-time=20 #×î´ó²âÊÔʱ¼ä£¨Óë--max-requestsÖ»ÒªÓÐÒ»¸ö³¬¹ý£¬ÔòÍ˳ö£© 

    --report-interval=1 #ÿ1Ãë´òÓ¡Ò»´Îµ±Ç°µÄQPSµÈÖµ 

    --test=oltp #OLTP»ù×¼²âÊÔ

    [prepare | run | cleanup] #prepare×¼±¸Êý¾Ý£¬runÖ´ÐвâÊÔ£¬cleanupÇåÀíÊý¾Ý


    ²âÊÔÑùÀý£º


    ×¼±¸Êý¾Ý£º

    sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=postfix --mysql-password=postfix --mysql-db=test --oltp-table-size=4000000 --oltp-table-name=yuntest --max-requests=100000 --num-threads=300 --mysql-table-engine=myisam prepare


    Ö´ÐвâÊÔ£º

    sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=postfix --mysql-password=postfix --mysql-db=test --oltp-table-size=4000000 --oltp-table-name=yuntest --max-requests=100000 --num-threads=300 --mysql-table-engine=myisam run


    ²âÊÔ½á¹û£º

    # time sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=postfix --mysql-password=postfix --mysql-db=test --oltp-table-size=4000000  --oltp-table-name=yuntest --max-requests=100000 --num-threads=300 --mysql-table-engine=myisam run

    sysbench 0.4.12.10:  multi-threaded system evaluation benchmark


    No DB drivers specified, using mysql

    Running the test with following options:

    Number of threads: 300

    Random number generator seed is 0 and will be ignored


    Doing OLTP test.

    Running mixed OLTP test

    Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)

    Using "LOCK TABLES WRITE" for starting transactions

    Using auto_inc on the id column

    Maximum number of requests for OLTP test is limited to 100000

    Using 1 test tables

    Threads started!

    Done.


    OLTP test statistics:

        queries performed:

            read:                            1400000

            write:                           500000

            other:                           200000

            total:                           2100000

        transactions:                        100000 (455.68 per sec.)

        deadlocks:                           0      (0.00 per sec.)

        read/write requests:                 1900000 (8657.91 per sec.)

        other operations:                    200000 (911.36 per sec.)


    General statistics:

        total time:                          219.4526s

        total number of events:              100000

        total time taken by event execution: 65719.8341

        response time:

             min:                                 39.30ms

             avg:                                657.20ms

             max:                                763.08ms

             approx.  95 percentile:             685.38ms


    Threads fairness:

        events (avg/stddev):           333.3333/0.47

        execution time (avg/stddev):   219.0661/0.19


    ÇåÀíÊý¾Ý£º

    sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=postfix --mysql-password=postfix --mysql-db=test --oltp-table-size=4000000 --oltp-table-name=yuntest --max-requests=100000 --num-threads=300 --mysql-table-engine=myisam cleanup

  • ͨ¹ýtelnetÁ¬½Ó²é¿´memcache·þÎñÆ÷-zt

    2016-05-23 14:57:08


    memcache×÷Ϊһ¿îÓÅÐãµÄ½ø³ÌÍ⻺´æ£¬³£³£±»ÔËÓÃÓڸ߲¢·¢ÏµÍ³¼Ü¹¹ÖС£ÕâÀïÖ÷Ҫ̸̸Ôõôͨ¹ýtelnet¹¤¾ß£¬²é¿´memcacheÔËÐÐ×´¿ö²¢¶ÔÆäkey½øÐйÜÀíά»¤¡£

    1¡¢Æô¶¯memcache

    [root@localhost ~]# /usr/local/bin/memcached -u root -m 1024 -p 11211 -u postfix -l 127.0.0.1 -M -v -c 4096

    Æô¶¯²ÎÊýÏê½â

    -d£ºÒÔÊØ»¤½ø³Ì·½Ê½Æô¶¯¡£Èç¹û¸Ã²ÎÊýûÓÐÖ¸¶¨£¬µ±°´ctrl+cÃüÁî½áÊø£¬memcache×Ô¶¯¹Ø±Õ
    -m£º·ÖÅä¸ømemcacheʹÓõÄ×î´óÄÚ´æÊý µ¥Î»ÊÇm£¬Ä¬ÈÏÊÇ64m
    -u: Ö¸¶¨ÔËÐÐmemcacheµÄÓû§
    -l: Ö¸¶¨¼àÌýµÄipµØÖ·
    -p: Ö¸¶¨¼àÌýµÄtcp¶Ë¿ÚºÅ£¬¿ÉÒÔͨ¹ý-uÖ¸¶¨udp¶Ë¿Ú.ĬÈÏÊÇ11211
    -c: ×î´ó²¢·¢Á¬½ÓÊý
    -P: ±¨´í½ø³ÌidµÄÎļþ
    memcache Æô¶¯Ö®ºó£¬ÎÒÃǾͿÉÒÔͨ¹ýtelnetÁ¬½Ómemcache£¬¶ÔÆä½øÐмòµ¥²Ù×÷¹ÜÀí¡£

    2¡¢telnetÁ¬½Ómemcache

    [root@localhost ~]# telnet 192.168.119.70 11211
    Trying 192.168.119.70...
    Connected to 192.168.119.70 (192.168.119.70).
    Escape character is '^]'.

    Á¬½Ó³É¹¦Ö®ºó£¬¼´¿É¶Ômemcache½øÐвÙ×÷¹ÜÀíÁË£¬³£ÓõÄÃüÁîÓУº

    ¢ñ¡¢Ìí¼ÓÐÞ¸Ä

    ÃüÁî¸ñʽ£º<command> <key> <flags> <exptime> <bytes>\r\n<data block>\r\n

       <command>£ºadd£¬ set»ò replace
       <key> £º»º´æµÄÃû×Ö
       <flag>£º16λÎÞ·ûºÅÕûÊý£¬ºÍkeyÒª´æ´¢µÄÊý¾ÝÒ»Æð´æ´¢£¬²¢ÔÚ³ÌÐòget»º´æʱ£¬·µ»Ø¡£
       <exptime>£º¹ýȥʱ¼ä£¬0 ±íʾÓÀÔ¶²»¹ýÆÚ£¬Èç¹û·ÇÁ㣬±íʾunixʱ¼ä»ò¾à´ËÃëÊý
       <bytes>£º´æ´¢Êý¾ÝµÄ×Ö½ÚÊý
        \r\n£º ±íʾ»»Ðлسµ

        ÃüÁî½á¹û£º
                STORED £º±íʾ³É¹¦
                NOT_STORED £º ±íʾʧ°Ü

    a£©¡¢Ìí¼Ó»º´æ

    add id 1 0 4 
    1234 
    STORED

    Èç¹ûkeyÒѾ­´æÔÚ£¬Ôò»áÌí¼Óʧ°Ü¡£

    b£©¡¢Ð޸Ļº´æ

    replace id 1 0 4 
    3456 
    STORED 

    key´æÔÚʱ£¬³É¹¦£»²»´æÔÚʱ£¬Ê§°Ü¡£

    c£©¡¢ÉèÖûº´æ

    set id 1 0 4 
    2345 
    STORED

    key²»´æÔÚʱ£¬Ìí¼Ó¡¾add¡¿£»ÒÑ´æÔÚʱ£¬Ìæ»»¡¾replace¡¿¡£
    ×¢Ò⣺×Ö½ÚÊý±ØÐëºÍÄãÒª´æ´¢µÄÊý¾Ý±£³ÖÒ»Ö£¬²»È»»Ø±¨ CLIENT_ERROR bad data chunk ´íÎó

    ¢ò¡¢¶ÁÈ¡

       ÃüÁî¸ñʽ£ºget <key>+\r\n
       <key>+£º±íʾһ¸ö»ò¶à¸ökey£¬¶à¸ökeyʱ£¬Óÿոñ¸ô¿ª

    a£©¡¢¶ÁÈ¡µ¥¸ökeyµÄ»º´æ

    get id 
    VALUE id 1 4 
    1234 
    END 

    b£©¡¢¶ÁÈ¡¶à¸ökeyµÄ»º´æ

    get id name 
    VALUE id 1 4 
    3456 
    VALUE name 1 3 
    jim 
    END 

    ¢ó¡¢É¾³ý

    ÃüÁî¸ñʽ£ºdelete <key> \r\n
    <key>£ºÒªÉ¾³ýµÄkey
    ɾ³ýid

    delete id  
    DELETED

    ¢ô¡¢Çå¿ÕËùÓлº´æ

    ÃüÁî¸ñʽ£ºflush_all

    flush_all 
    OK

    ¢õ¡¢²é¿´»º´æ·þÎñÆ÷״̬

    ÃüÁstats

    stats 
    STAT pid 2711     //½ø³Ìid 
    STAT uptime 2453  //×ܵÄÔËÐÐʱ¼ä£¬µ¥Î»ÃèÊö 
    STAT time 1344856333  //µ±Ç°Ê±¼ä 
    STAT version 1.4.0 //°æ±¾ 
    STAT pointer_size 32    //·þÎñÆ÷Ö¸ÕëλÊý£¬Ò»°ã32λ²Ù×÷ϵͳÊÇ32 
    STAT rusage_user 0.002999  //½ø³ÌµÄÀÛ¼ÆÓû§Ê±¼ä  
    STAT rusage_system 1.277805  //½ø³ÌµÄÀÛ¼Æϵͳʼþ 
    STAT curr_connections 1  //µ±Ç°Á¬½ÓÊý 
    STAT total_connections 11  //·þÎñÆ÷Æô¶¯ºó,×ÜÁ¬½ÓÊý 
    STAT connection_structures 11  //Á¬½Ó½á¹¹µÄÊýÁ¿ 
    STAT cmd_get 17   //×Ü»ñÈ¡´ÎÊý 
    STAT cmd_set 1  //×ÜдÈë´ÎÊý 
    STAT cmd_flush 1   //×ܵĵÄÇå¿Õ´ÎÊý 
    STAT get_hits 1  //×ܵÄÃüÖдÎÊý 
    STAT get_misses 7   //»ñȡûÓÐÃüÖдÎÊý 
    STAT delete_misses //ɾ³ýûÓÐÃüÖдÎÊý 
    STAT delete_hits 4   //ɾ³ýÃüÖдÎÊý 
    STAT incr_misses //µÝÔö²Ù×÷ûÓÐÃüÖдÎÊý  
    STAT incr_hits //µÝÔö²Ù×÷ÃüÖдÎÊý 
    STAT decr_misses //µÝ¼õ²Ù×÷ûÓÐÃüÖеĴÎÊý 
    STAT decr_hits //µÝ¼õ²Ù×÷ÃüÖеĴÎÊý 
    STAT cas_misses //casÉèÖÃûÓÐÃüÖдÎÊý 
    STAT cas_hits //casÃüÖдÎÊý 
    STAT cas_badval //cas²Ù×÷ÕÒµ½key£¬µ«°æ±¾¹ýÆÚ£¬Ã»ÓÐÉèÖóɹ¦ 
    STAT bytes_read 455    //×ܹ²»ñÈ¡Êý¾ÝÁ¿ 
    STAT bytes_written 1175  //×ܹ²Ð´ÈëÊý¾ÝÁ¿ 
    STAT limit_maxbytes 1048576  //×î´óÔÊÐíʹÓÃÄڴ棬µ¥Î»×Ö½Ú 
    STAT accepting_conns 1     
    STAT listen_disabled_num 0 
    STAT threads 5   //µ±Ç°Ïß³ÌÊý 
    STAT conn_yields 0 
    STAT bytes 56      //ÒÑÓûº´æ¿Õ¼ä 
    STAT curr_items 1  //µ±Ç°»º´æµÄkeyvalueÊý 
    STAT total_items 7 //×ܹ²»º´æµÄkeyvalueÊý£¬°üÀ¨¹ýÆÚɾ³ýµÄ 
    STAT evictions //ͨ¹ýɾ³ýkeyvalue£¬ÊÍ·ÅÄÚ´æ´ÎÊý 
    END 

    ¢ö¡¢´òÓ¡°æ±¾

    ÃüÁversion

    version 
    VERSION 1.4.0 

    ¢÷¡¢´òÓ¡ÄÚ´æÐÅÏ¢

    ÃüÁstats slabs

    stats slabs 
    STAT 1:chunk_size 80 
    STAT 1:chunks_per_page 13107 
    STAT 1:total_pages 1 
    STAT 1:total_chunks 13107 
    STAT 1:used_chunks 1 
    STAT 1:free_chunks 1 
    STAT 1:free_chunks_end 13105 
    STAT 1:get_hits 10 
    STAT 1:cmd_set 10 
    STAT 1:delete_hits 4 
    STAT 1:incr_hits 0 
    STAT 1:decr_hits 0 
    STAT 1:cas_hits 0 
    STAT 1:cas_badval 0 
    STAT active_slabs 1 
    STAT total_malloced 1048560 
    END

    3¡¢Í˳ötelnet
    quit


  • linux ʹÓÃFIO²âÊÔ´ÅÅÌiops

    2016-05-20 18:16:32

    ¾ßÌåÄÚÈݲμû£º
    http://blog.itpub.net/26855487/viewspace-754346/

    ǧÍò×¢Ò⣺
    ÑùÀýÖеģº-filename=/dev/sdb1
    filename=/dev/sdb1 ²âÊÔÎļþÃû³Æ£¬Í¨³£Ñ¡ÔñÐèÒª²âÊÔµÄÅÌϵÄdataÎļþ¡£

    д²âÊÔʱ£¬Ê¹ÓÃ/dev/sdb1£¬±íʾֱ½ÓÍùÂãÉ豸ÉÏдÊý¾Ý£¬ÈÝÒ×Ôì³ÉÉ豸Ë𻵣¬IO³ö´í£¡£¡£¡Öظñ²ÅÄָܻ´£¡£¡£¡

    Ò»¶¨ÒªÑ¡Ôñ²âÊÔµÄÅ̵ÄdataÎļþ£¬È磺/mail/data£¡£¡£¡
  • linux-ʹÓÃpartedÀ´½øÐзÖÇø

    2016-05-18 14:07:35

    ͨ³£ÎÒÃÇÓõıȽ϶àµÄÒ»°ã¶¼ÊÇfdisk¹¤¾ßÀ´½øÐзÖÇø£¬µ«ÊÇÏÖÔÚÓÉÓÚ´ÅÅÌÔ½À´Ô½Á®¼Û£¬¶øÇÒ´ÅÅÌ¿Õ¼äÔ½À´Ô½´ó£»

    ¶øfdisk¹¤¾ßËû¶Ô·ÖÇøÊÇÓдóСÏÞÖƵģ¬ËüÖ»ÄÜ»®·ÖСÓÚ2TµÄ´ÅÅÌ¡£

    µ«ÊÇÏÖÔڵĴÅÅÌ¿Õ¼äºÜ¶à¶¼ÒѾ­ÊÇÔ¶Ô¶´óÓÚ2TÁË£¬ÈçÎÒÃǽñÌìÀý×ÓÖеÄ4.7T£¬ÄÇÒªÔõô°ìÄÜ£¬ÓÐÁ½¸ö·½·¨£¬ÆäÒ»ÊÇͨ¹ý¾í¹ÜÀíÀ´ÊµÏÖ£¬Æä¶þ¾ÍÊÇͨ¹ýÎÒÃǽñÌì̸µ½µÄParted¹¤¾ßÀ´ÊµÏÖ¶ÔGPT´ÅÅ̽øÐзÖÇø²Ù×÷¡£


    fdiskÏÔʾÀý×Ó£º

    # fdisk -l


    WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.


    Disk /dev/sdb: 4798.6 GB, 4798552211456 bytes

    255 heads, 63 sectors/track, 583390 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk identifier: 0x00000000


       Device Boot      Start         End      Blocks   Id  System

    /dev/sdb1               1      267350  2147483647+  ee  GPT



    # parted  /dev/sdb

    GNU Parted 2.1

    Using /dev/sdb

    Welcome to GNU Parted! Type 'help' to view a list of commands.

    (parted) mklabel gpt

    ½«MBR´ÅÅ̸ñʽ»¯ÎªGPT


    (parted) mkpart primary 0 100

    »®·ÖÒ»¸öÆðʼλÖÃΪ0£¬´óСΪ100MµÄÖ÷·ÖÇø


    (parted) mkpart primary 100 200

    »®·ÖÒ»¸öÆðʼλÖÃΪ100M£¬´óСΪ100MµÄÖ÷·ÖÇø


    (parted) mkpart primary 0 -1

    »®·ÖËùÓпռ䵽һ¸ö·ÖÇø


    (parted)  print

    ´òÓ¡µ±Ç°·ÖÇø


    (parted)  quit


    ¿ÉÄÜ»¹»áÓõ½µÄһЩÃüÁî


    (parted) mklable msdos

    Èç¹ûÒª·´¹ýÀ´.½«GPT´ÅÅÌת»¯ÎªMBR´ÅÅÌ


    ÔÚÕâÑù·ÖÍê·ÖÇøºó,»¹ÒªÊ¹ÓÃmkfs.ext4À´½øÐиñʽ»¯£º

    # mkfs.ext4 -F /dev/sdb1


    ¸ñʽ»¯ºó¿ÉÒÔÖ±½Ó¹ÒÔØʹÓãº

    mount -t ext4 /dev/sdb1 /mail


    µ±È»Ò²¿ÉÒÔÔö¼Óµ½/etc/fstabÖÐ


    ÃüÁîÐеÄģʽ£º

    ½«Ó²ÅÌת»¯ÎªGPT´ÅÅ̺ó£¬Ö´ÐÐÏÂÁÐÃüÁî

    parted /dev/sdb mkpart primary 0 100 ##»®·ÖÒ»¸öÆðʼλÖÃΪ0´óСΪ100MµÄÖ÷·ÖÇø

  • JAVAÄÚ´æ·ÖÎöÖ®- MAT(Memory Analyzer Tool)¹¤¾ßÈëÃŽéÉÜ

    2016-04-08 16:29:12

    ²Î¿¼£ºhttp://blog.csdn.net/fenglibing/article/details/6298326

    1.MATÊÇʲô£¿
        MAT(Memory Analyzer Tool)£¬Ò»¸ö»ùÓÚEclipseµÄÄÚ´æ·ÖÎö¹¤¾ß£¬ÊÇÒ»¸ö¿ìËÙ¡¢¹¦ÄܷḻµÄJAVA heap·ÖÎö¹¤¾ß¡£
        Ëü¿ÉÒÔ°ïÖúÎÒÃDzéÕÒÄÚ´æй©ºÍ¼õÉÙÄÚ´æÏûºÄ¡£Ê¹ÓÃÄÚ´æ·ÖÎö¹¤¾ß´ÓÖÚ¶àµÄ¶ÔÏóÖнøÐзÖÎö£¬¿ìËٵļÆËã³öÔÚÄÚ´æÖжÔÏóµÄÕ¼ÓôóС£¬¿´¿´ÊÇË­×èÖ¹ÁËÀ¬»øÊÕ¼¯Æ÷µÄ»ØÊÕ¹¤×÷£¬²¢¿ÉÒÔͨ¹ý±¨±íÖ±¹ÛµÄ²é¿´µ½¿ÉÄÜÔì³ÉÕâÖÖ½á¹ûµÄ¶ÔÏó¡£
     
    2.ΪʲôʹÓÃMAT£¿
        µ±·þÎñÆ÷Ó¦ÓÃÕ¼ÓÃÁ˹ý¶àÄÚ´æµÄʱºò£¬»áÓöµ½OutOfMemoryError¡£ÈçºÎ¿ìËÙ¶¨Î»ÎÊÌâÄØ£¿Eclipse MATµÄ³öÏÖʹÕâ¸öÎÊÌâ±äµÃ·Ç³£¼òµ¥¡£ËüÄܹ»ÀëÏß·ÖÎödumpµÄÎļþÊý¾Ý¡£
        Eclipse MATÊÇSAP¹«Ë¾¹±Ï×µÄÒ»¸ö¹¤¾ß£¬¿ÉÒÔÔÚEclipseÍøÕ¾ÏÂÔص½Ëü£¬ÍêÈ«Ãâ·ÑµÄ¡£Ëü¿É±ÈSunÌṩµÄÄÚ´æ¾µÏñ·ÖÎö¹¤¾ßjhatҪǿ̫¶àÁË¡£
    3.°²×°MAT

    ÏÂÔØÒ³£º
    http://www.eclipse.org/mat/

    ²å¼þ¸üеØÖ·£º
    http://download.eclipse.org/mat/1.5/update-site/

    ʹÓÃEclipse Marketplace°²×°£º
    Eclipse -> Help -> Eclipse Marketplace -> Memory Analyzer 1.5.0

    4.ʹÓÃMAT
    Ïȵ÷ÓÃjdkµÄ¹¤¾ßµÃµ½heapʹÓÃÇé¿ö£º

    ÎÒ°²×°µÄÊÇjdk1.8
    # java -version
    java version "1.8.0_77"
    Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
    Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

    µ÷ÓÃjdk¹¤¾ßjps²é¿´µ±Ç°µÄjava½ø³Ì£º
    # jps
    26233 Bootstrap
    28014 Jps

    µ÷ÓÃjmap¹¤¾ßµÃµ½ÐÅÏ¢£º
    # jmap -dump:format=b,file=heap.bin 26233
    Dumping heap to /tmp/heap.bin ...
    Heap dump file created

    ÓÃeclipseµÄfile---->open´ò¿ªÕâ¸öÎļþ
    ÕâÀï¿ÉÒÔÑ¡Ôñ²é¿´
    1¡¢ÄÚ´æ鶱¨±í£¬×Ô¶¯¼ì²é¿ÉÄÜ´æÔÚÄÚ´æй¶µÄ¶ÔÏó£¬Í¨¹ý±¨±íչʾ´æ»îµÄ¶ÔÏóÒÔ¼°ÎªÊ²Ã´ËûÃÇûÓб»À¬»øÊÕ¼¯£»
    2¡¢¶ÔÏó±¨±í£¬¶Ô¿ÉÒɶÔÏóµÄ·ÖÎö£¬Èç×Ö·û´®ÊÇ·ñ¶¨ÒåÖØÁË£¬¿ÕµÄcollection¡¢finalizerÒÔ¼°ÈõÒýÓõȡ£


  • JProfiler9.1Ô¶³Ì¼à¿ØTomcat-yc

    2016-04-08 15:00:56

    Ò»¡¢ÏÂÔØ°²×°JProfiler

    9.1.1°æ±¾£º

    Windows-x64ÏÂÔصØÖ·£º

    http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_windows-x64_9_1_1.exe

    ¸ù¾ÝÌáʾ°²×°¼´¿É£»

     

    linuxÏÂÔصØÖ·£º

    http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_1_1.rpm

    °²×°£ºrpm -ivh jprofiler_linux_9_1_1.rpm

    °²×°ºó£¬»áÉú³ÉĿ¼£º/opt/jprofiler9

     

    ×¢Ò⣺windowsºÍlinuxÁ½¸ö°²×°°üµÄ°æ±¾ÐèÒªÒ»Ö£¬·ñÔòÔ¶³ÌÁ¬½Óʱ£¬»áÌáʾ°æ±¾²»Æ¥Å䣡

     

    ×¢²áÂ룺

    L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257£¨Çײâ¿ÉÓã©

    L-Larry_Lau@163.com#5481-ucjn4a16rvd98#6038

    L-Larry_Lau@163.com#99016-hli5ay1ylizjj#27215

    L-Larry_Lau@163.com#40775-3wle0g1uin5c1#0674

    L-Larry_Lau@163.com#7009-14frku31ynzpfr#20176

    L-Larry_Lau@163.com#49604-1jfe58we9gyb6#5814

    L-Larry_Lau@163.com#25531-1qcev4yintqkj#23927

    L-Larry_Lau@163.com#96496-1qsu1lb1jz7g8w#23479

    L-Larry_Lau@163.com#20948-11amlvg181cw0p#171159

    ¶þ¡¢ÅäÖÃJProfilerÉú³É½Å±¾

    ÔÚ±¾»úÅäÖÃJProfilerÉú³Éstartup_jprofiler.sh½Å±¾£¬Éú³É·½Ê½ÈçÏ£º

    ÔËÐÐJProfiler£¬µ¯³öÌáʾ¶Ô»°¿ò£º

    ÕâÀïʹÓõÄÊÇApache Tomcat 8.x£º

    Ô¶³Ì·þÎñÆ÷JProfilerµÄ°²×°Â·¾¶£¬Ä¬ÈÏÔÚ/opt/jprofiler9£º

    tomcatµÄstartup.sh½Å±¾£¬´ÓÔ¶³Ì·þÎñÆ÷ÉÏ°ÑtomcatµÄbinĿ¼ÏµÄstartup.sh¸´ÖƵ½±¾µØ£¬ÔÙÑ¡Ôñ±¾µØµÄ·¾¶£º


    Finishºó£¬»áÔÚStart CenterÏÔʾ¸Õ´´½¨µÄSession£º

    ÉÏ´«½Å±¾£º

    °ÑÉú³É³öµÄstartup_jprofiler.sh(ÔÚÑ¡ÔñµÄstartup.shĿ¼ÖÐ)ÎļþÉÏ´«µ½Ô¶³ÌtomcatµÄbinĿ¼ÏÂ

    chmod +x startup_jprofiler.sh£¨½Å±¾¸³Ð´È¨ÏÞ£©

     

    Æô¶¯½Å±¾£º

    ./startup_jprofiler.sh£¬È»ºó¾Í¿ÉÒÔÔÙ±¾µØÔ¶³Ì·ÃÎÊÁË

     

    ¶Ô±Èstartup.shºÍstartup_jprofiler.sh£º

    #################################################################

    [root@localhost bin]# diff startup.sh startup_jprofiler.sh 

    60c60,69

    < exec "$PRGDIR"/"$EXECUTABLE" start "$@"

    ---

    >  

    > # The following lines have been added by the

    > # application server integration wizard of JProfiler

    >  

    > CATALINA_OPTS="-agentpath:/opt/jprofiler9/bin/linux-x64/libjprofilerti.so=port=8849,nowait $CATALINA_OPTS"

    > export CATALINA_OPTS

    >  

    > # end of modifications

    >  

    > exec "$PRGDIR"/"$EXECUTABLE" run "$@"

    #################################################################

     

    startup_jprofiler.shÖ»¶àÁËÏÂÃæÁ½ÐУº

    CATALINA_OPTS="-agentpath:/opt/jprofiler9/bin/linux-x64/libjprofilerti.so=port=8849,nowait $CATALINA_OPTS"

    export CATALINA_OPTS

     

    Èý¡¢Æô¶¯Session

    ³õʼ»¯profilingÉèÖã¬ÕâÀïÑ¡ÔñËùÓй¦ÄÜ£º

    ¿ÉÒÔ¿ªÊ¼jprofiler·ÖÎöÁË¡£