-
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µÄÈ¡Ó࣬³ÏÈ»£¬ÔÚ±à³Ì˼ÏëÀïÕâÊÇÒ»¸ö¸ÅÄî¡£ÏÂÃæÎÒÃÇ¿´¿´¼¸¸öÀý×Ó¡£- $ cat file
- 1
- 2
- 3
- 4
- 5
- 6
- $ awk 'NR%2' file
- 1
- 3
- 5
- $ awk '!(NR%2)' file
- 2
- 4
- 6
[½âÎö]
ÕâÓ¦¸ÃÊÇ×î±ê×¼µÄ´ð°¸£¬NRÊÇÐкţ¬awkµÄÄÚ½¨º¯Êý£¬µ±µÚÒ»ÐУ¬NR==1ʱ£¬¶Ô2È¡Ó࣬½á¹ûÊÇ1£¬ÔÚawkµÄÖ´ÐÐģʽÀÕâ¸ö1¾ÍÊÇpattern£¬ ΪÕ棬ִÐÐĬÈϵÄ{print}£¬Õâ¸öaction²Ù×÷¡£ÄÇô´òÓ¡³ö¸ÃÐУ¬µ½µÚ2ÐÐÔòÓàÊýÊÇ0£¬patternΪ0£¬ÔòΪ¼Ù£¬²»»áÖ´ÐÐĬÈ쵀 {print}£¬Ôò²»»áÊä³öżÊýÐС£¾Í´ïµ½ÁËÖ»Êä³öÆæÊýÐеÄЧ¹û£¬·´Ö®ÔòÊä³öżÊýÐÐÁË¡£ÎÒÃÇÔÙ¿´¿´Ò»¸ö¸üÐÂÓ±µÄ°ì·¨¡£
- $ awk '++i%2' file
- 1
- 3
- 5
- $ awk 'i++%2' file
- 2
- 4
- 6
[½âÎö]
ÕâÐÐÃüÁî³ä·ÖµÄÀûÓÃÁËCÓïÑÔÖÐ ++i Óë i++ µÄÇø±ð£¬i++ ÖÐiµÄÖµ×Ô¼ÓÒ»´ÎºóÕâ¸ö±í´ïʽµÄ½á¹ûµÈÓÚ1£¬µ«´ËʱiµÄÖµÈÔȻΪ0£¬ÎªÊ²Ã´ÄØ£¿iµÄÖµÔÚµ±Ç°±í´ïʽÖв»»á¸Ä±ä£¬++iÖÐiµÄÖµ×Ô¼ÓÒ»´Îºó£¬iµÄÖµÊÇ1£¬Ìý ÆðÀ´ºÜì¶Ü£¿È·Êµ±È½ÏÈÄ¿Ú£¬ÎÒÃÇÔÙµ÷ÓÃÒ»¸öC³ÌÐòÀ´ËµÃ÷Àý×Ó£º
- # include <stdio.h>
- int main(void)
- {
- int i, j, a, b;
- i = j = 0;
- a = i++;
- b = ++j;
- printf ("a = %d , i = %d , b = %d , j = %d\n",a,i,b,j);
- return 0;
- }
- /*
- ÔËÐнá¹û:
- a = 0 , i = 1 , b = 1 , j = 1
- */
[½âÎö]
ÔÚÕâ¸ö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£¬µ«ÊÇÔÚ¸³ÖµºÍ±È½ÏµÄʱºò£¬È´ÊÇÓÐÇø±ðµÄ¡£¿´µ½ÕâÀïÎÒÏë´ÏÃ÷µÄÄúÒѾÃ÷°×ÁËËüÃǵÄÇø±ð¡£ÎÒÃÇÔÙ¿´¿´µÚÈýÖз½·¨¡£
- $ awk 'i=!i' file
- 1
- 3
- 5
- $ awk '!(i=!i)' file
- 2
- 4
- 6
[½âÎö]
Õâ¾ä»¹ÐèÒªÎÒ½âÊÍÂ𣿸óÏÂÏë±ØÒѾÃ÷°×ÆäÖеİÂÃîÁË°É¡£^_^
- $ awk 'and(FNR,1)' file
- 1
- 3
- 5
- $ awk '!and(FNR,1)' file
- 2
- 4
- 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Ïà Óë½á¹û²ÅΪÕ棬·ñÔò½á¹û¶¼Îª¼Ù¡£¼´Ö»Êä³öÆæÊýÐУ¬·ÇÔòÊä³öżÊýÐС£
- $ sed -n 'p;n' file
- 1
- 3
- 5
- $ sed -n 'n;p' file
- 2
- 4
- 6
[½âÎö]
sedÒ²²»ÄѽâÊÍ£¬ºÃºÃ¿´¿´ÊÖ²á°É¡£
- $ seq 6 | sed -n '1~2p'
- 1
- 3
- 5
- $ seq 6 | sed -n '0~2p'
- 2
- 4
- 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'.- seq 10 | sed '0~3a\=='
-
- seq 10 | awk 'ORS=NR%3?"\n":"\n==\n"
[½âÎö]
ÿ¸ôÈýÐоÍÔÚºóÃæÌí¼ÓÒ»¸ö·Ö¸î·û¡£
- $ cat file
-
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/62983261.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.04.ʹÓÃMATÏȵ÷ÓÃjdkµÄ¹¤¾ßµÃµ½heapʹÓÃÇé¿ö£ºÎÒ°²×°µÄÊÇjdk1.8# java -versionjava 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½ø³Ì£º# jps26233 Bootstrap28014 Jpsµ÷ÓÃjmap¹¤¾ßµÃµ½ÐÅÏ¢£º# jmap -dump:format=b,file=heap.bin 26233Dumping 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·ÖÎöÁË¡£