<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>稀饭的国度 &#187; tools</title>
	<atom:link href="http://blog.thematice.com/html/ytag/tools/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.thematice.com</link>
	<description>发现自己的脑袋不好使了，用blog来记录真的很好用。</description>
	<lastBuildDate>Wed, 01 Feb 2012 05:33:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>使用 cURL 度量 Web 站点的响应时间</title>
		<link>http://blog.thematice.com/html/y2010/04/21/1077/use-curl-check-web-connect-time.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=use-curl-check-web-connect-time</link>
		<comments>http://blog.thematice.com/html/y2010/04/21/1077/use-curl-check-web-connect-time.html#comments</comments>
		<pubDate>Wed, 21 Apr 2010 09:56:28 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux  web]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[liinux]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=1077</guid>
		<description><![CDATA[[root@web-little-opt-146 NginxSoftware]# time curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://image.kaluli.net/index/images/index/20100416/127141246304.gif 1.259:1.281:1.392 real    0m1.394s user    0m0.002s sys     0m0.003s 　　清单 1 给出对一个流行的新闻站点执行 curl 命令的情况。输出通常是 HTML 代码，通过 -o 参数发送到 /dev/null。-s 参数去掉所有状态信息。-w 参数让 curl 写出表 1 列出的计时器的状态信息： 表 1. curl 使用的计时器 计时器 描述 time_connect 建立到服务器的 TCP 连接所用的时间 time_starttransfer 在发出请求之后，Web 服务器返回数据的第一个字节所用的时间 time_total 完成请求所用的时间 　　这些计时器都相对于事务的起始时间，甚至要先于 Domain Name Service（DNS）查询。因此，在发出请求之后，         Web 服务器处理请求并开始发回数据所用的时间是 [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2010/04/21/1077/use-curl-check-web-connect-time.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sed1line_zh-CN</title>
		<link>http://blog.thematice.com/html/y2010/02/23/1035/sed1line_zh-cn.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sed1line_zh-cn</link>
		<comments>http://blog.thematice.com/html/y2010/02/23/1035/sed1line_zh-cn.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 02:13:11 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[sed&swk&shell]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=1035</guid>
		<description><![CDATA[?Download shell.sh1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2010/02/23/1035/sed1line_zh-cn.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>端口扫描程序nmap使用手册</title>
		<link>http://blog.thematice.com/html/y2010/02/23/1030/%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f%e7%a8%8b%e5%ba%8fnmap%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25ab%25af%25e5%258f%25a3%25e6%2589%25ab%25e6%258f%258f%25e7%25a8%258b%25e5%25ba%258fnmap%25e4%25bd%25bf%25e7%2594%25a8%25e6%2589%258b%25e5%2586%258c</link>
		<comments>http://blog.thematice.com/html/y2010/02/23/1030/%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f%e7%a8%8b%e5%ba%8fnmap%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 02:03:37 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[linx]]></category>
		<category><![CDATA[nmap]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=1030</guid>
		<description><![CDATA[其实还是建议看英文的man，对以后学习其他东西很有帮助的：） 摘要 　　nmap是一个网络探测和安全扫描程序，系统管理者和个人可以使用这个软件扫描大型的网络，获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术，例如：UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征，例如：通过TCP/IP协议栈特征探测操作系统类型，秘密扫描，动态延时和重传计算，并行扫描，通过并行ping扫描探测关闭的主机，诱饵扫描，避开端口过滤检测，直接RPC扫描(无须端口影射)，碎片扫描，以及灵活的目标和端口设定. &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 1.名称 nmap-网络探测和安全扫描工具 2.语法 nmap [Scan Type(s)] [Options] 3.描述 　　nmap是一个网络探测和安全扫描程序，系统管理者和个人可以使用这个软件扫描大型的网络，获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术，例如：UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征，例如：通过TCP/IP协议栈特征探测操作系统类型，秘密扫描，动态延时和重传计算，并行扫描，通过并行ping扫描探测关闭的主机，诱饵扫描，避开端口过滤检测，直接RPC扫描(无须端口影射)，碎片扫描，以及灵活的目标和端口设定。 　　为了提高nmap在non-root状态下的性能，软件的设计者付出了很大的努力。很不幸，一些内核界面(例如raw socket)需要在root状态下使用。所以应该尽可能在root使用nmap。 　　nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有：open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示：防火墙、包过滤和其它的网络安全软件掩盖了这个端口，禁止 nmap探测其是否打开。unfiltered表示：这个端口关闭，并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下，端口的状态基本都是unfiltered状态，只有在大多数被扫描的端口处于filtered状态下，才会显示处于unfiltered状态的端口。 　　根据使用的功能选项，nmap也可以报告远程主机的下列特征：使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。 4.功能选项 　　功能选项可以组合使用。一些功能选项只能够在某种扫描模式下使用。nmap会自动识别无效或者不支持的功能选项组合，并向用户发出警告信息。 　　如果你是有经验的用户，可以略过结尾的示例一节。可以使用nmap -h快速列出功能选项的列表。 4.1 扫描类型 　　-sT 　　TCP connect()扫描：这是最基本的TCP扫描方式。connect()是一种系统调用，由操作系统提供，用来打开一个连接。如果目标端口有程序监听， connect()就会成功返回，否则这个端口是不可达的。这项技术最大的优点是，你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到，在目标主机的日志中会记录大批的连接请求以及错误信息。 　　-sS 　　TCP同步扫描(TCP SYN)：因为不必全部打开一个TCP连接，所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN)，然后等待回应。如果对方返回SYN&#124;ACK(响应)包就表示目标端口正在监听；如果返回RST数据包，就表示目标端口没有监听程序；如果收到一个SYN&#124;ACK包，源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接，这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是，很少有系统能够把这记入系统日志。不过，你需要root权限来定制SYN数据包。 　　-sF -sF -sN 　　秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式：即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视，而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。这些扫描方式的理论依据是：关闭的端口需要对你的探测包回应RST包，而打开的端口必需忽略有问题的包(参考RFC 793第64页)。FIN扫描使用暴露的FIN数据包来探测，而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是，微软决定完全忽略这个标准，另起炉灶。所以这种扫描方式对Windows95/NT无效。不过，从另外的角度讲，可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口，你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的，而使用SYN扫描显示有打开的端口，你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处，因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式，包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时，以上这些系统都会从打开的端口发出复位数据包。 　　-sP 　　ping扫描：有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包，nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是，一些站点例如：microsoft.com阻塞ICMP echo请求数据包。然而，在默认的情况下nmap也能够向80端口发送TCP ack包，如果你收到一个RST包，就表示主机正在运行。nmap使用的第三种技术是：发送一个SYN包，然后等待一个RST或者SYN/ACK包。对于非root用户，nmap使用connect()方法。 　　在默认的情况下(root用户)，nmap并行使用ICMP和ACK技术。 　　注意，nmap在任何情况下都会进行ping扫描，只有目标主机处于运行状态，才会进行后续的扫描。如果你只是想知道目标主机是否运行，而不想进行其它扫描，才会用到这个选项。 　　-sU 　　UDP扫描：如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务，可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包，如果我们收到端口不可达的ICMP消息，端口就是关闭的，否则我们就假设它是打开的。 　　有些人可能会想UDP扫描是没有什么意思的。但是，我经常会想到最近出现的solaris rpcbind缺陷。rpcbind隐藏在一个未公开的UDP端口上，这个端口号大于32770。所以即使端口111(portmap的众所周知端口号) [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2010/02/23/1030/%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f%e7%a8%8b%e5%ba%8fnmap%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows netstat 查看端口 进程占用</title>
		<link>http://blog.thematice.com/html/y2010/02/08/1004/windows-netstat-%e6%9f%a5%e7%9c%8b%e7%ab%af%e5%8f%a3-%e8%bf%9b%e7%a8%8b%e5%8d%a0%e7%94%a8.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=windows-netstat-%25e6%259f%25a5%25e7%259c%258b%25e7%25ab%25af%25e5%258f%25a3-%25e8%25bf%259b%25e7%25a8%258b%25e5%258d%25a0%25e7%2594%25a8</link>
		<comments>http://blog.thematice.com/html/y2010/02/08/1004/windows-netstat-%e6%9f%a5%e7%9c%8b%e7%ab%af%e5%8f%a3-%e8%bf%9b%e7%a8%8b%e5%8d%a0%e7%94%a8.html#comments</comments>
		<pubDate>Mon, 08 Feb 2010 07:30:20 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[win]]></category>
		<category><![CDATA[netstat]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=1004</guid>
		<description><![CDATA[目标：在Windows环境下，用netstat命令查看某个端口号是否占用，为哪个进程所占用. 操作：操作分为两步：（1）查看该端口被那个PID所占用;方法一：有针对性的查看端口，使用命令 Netstat –ano&#124;findstr “&#60;端口号&#62;”,如图，最后一列为PID。图中的端口号为1068，所对应的PID为3840。 (a)图 方法二：查看所有的，然后找到对应的端口和PID。 (b)图 第一幅图中的5列就是上面(a)图对应的5列 （2）查看该PID对应的进程名称。 方法一：一直用命令查找，tasklist&#124;findstr “&#60;PID号&#62;” (c)图 从 (c)图 可以看出，PID为3840所对应的进程名字为msnmsgr.exe。 方法二：用任务管理器查看。 调出任务管理器，选择列，如d图。 (d)图 查看PID对应的进程名称。如(e)图中的msnmsgr.exe (e)图 附录：在命令行中输入netstat /? 可以查看netstat的相关信息。 C:\Documents and Settings\Administrator&#62;netstat /? 显示协议统计信息和当前 TCP/IP 网络连接。 NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-t] [-v] [interval] -a 显示所有连接和监听端口。 -b 显示包含于创建每个连接或监听端口的 可执行组件。在某些情况下已知可执行组件 拥有多个独立组件，并且在这些情况下 包含于创建连接或监听端口的组件序列 被显示。这种情况下，可执行组件名 在底部的 [] 中，顶部是其调用的组件， [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2010/02/08/1004/windows-netstat-%e6%9f%a5%e7%9c%8b%e7%ab%af%e5%8f%a3-%e8%bf%9b%e7%a8%8b%e5%8d%a0%e7%94%a8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>easyLife, Fedora 下的 Ubuntu Tweak</title>
		<link>http://blog.thematice.com/html/y2010/01/12/942/easylife-fedora-%e4%b8%8b%e7%9a%84-ubuntu-tweak.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=easylife-fedora-%25e4%25b8%258b%25e7%259a%2584-ubuntu-tweak</link>
		<comments>http://blog.thematice.com/html/y2010/01/12/942/easylife-fedora-%e4%b8%8b%e7%9a%84-ubuntu-tweak.html#comments</comments>
		<pubDate>Tue, 12 Jan 2010 14:13:10 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[easyLife]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[tweak]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=942</guid>
		<description><![CDATA[easyLife 是一款专为 Fedora 开发的快速配置工具，相当于 TualatriX 为 Ubuntu 开发的 Ubuntu Tweak ，它可以帮助 Fedora 新手顺利搞定新装系统配置，帮助老手节约时间，不过，鉴于 Ubuntu Tweak 的强大功能，将 easyLife 跟 Lazybuntu 对比更贴切与准确一点。 Fedora 12 将在 2 天后发布，作为全球最受欢迎的第三大 Linux 桌面发行版，届时肯定会掀起另一波下载、安装、测评、体验狂潮，这样的快速配置工具对新手还是非常有用的，有了它，新手不会对复杂的配置望而生畏，如果有兴趣，请帮助该项目完成汉化工作。 easyLife 的主要功能，是帮助 Fedora 新手在全新安装的 Fedora 系统上，顺利、快速、简单的安装和配置软件，将复杂的事情简单化，通过鼠标点击就能轻松完成一大堆复杂的任务。 easyLife 主要特性有： Sets &#8220;sudo&#8221; command up for your regular user; 对普通用户启用 &#8220;sudo&#8221; 命令； Configures RPMFusion repository for extra and non-free software; 为 [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2010/01/12/942/easylife-fedora-%e4%b8%8b%e7%9a%84-ubuntu-tweak.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>理解 Linux 的处理器负载均值（翻译）</title>
		<link>http://blog.thematice.com/html/y2009/12/18/923/understanding-of-the-processor-load-linux-average.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=understanding-of-the-processor-load-linux-average</link>
		<comments>http://blog.thematice.com/html/y2009/12/18/923/understanding-of-the-processor-load-linux-average.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 10:30:17 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[load Average]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=923</guid>
		<description><![CDATA[原文链接： http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 你可能对于 Linux 的负载均值（load averages）已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到，它们可能会显示成这个样子： ?Download shell.sh1 load average: 0.09, 0.05, 0.01 很多人会这样理解负载均值：三个数分别代表不同时间段的系统平均负载（一分钟、五 分钟、以及十五分钟），它们的数字当然是越小越好。数字越高，说明服务器的负载越 大，这也可能是服务器出现某种问题的信号。 而事实不完全如此，是什么因素构成了负载均值的大小，以及如何区分它们目前的状况是 “好”还是“糟糕”？什么时候应该注意哪些不正常的数值？ 回答这些问题之前，首先需要了解下这些数值背后的些知识。我们先用最简单的例子说明， 一台只配备一块单核处理器的服务器。 行车过桥 一只单核的处理器可以形象得比喻成一条单车道。设想下，你现在需要收取这条道路的过桥 费 &#8212; 忙于处理那些将要过桥的车辆。你首先当然需要了解些信息，例如车辆的载重、以及 还有多少车辆正在等待过桥。如果前面没有车辆在等待，那么你可以告诉后面的司机通过。 如果车辆众多，那么需要告知他们可能需要稍等一会。 因此，需要些特定的代号表示目前的车流情况，例如： 0.00 表示目前桥面上没有任何的车流。 实际上这种情况与 0.00 和 1.00 之间是相同的，总而言之很通畅，过往的车辆可以丝毫不用等待的通过。 1.00 表示刚好是在这座桥的承受范围内。 这种情况不算糟糕，只是车流会有些堵，不过这种情况可能会造成交通越来越慢。 超过 1.00，那么说明这座桥已经超出负荷，交通严重的拥堵。 那么情况有多糟糕？ 例如 2.00 的情况说明车流已经超出了桥所能承受的一倍，那么将有多余过桥一倍的车辆正在焦急的等待。3.00 的话情况就更不妙了，说明这座桥基本上已经快承受不了，还有超出桥负载两倍多的车辆正在等待。 上面的情况和处理器的负载情况非常相似。一辆汽车的过桥时间就好比是处理器处理某线程 的实际时间。Unix 系统定义的进程运行时长为所有处理器内核的处理时间加上线程 在队列中等待的时间。 和收过桥费的管理员一样，你当然希望你的汽车（操作）不会被焦急的等待。所以，理想状态 下，都希望负载平均值小于 [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/12/18/923/understanding-of-the-processor-load-linux-average.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>理解Load Average做好压力测试</title>
		<link>http://blog.thematice.com/html/y2009/12/18/919/load-average-good-understanding-of-stress-testing.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=load-average-good-understanding-of-stress-testing</link>
		<comments>http://blog.thematice.com/html/y2009/12/18/919/load-average-good-understanding-of-stress-testing.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 10:27:08 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[configure]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[load Average]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=919</guid>
		<description><![CDATA[最近刚接手的产品问题很多，主要是集中在产品设计和性能上，另外代码的可维护性也很差，这两周处理故障和问题的时间比较多，博客更新的也少了，下面的这篇文章是解释开发小组成员介绍并发编程的一些基本原理而收集到的一篇比较好的文章，作者以浅显易懂的方式介绍了比较复杂的概念。我觉得如果我们能够把一个复杂、抽象的概念如果能够通过生活中常见的场景来加以说明和描述出来，那么我们就真正理解了这个概念。 SIP的第四期结束了，因为控制策略的丰富，早先的的压力测试结果已经无法反映在高并发和高压力下SIP的运行状况，因此需要重新作压力测试。跟在测试人员后面做了快一周的压力测试，压力测试的报告也正式出炉，本来也就算是告一段落，但第二天测试人员说要修改报告，由于这次作压力测试的同学是第一次作，有一个指标没有注意，因此需要修改几个测试结果。那个没有注意的指标就是load average，他和我一样开始只是注意了CPU，内存的使用状况，而没有太注意这个指标，这个指标与他们通常的限制（10左右）有差别。重新测试的结果由于这个指标被要求压低，最后的报告显然不如原来的好看。自己也没有深入过压力测试，但是觉得不搞明白对将来机器配置和扩容都会有影响，因此去问了DBA和SA，得到的结果相差很大，看来不得不自己去找找问题的根本所在了。 通过下面的几个部分的了解，可以一步一步的找出Load Average在压力测试中真正的作用。 CPU时间片 为了提高程序执行效率，大家在很多应用中都采用了多线程模式，这样可以将原来的序列化执行变为并行执行，任务的分解以及并行执行能够极大地提高程序的运行效率。但这都是代码级别的表现，而硬件是如何支持的呢？那就要靠CPU的时间片模式来说明这一切。程序的任何指令的执行往往都会要竞争CPU这个最宝贵的资源，不论你的程序分成了多少个线程去执行不同的任务，他们都必须排队等待获取这个资源来计算和处理命令。先看看单CPU的情况。下面两图描述了时间片模式和非时间片模式下的线程执行的情况： 图 1 非时间片线程执行情况 图 2 非时间片线程执行情况 在图一中可以看到，任何线程如果都排队等待CPU资源的获取，那么所谓的多线程就没有任何实际意义。图二中的CPU Manager只是我虚拟的一个角色，由它来分配和管理CPU的使用状况，此时多线程将会在运行过程中都有机会得到CPU资源，也真正实现了在单CPU的情况下实现多线程并行处理。 多CPU的情况只是单CPU的扩展，当所有的CPU都满负荷运作的时候，就会对每一个CPU采用时间片的方式来提高效率。 在Linux的内核处理过程中，每一个进程默认会有一个固定的时间片来执行命令（默认为1/100秒），这段时间内进程被分配到CPU，然后独占使用。如果使用完，同时未到时间片的规定时间，那么就主动放弃CPU的占用，如果到时间片尚未完成工作，那么CPU的使用权也会被收回，进程将会被中断挂起等待下一个时间片。 CPU利用率和Load Average的区别 压力测试不仅需要对业务场景的并发用户等压力参数作模拟，同时也需要在压力测试过程中随时关注机器的性能情况，来确保压力测试的有效性。当服务器长期处于一种超负荷的情况下运行，所能接收的压力并不是我们所认为的可接受的压力。就好比项目经理在给一个人估工作量的时候，每天都让这个人工作12个小时，那么所制定的项目计划就不是一个合理的计划，那个人迟早会垮掉，而影响整体的项目进度。 CPU利用率在过去常常被我们这些外行认为是判断机器是否已经到了满负荷的一个标准，看到50%-60%的使用率就认为机器就已经压到了临界了。CPU利用率，顾名思义就是对于CPU的使用状况，这是对一个时间段内CPU使用状况的统计，通过这个指标可以看出在某一个时间段内CPU被占用的情况，如果被占用时间很高，那么就需要考虑CPU是否已经处于超负荷运作，长期超负荷运作对于机器本身来说是一种损害，因此必须将CPU的利用率控制在一定的比例下，以保证机器的正常运作。 Load Average是CPU的Load，它所包含的信息不是CPU的使用率状况，而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息，也就是CPU使用队列的长度的统计信息。为什么要统计这个信息，这个信息的对于压力测试的影响究竟是怎么样的，那就通过一个类比来解释CPU利用率和Load Average的区别以及对于压力测试的指导意义。 我们将CPU就类比为电话亭，每一个进程都是一个需要打电话的人。现在一共有4个电话亭（就好比我们的机器有4核），有10个人需要打电话。现在使用电话的规则是管理员会按照顺序给每一个人轮流分配1分钟的使用电话时间，如果使用者在1分钟内使用完毕，那么可以立刻将电话使用权返还给管理员，如果到了1分钟电话使用者还没有使用完毕，那么需要重新排队，等待再次分配使用。 图 3 电话使用场景 上图中对于使用电话的用户又作了一次分类，1min的代表这些使用者占用电话时间小于等于1min，2min表示使用者占用电话时间小于等于2min，以此类推。根据电话使用规则，1min的用户只需要得到一次分配即可完成通话，而其他两类用户需要排队两次到三次。 电话的利用率 = sum (active use cpu time)/period 每一个分配到电话的使用者使用电话时间的总和去除以统计的时间段。这里需要注意的是是使用电话的时间总和(sum(active use cpu time))，这与占用时间的总和(sum(occupy cpu time))是有区别的。（例如一个用户得到了一分钟的使用权，在10秒钟内打了电话，然后去查询号码本花了20秒钟，再用剩下的30秒打了另一个电话，那么占用了电话1分钟，实际只是使用了40秒） 电话的Average Load体现的是在某一统计时间段内，所有使用电话的人加上等待电话分配的人一个平均统计。 电话利用率的统计能够反映的是电话被使用的情况，当电话长期处于被使用而没有的到足够的时间休息间歇，那么对于电话硬件来说是一种超负荷的运作，需要调整使用频度。而电话Average Load却从另一个角度来展现对于电话使用状态的描述，Average Load越高说明对于电话资源的竞争越激烈，电话资源比较短缺。对于资源的申请和维护其实也是需要很大的成本，所以在这种高Average Load的情况下电话资源的长期“热竞争”也是对于硬件的一种损害。 低利用率的情况下是否会有高Load Average的情况产生呢？理解占有时间和使用时间就可以知道，当分配时间片以后，是否使用完全取决于使用者，因此完全可能出现低利用率高Load Average的情况。由此来看，仅仅从CPU的使用率来判断CPU是否处于一种超负荷的工作状态还是不够的，必须结合Load Average来全局的看CPU的使用情况和申请情况。 所以回过头来再看测试部对于Load Average的要求，在我们机器为8个CPU的情况下，控制在10 Load左右，也就是每一个CPU正在处理一个请求，同时还有2个在等待处理。看了看网上很多人的介绍一般来说Load简单的计算就是2* [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/12/18/919/load-average-good-understanding-of-stress-testing.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>speedometer出网络图`很小很强大~</title>
		<link>http://blog.thematice.com/html/y2009/12/18/909/speedometer%e5%87%ba%e7%bd%91%e7%bb%9c%e5%9b%be%e5%be%88%e5%b0%8f%e5%be%88%e5%bc%ba%e5%a4%a7.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speedometer%25e5%2587%25ba%25e7%25bd%2591%25e7%25bb%259c%25e5%259b%25be%25e5%25be%2588%25e5%25b0%258f%25e5%25be%2588%25e5%25bc%25ba%25e5%25a4%25a7</link>
		<comments>http://blog.thematice.com/html/y2009/12/18/909/speedometer%e5%87%ba%e7%bd%91%e7%bb%9c%e5%9b%be%e5%be%88%e5%b0%8f%e5%be%88%e5%bc%ba%e5%a4%a7.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 03:26:15 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[speedometer]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[监控]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=909</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 今天在强大的网络上发先一个很小很强大的软件，出图效果很不错~~所以介绍给大家。`安装很方便“只要你的系统支持 python&#160; 但是如果你没有安装 python-urwid 不会出图，只会有数字显示~~好了下面讲安装~~ &#160; PS :需要 python 2.6 以上支持~ &#160; shell $&#62; wget http://excess.org/speedometer/speedometer.py shell $&#62; apt-get install python-urwid shell $&#62; cp speedometer.py /usr/local/bin/speedometer shell $&#62; chown root: /usr/local/bin/speedometer shell $&#62; chmod 755 /usr/local/bin/speedometer shell $&#62; speedometer.py/usr/local/bin/speedometer.py:21: DeprecationWarning: The popen2 module is deprecated.&#160; Use the subprocess module.&#160; import popen2Usage: speedometer [options] tap [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/12/18/909/speedometer%e5%87%ba%e7%bd%91%e7%bb%9c%e5%9b%be%e5%be%88%e5%b0%8f%e5%be%88%e5%bc%ba%e5%a4%a7.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>touch &#8211;help</title>
		<link>http://blog.thematice.com/html/y2009/12/15/908/touch-help.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=touch-help</link>
		<comments>http://blog.thematice.com/html/y2009/12/15/908/touch-help.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 04:18:24 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[touch]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/html/y2009/12/15/908_touch-help.html</guid>
		<description><![CDATA[?Download shell.sh1 2 3 4 5 touch --help Usage: touch [OPTION]... FILE... Update the access and modification times of each FILE to the current time. &#160; Mandatory arguments to long options are mandatory for short options too. ?Download shell.sh1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -a change [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/12/15/908/touch-help.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux sort 命令详解</title>
		<link>http://blog.thematice.com/html/y2009/12/12/907/linux-sort-%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux-sort-%25e5%2591%25bd%25e4%25bb%25a4%25e8%25af%25a6%25e8%25a7%25a3</link>
		<comments>http://blog.thematice.com/html/y2009/12/12/907/linux-sort-%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 16:06:31 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/html/y2009/12/12/907_linux-sort-%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html</guid>
		<description><![CDATA[&#160; &#160;sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项，这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上，sort命令可以被认为是一个非常强大的数据管理工具，用来管理内容类似数据库记录的文件。 　　Sort命令将逐行对文件中的内容进行排序，如果两行的首字符相同，该命令将继续比较这两行的下一字符，如果还相同，将继续进行比较。 　　语法： 　　sort ［选项］ 文件 　　说明：sort命令对指定文件中所有的行进行排序，并将结果显示在标准输出上。如不指定输入文件或使用”- “，则表示排序内容来自标准输入。 &#160;　　sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。 &#160;　　改变缺省设置的选项主要有： &#160;　　- m 若给定文件已排好序，合并文件。 &#160;　　- c 检查给定文件是否已排好序，如果它们没有都排好序，则打印一个出错信息，并以状态值1退出。 &#160;　　- u 对排序后认为相同的行只留其中一行。 &#160;　　- o 输出文件 将排序输出写到输出文件中而不是标准输出，如果输出文件是输入文件之一，sort先将该文件的内容写入一个临时文件，然后再排序和写输出结果。 &#160;　　改变缺省排序规则的选项主要有： &#160;　　- d 按字典顺序排序，比较时仅字母、数字、空格和制表符有意义。 &#160;　　- f 将小写字母与大写字母同等对待。 &#160;　　- I 忽略非打印字符。 &#160;　　- M 作为月份比较：”JAN”]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/12/12/907/linux-sort-%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wget下载整个网站</title>
		<link>http://blog.thematice.com/html/y2009/11/06/861/wget-down-all-web-site.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wget-down-all-web-site</link>
		<comments>http://blog.thematice.com/html/y2009/11/06/861/wget-down-all-web-site.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 04:14:32 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux net]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=861</guid>
		<description><![CDATA[可以使用下面的命令 wget -r -p -k -np http://blog.thematice.com , -r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个参数,因为如果你要下载的网站也有别的网站的链接,wget也会把别的网站的东西下载 下来,由于互联网的特性,很有可能你会把整个互联网给下载下来 &#8211;,所以要加上 -np这个参数,表示不下载别的站点的链接. -k表示将下载的网页里的链接修改为本地链接.-p获得所以显示网页所需的元素,比如图片什么的. 另外还有其他的一些参数可以使用: -c表示断点续传 -t 100表示重试100次,-t 0表示无穷次重试 另外可以将要下载的url写到一个文件中,每个url一行,使用这样的命令 wget -i download.txt. &#8211;reject=avi,rmvb 表示不下载avi,rmvb的文件,&#8211;accept=jpg,jpeg,表示只下载jpg,jpeg的文件. 可以在用户目录下建立一个.wgetrc的文件(windows里面好像不能直接建立这样的文件,windows会认为没有文件名&#8211;),里面写上 http-proxy = 123.456.78.9:80,然后在加上参数 &#8211;proxy=on,如果需要密码,再加上下面的参数 &#8211;proxy-user=username, &#8211;proxy-passwd=password]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/11/06/861/wget-down-all-web-site.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINUX的du命令详解</title>
		<link>http://blog.thematice.com/html/y2009/11/01/786/linux%e7%9a%84du%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux%25e7%259a%2584du%25e5%2591%25bd%25e4%25bb%25a4%25e8%25af%25a6%25e8%25a7%25a3</link>
		<comments>http://blog.thematice.com/html/y2009/11/01/786/linux%e7%9a%84du%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 08:44:08 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[du]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=786</guid>
		<description><![CDATA[命令用途 du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时，它会测量当前工作目录与其所有子目录，分别显示各个目录所占的快数，最后才显示工作目录所占总快数。 命令格式 ?Download shell1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 du [OPTION]... [FILE]... -a, --all 包括了所有的文件，而不只是目录 --apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/11/01/786/linux%e7%9a%84du%e5%91%bd%e4%bb%a4%e8%af%a6%e8%a7%a3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转] memcache分析调试 &#8211; [php]</title>
		<link>http://blog.thematice.com/html/y2009/09/29/709/%e8%bd%ac-memcache%e5%88%86%e6%9e%90%e8%b0%83%e8%af%95-php.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25bd%25ac-memcache%25e5%2588%2586%25e6%259e%2590%25e8%25b0%2583%25e8%25af%2595-php</link>
		<comments>http://blog.thematice.com/html/y2009/09/29/709/%e8%bd%ac-memcache%e5%88%86%e6%9e%90%e8%b0%83%e8%af%95-php.html#comments</comments>
		<pubDate>Mon, 28 Sep 2009 17:08:55 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[DBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=709</guid>
		<description><![CDATA[1.关于本文档 本文档所有的分析都是在1.2版本之上,偶尔会提到比较1.1版本.其他版本没有阅读. 一个星期时间的工作,不可能对memcache有很深刻的分析.文档本身的目的在于为以后的研究准备一个总结资料.刚接触memcache时,对其设计分布式的思路感到十分欣喜,因为在中间层以极小的代价实现简单分布式无疑成为一些要求不是很高的分布式应用的一个很好的设计思路,这个特性决定memcache本身在分布式应用中,单个结点之间是Server相互独立,不会存在同级之间的通信.一个结点拒绝访问,如果没有相应的冗余策略,将导致该结点的数据丢失.同时,memcache的Server结点对数据的存储操作都是在内存中完成,而memcache对内存分配和回收采用了曾在SunOS实现的分页机制,预分配一个大内存(默认是 slabs_clsid; assert((it->it_flags &#038; ITEM_LINKED) == 0); assert(it != heads[it->slabs_clsid]); assert(it != tails[it->slabs_clsid]); assert(it->refcount == 0); it->slabs_clsid = 0; it->it_flags &#124;= ITEM_SLABBED; slabs_free(it, ntotal); } 做一个轮流存储的机制使用预分配的内存,这样的好处是其他地方不需要做任何修改就可以了,当然你可以在源代码中加入上面的代码,并将它们放在一个自定义的宏后面. 3. 加速比. 加速比,也即事件的处理效率.是否可以修改libevent的事件处理效率,需要研究.如果内存空间很大,可以将freeconn的数值调大,增加预分配的conn内存大小. 是否可以将memcache做成多线程处理,但在处理多线程数据同步是个问题. 如果有时间,愿意来试试这个策略. 4. 安全性能. memcache还存在一个比较显著的问题,那就是其安全性能.只要了解memcache监听的端口,对于能够使用分布式memcache进行数据通信的网络环境的机器,都可以通过memcache协议于memcache服务器进行通信,获取或种植数据.不能保证种植进内存里的数据不会被别有心意的人再利用.也不能保证服务器的内存不被漫天遍地的垃圾数据所堆积,造成命中极低. memcache的设计理念在一个轻字,如果对每次Client的通讯需要校验身份,那么恐怕memcache也就达不到其想要的效果了.存在解决办法缓解这个问题,一般而言,需要使用memcache服务的机器,可以在Server维持一张红色列表.这张表上的机器便可以获取服务.很显然,memcache并非任意Client都能访问,只有信任的机器访问,那么为什么不将这些信任的机器放在一个/etc/mem_passwd下呢. 还有,memcached走udp时,很大几率接受到upd时,都会使服务死掉,特别是set,add,replace时,这个问题需要去考究一下.不过没有时间了. 4.memcache测试分析 服务器端memcache在命令行运行的参数: 引用 # memcached –d –m 512 –l *.*.*.* -u ** -f 1.00001 –n 16 –c [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/09/29/709/%e8%bd%ac-memcache%e5%88%86%e6%9e%90%e8%b0%83%e8%af%95-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unix/Linux shell程序设计--case语句</title>
		<link>http://blog.thematice.com/html/y2009/09/26/736/unixlinux-shell%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1-case%e8%af%ad%e5%8f%a5.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unixlinux-shell%25e7%25a8%258b%25e5%25ba%258f%25e8%25ae%25be%25e8%25ae%25a1-case%25e8%25af%25ad%25e5%258f%25a5</link>
		<comments>http://blog.thematice.com/html/y2009/09/26/736/unixlinux-shell%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1-case%e8%af%ad%e5%8f%a5.html#comments</comments>
		<pubDate>Sat, 26 Sep 2009 15:14:35 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[sed&swk&shell]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[sh]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=736</guid>
		<description><![CDATA[case语句 ：它能够把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码。 使用格式： case 匹配母板 in 模板1 [ &#124; 模板2 ] … ) 语句组 ;; 模板3 [ &#124; 模板4 ] … ) 语句组 ;; esac case语句的匹配是从上往下地匹配顺序。因此，case语句编写的原则是从上往下，模板从特殊到普通。在C语言里，case语句中有default模板，而在shell程序设计中，可能将模板写成*，就可以完成相同的功能。 case语句的模板支持匹配 匹配以n开头的所有情况： n* 匹配yes的所有字母大小不同的情况： [yY][eE][sS] 但不支持{}匹配，因为模板可以使用 &#124; 就可以达到目的。 例程: ?Download shell.sh1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/sh &#160; [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/09/26/736/unixlinux-shell%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1-case%e8%af%ad%e5%8f%a5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下替换文件名中的空格用 tr :</title>
		<link>http://blog.thematice.com/html/y2009/09/24/732/linux%e4%b8%8b%e6%9b%bf%e6%8d%a2%e6%96%87%e4%bb%b6%e5%90%8d%e4%b8%ad%e7%9a%84%e7%a9%ba%e6%a0%bc%e7%94%a8-tr.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux%25e4%25b8%258b%25e6%259b%25bf%25e6%258d%25a2%25e6%2596%2587%25e4%25bb%25b6%25e5%2590%258d%25e4%25b8%25ad%25e7%259a%2584%25e7%25a9%25ba%25e6%25a0%25bc%25e7%2594%25a8-tr</link>
		<comments>http://blog.thematice.com/html/y2009/09/24/732/linux%e4%b8%8b%e6%9b%bf%e6%8d%a2%e6%96%87%e4%bb%b6%e5%90%8d%e4%b8%ad%e7%9a%84%e7%a9%ba%e6%a0%bc%e7%94%a8-tr.html#comments</comments>
		<pubDate>Thu, 24 Sep 2009 07:24:59 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux net]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[sh]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=732</guid>
		<description><![CDATA[Linux下替换文件名中的空格用 tr : ?Download shell.sh1 2 3 4 5 6 7 find . -type f -name &#34;* *&#34; -print &#124; while read name; do na=$(echo $name &#124; tr ' ' '_') if [[ $name != $na ]]; then mv &#34;$name&#34; $na fi done 记录在这里，希望对大家有用。]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/09/24/732/linux%e4%b8%8b%e6%9b%bf%e6%8d%a2%e6%96%87%e4%bb%b6%e5%90%8d%e4%b8%ad%e7%9a%84%e7%a9%ba%e6%a0%bc%e7%94%a8-tr.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rsync简单学习</title>
		<link>http://blog.thematice.com/html/y2009/09/23/719/rsync%e7%ae%80%e5%8d%95%e5%ad%a6%e4%b9%a0.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rsync%25e7%25ae%2580%25e5%258d%2595%25e5%25ad%25a6%25e4%25b9%25a0</link>
		<comments>http://blog.thematice.com/html/y2009/09/23/719/rsync%e7%ae%80%e5%8d%95%e5%ad%a6%e4%b9%a0.html#comments</comments>
		<pubDate>Wed, 23 Sep 2009 04:04:46 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux net]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=719</guid>
		<description><![CDATA[rsync &#8211; faster, flexible replacement for rcp rsync是一个快速的，使用rcp协议来监视远程目录文件改动的同步工具，说实话，对于rsync的一些概念我至今都是模糊不清，它有太多的参数，还有超多的工作模式，以至于我实在是懒得去理会它。在我的心目中，它就是一个在服务器之间同步文件夹的工具。 下面，让我们来近距离接触它，我所知道的，Rhel和Sles在默认的情况就会安装rsync，想必其他系统也一样，所以我们不需要做任务动作，就可以直接使用它了。 另外我们可以发现有rsyncd服务端的存在，不过它是默认关闭的，我不知道它是用来做什么的，貌似要走873端口的一个协议，我不知道为什么放着ssh的22端口不用，又去另外开一个端口，开一个服务呢，所以我是坚决不用的，简单第一嘛。 现在我就要在服务器B上同步服务器A上的文件夹test，一旦服务器A上的test文件夹上有变动，服务器B上的test文件夹也有跟上，就是所谓的夫唱妇随，记住，A是夫，B是妇。 服务器A： ?Download shell.sh1 2 3 4 5 6 7 maxcv:~ # cd maxcv:~ # mkdir test maxcv:~ # cd test/ maxcv:~/test # touch a b c d e f g maxcv:~/test # chmod 777 * maxcv:~ # service sshd status Checking for service sshd [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/09/23/719/rsync%e7%ae%80%e5%8d%95%e5%ad%a6%e4%b9%a0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ultraedit中的shell语法高亮</title>
		<link>http://blog.thematice.com/html/y2009/09/22/717/ultraedit%e4%b8%ad%e7%9a%84shell%e8%af%ad%e6%b3%95%e9%ab%98%e4%ba%ae.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ultraedit%25e4%25b8%25ad%25e7%259a%2584shell%25e8%25af%25ad%25e6%25b3%2595%25e9%25ab%2598%25e4%25ba%25ae</link>
		<comments>http://blog.thematice.com/html/y2009/09/22/717/ultraedit%e4%b8%ad%e7%9a%84shell%e8%af%ad%e6%b3%95%e9%ab%98%e4%ba%ae.html#comments</comments>
		<pubDate>Mon, 21 Sep 2009 16:27:44 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[ide]]></category>
		<category><![CDATA[edit]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=717</guid>
		<description><![CDATA[准备阶段： 1. UltraEdit v14.10.0.1023 绿色版下载地址：http://www.greendown.cn/soft/737.html 2. 从ue官方网站下载wordfile扩展文件包：ALL WORDFILES IN ONE PACKAGE， 设置阶段： 1. 启动UltraEdit：下载后直接双击文件夹下的Uedit32.exe即可启动UltraEdit。 点击菜单“高级”-“配置”，打开配置对话框。在导航一栏，点击“编辑器显示”&#8212;-“语法着色”，在右侧“字词列表完整路径”处点击“打开”按钮。此时打开了“C:\Users\smilelife\AppData\Roaming\IDMComp\UltraEdit\WORDFILE.UEW”。即这个目录下的*.urtaledit wordfile。 这里的路径依自己的电脑而有别。这里只管点击打开按钮即可。 2.将wordfile扩展文件包中unixshell.txt内容附加到上面打开的文件中，然后保存；再以urtaledit 打开shell文件，此时可以看到shell文件中的一些关键字已经以其他颜色显示了。 这是就设置成功了。 补充说明：其他一些语言的关键字在这个编辑器中凸亮显示的设置方法也如此。]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/09/22/717/ultraedit%e4%b8%ad%e7%9a%84shell%e8%af%ad%e6%b3%95%e9%ab%98%e4%ba%ae.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>shell中的数组使用方法</title>
		<link>http://blog.thematice.com/html/y2009/09/16/681/shell%e4%b8%ad%e7%9a%84%e6%95%b0%e7%bb%84%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=shell%25e4%25b8%25ad%25e7%259a%2584%25e6%2595%25b0%25e7%25bb%2584%25e4%25bd%25bf%25e7%2594%25a8%25e6%2596%25b9%25e6%25b3%2595</link>
		<comments>http://blog.thematice.com/html/y2009/09/16/681/shell%e4%b8%ad%e7%9a%84%e6%95%b0%e7%bb%84%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95.html#comments</comments>
		<pubDate>Wed, 16 Sep 2009 12:11:12 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[linux shell]]></category>
		<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=681</guid>
		<description><![CDATA[NAME rsync &#8211; faster, flexible replacement for rcp rsync是一个快速的，使用rcp协议来监视远程目录文件改动的同步工具，说实话，对于rsync的一些概念我至今都是模糊不清，它有太多的参数，还有超多的工作模式，以至于我实在是懒得去理会它。在我的心目中，它就是一个在服务器之间同步文件夹的工具。 下面，让我们来近距离接触它，我所知道的，Rhel和Sles在默认的情况就会安装rsync，想必其他系统也一样，所以我们不需要做任务动作，就可以直接使用它了。 另外我们可以发现有rsyncd服务端的存在，不过它是默认关闭的，我不知道它是用来做什么的，貌似要走873端口的一个协议，我不知道为什么放着ssh的22端口不用，又去另外开一个端口，开一个服务呢，所以我是坚决不用的，简单第一嘛。 现在我就要在服务器B上同步服务器A上的文件夹test，一旦服务器A上的test文件夹上有变动，服务器B上的test文件夹也有跟上，就是所谓的夫唱妇随，记住，A是夫，B是妇。 服务器A： ?Download shell.sh1 2 3 4 5 6 7 8 9 &#60;ol class=&#34;dp-c&#34;&#62; &#60;li class=&#34;alt&#34;&#62;&#60;span&#62;&#60;span&#62;maxcv:~ # &#60;span style=&#34;color: #993300;&#34;&#62;cd &#60;/span&#62;&#60;/span&#62;&#60;/span&#62;&#60;/li&#62; &#60;li&#62;&#60;span&#62;maxcv:~ # &#60;span style=&#34;color: #993300;&#34;&#62;mkdir test &#60;/span&#62;&#60;/span&#62;&#60;/li&#62; &#60;li class=&#34;alt&#34;&#62;&#60;span&#62;maxcv:~ # &#60;span style=&#34;color: #993300;&#34;&#62;cd test/ &#60;/span&#62;&#60;/span&#62;&#60;/li&#62; &#60;li&#62;&#60;span&#62;maxcv:~/test # &#60;span style=&#34;color: #993300;&#34;&#62;touch a b c [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/09/16/681/shell%e4%b8%ad%e7%9a%84%e6%95%b0%e7%bb%84%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>四种 种web性能压力测试工具http_load webbench ab siege小结</title>
		<link>http://blog.thematice.com/html/y2009/06/05/472/http_load-webbench-ab-siege%e5%b0%8f%e7%bb%93.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=http_load-webbench-ab-siege%25e5%25b0%258f%25e7%25bb%2593</link>
		<comments>http://blog.thematice.com/html/y2009/06/05/472/http_load-webbench-ab-siege%e5%b0%8f%e7%bb%93.html#comments</comments>
		<pubDate>Fri, 05 Jun 2009 07:01:15 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web压力测试]]></category>

		<guid isPermaLink="false">http://blog.thematice.com/?p=472</guid>
		<description><![CDATA[http_load 下载地址：http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz 程序非常小，解压后也不到100K 居家旅行 携带方便 呵呵 http_load以并行复用的方式运行，用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具，它可以以一个单一的进程运行，一般不会把客户机搞死。可以可以测试HTTPS类的网站请求。 命令格式：http_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件 例如： 引用 http_load -p 30 -s 60 urllist.txt 准备URL文件：tst.list，文件格式是每行一个URL，URL最好超过50－100个测试效果比较好，另外，测试结果中主要的指标是 fetches/sec 这个选项，即服务器每秒能够响应的查询次数，用这个指标来衡量性能。似乎比 apache的ab准确率要高一些，也更有说服力一些。 官方的例子： 引用 % ./http_load -rate 10 -seconds 60 urllist.txt 49 fetches, 4 max parallel, 289884 bytes, in 10.0148 seconds 5916 mean bytes/connection 4.89274 fetches/sec, 28945.5 bytes/sec msecs/connect: 28.8932 mean, 44.243 [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2009/06/05/472/http_load-webbench-ab-siege%e5%b0%8f%e7%bb%93.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Linux常用命令介绍</title>
		<link>http://blog.thematice.com/html/y2008/02/22/61/linux-command-used-to-introduce.html#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux-command-used-to-introduce</link>
		<comments>http://blog.thematice.com/html/y2008/02/22/61/linux-command-used-to-introduce.html#comments</comments>
		<pubDate>Fri, 22 Feb 2008 11:23:26 +0000</pubDate>
		<dc:creator>稀饭</dc:creator>
				<category><![CDATA[Linux tools]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[rm]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.gruelstate.cn/?p=61</guid>
		<description><![CDATA[谈到Linux命令很多人都望而生畏，因为Linux的命令太多了，而且每个命令都有很多选项，但是Linux命令又是Linux系统里最重要的工具，学习Linux命令是学习Linux必不可少的一个环节，也是Linux入门基础。所以在介绍Linux的其它方面之前，我们先介绍一下Linux的常用命令，希望我的这点简单介绍对你了解Linux命令有所帮助。 在介绍所有的命令之前，先介绍一下Linux的在线帮助man。在Linux下，当你要查找一个命令的用法的，你可以通过 man 命令名 来源得命令的详细说明。因为每个Linux都有一份man文档，所以介绍命令的时候我们只是简直介绍一下命令的学用选项。如果想查看命令的详细说明，请自己看man。下面是man各小节的内容：    1    用户命令。    2    系统调用。    3    库函数。    4    特殊文件(设备和网络接口)。    5    文件格式。    6    游戏和演示。    7    系统环境、表格和宏。    8    系统管理和相关命令。 apropos    依据所给关键字查找相关的命令和系统调用 格式：apropos keyword 例：查找与ftp相关的命令和系统调用 $apropos ftp 注：类似的命令有man -k。man -k 其实就是执行apropos at    在某一特定时间执行指定的命令 格式：at [-V][-q 队列][-f 文件][-m] time 选项说明： -V     显示标准的错误输出。 -f     可将作业存在一个文件中，用这个选项指定文件。例如一个shell文件。 -q     指定队列名称，默认为c。 -m     执行后给用户发邮件。time 指定开始执行的时间。时间格式为: HH：MM，日期格式：MM/DD/YY或MM.DD.YY或MMDDYY。 下面的例子演示了在2004年3月11日21点34分执行一个at命令。 [...]]]></description>
		<wfw:commentRss>http://blog.thematice.com/html/y2008/02/22/61/linux-command-used-to-introduce.html/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

