<?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>Askiter Blog</title>
	<atom:link href="http://www.askiter.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.askiter.com</link>
	<description>There&#039;s more than one way to do it!</description>
	<lastBuildDate>Thu, 16 Dec 2010 03:29:54 +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>网站压力测试工具webbench介绍</title>
		<link>http://www.askiter.com/2010/webbench-usage.html</link>
		<comments>http://www.askiter.com/2010/webbench-usage.html#comments</comments>
		<pubDate>Wed, 15 Dec 2010 03:23:01 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[webbench]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=257</guid>
		<description><![CDATA[webbench最多可以模拟3万个并发连接去测试网站的负载能力，感觉要比Apache自带的ab压力测试工具好，安装使用也非常方便。 1、适用系统：Linux 2、编译安装： wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make &#038;&#038; make install PS：在编译安装的时候可能会有错误，但是不影响正常使用。 3、使用： webbench -c 500 -t 30 http://127.0.0.1/test.jpg 　　参数说明：-c表示并发数，-t表示时间(秒) 4、测试结果示例： Webbench &#8211; Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://192.168.1.233/about.php 500 clients, running 30 sec. Speed=3230 pages/min, 11614212 bytes/sec. Requests: 1615 susceed, 0 [...]]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/webbench" title="View all posts in webbench" target="_blank">webbench</a></span>最多可以模拟3万个并发连接去测试网站的负载能力，感觉要比Apache自带的ab压力测试工具好，安装使用也非常方便。</p>
<p>1、适用系统：Linux</p>
<p>2、编译安装：<br />
wget http://blog.s135.com/soft/linux/<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/webbench" title="View all posts in webbench" target="_blank">webbench</a></span>/webbench-1.5.tar.gz<br />
tar zxvf webbench-1.5.tar.gz<br />
cd webbench-1.5<br />
make &#038;&#038; make install</p>
<p>PS：在编译安装的时候可能会有错误，但是不影响正常使用。</p>
<p>3、使用：<br />
webbench -c 500 -t 30 http://127.0.0.1/test.jpg<br />
　　参数说明：-c表示并发数，-t表示时间(秒)</p>
<p>4、测试结果示例：</p>
<p>Webbench &#8211; Simple Web Benchmark 1.5<br />
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.</p>
<p>Benchmarking: GET http://192.168.1.233/about.php<br />
500 clients, running 30 sec.</p>
<p>Speed=3230 pages/min, 11614212 bytes/sec.<br />
Requests: 1615 susceed, 0 failed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/webbench-usage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL中如何启用InnoDB数据引擎</title>
		<link>http://www.askiter.com/2010/how-to-enable-innodb-for-mysql.html</link>
		<comments>http://www.askiter.com/2010/how-to-enable-innodb-for-mysql.html#comments</comments>
		<pubDate>Tue, 14 Dec 2010 06:52:31 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=247</guid>
		<description><![CDATA[一、InnoDB 介绍 InnoDB 是 MySQL 上第一个提供外键约束的引擎，除了提供事务处理外，InnoDB 还支持行锁，提供和 Oracle 一样的一致性的不加锁读取，能增加并发读的用户数量并提高性能，不会增加锁的数量。 InnoDB 的设计目标是处理大容量数据时最大化性能，它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。 InnoDB 是一套放在 MySQL 后台的完整数据库系统，InnoDB 有它自己的缓冲池，能缓冲数据和索引，InnoDB 还把数据和索引存放在表空间里面，可能包含好几个文件，这和 MyISAM 表完全不同，在 MyISAM 中，表被存放在单独的文件中，InnoDB 表的大小只受限于操作系统文件的大小，一般为 2GB。 如果您的MySQL是使用二进制版本安装的，那么可能您需要手工启用。如果你使用源码版本下载，自己编译的话，需要采用 &#8211;with-plugins=innobase 选项： ./configure &#8211;prefix=/usr/local/mysql &#8211;with-extra-charsets=all &#8211;enable-thread-safe-client &#8211;enable-assembler &#8211;with-charset=utf8 &#8211;enable-thread-safe-client &#8211;with-extra-charsets=all &#8211;with-big-tables &#8211;with-readline &#8211;with-ssl &#8211;with-embedded-server &#8211;enable-local-infile &#8211;with-plugins=innobase 二、检查当前MySQL支持的数据库引擎 在MySQL的命令行模式下，可以用 show engines\G; 命令查看各个引擎的状态 mysql&#62; show engines\G *************************** 1. row *************************** Engine: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>一、<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/innodb" title="View all posts in InnoDB" target="_blank">InnoDB</a></span> 介绍</strong></p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/innodb" title="View all posts in InnoDB" target="_blank">InnoDB</a></span> 是 <span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/mysql" title="View all posts in MySQL" target="_blank">MySQL</a></span> 上第一个提供外键约束的引擎，除了提供事务处理外，<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/innodb" title="View all posts in InnoDB" target="_blank">InnoDB</a></span> 还支持行锁，提供和 Oracle 一样的一致性的不加锁读取，能增加并发读的用户数量并提高性能，不会增加锁的数量。</p>
<p>InnoDB 的设计目标是处理大容量数据时最大化性能，它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。</p>
<p>InnoDB 是一套放在 <span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/mysql" title="View all posts in MySQL" target="_blank">MySQL</a></span> 后台的完整数据库系统，InnoDB 有它自己的缓冲池，能缓冲数据和索引，InnoDB 还把数据和索引存放在表空间里面，可能包含好几个文件，这和 MyISAM 表完全不同，在 MyISAM 中，表被存放在单独的文件中，InnoDB 表的大小只受限于操作系统文件的大小，一般为 2GB。</p>
<p>如果您的<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/mysql" title="View all posts in MySQL" target="_blank">MySQL</a></span>是使用二进制版本安装的，那么可能您需要手工启用。如果你使用源码版本下载，自己编译的话，需要采用 &#8211;with-plugins=innobase 选项：</p>
<p>./configure &#8211;prefix=/usr/local/mysql &#8211;with-extra-charsets=all &#8211;enable-thread-safe-client &#8211;enable-assembler &#8211;with-charset=utf8 &#8211;enable-thread-safe-client &#8211;with-extra-charsets=all &#8211;with-big-tables &#8211;with-readline &#8211;with-ssl &#8211;with-embedded-server &#8211;enable-local-infile <span style="color: #ff0000;">&#8211;with-plugins=innobase </span></p>
<p><strong>二、检查当前MySQL支持的数据库引擎</strong></p>
<p>在MySQL的命令行模式下，可以用 show engines\G; 命令查看各个引擎的状态<br />
mysql&gt; show engines\G<br />
*************************** 1. row ***************************<br />
Engine: MyISAM<br />
Support: DEFAULT<br />
Comment: Default engine as of MySQL 3.23 with great performance<br />
*************************** 2. row ***************************<br />
Engine: MEMORY<br />
Support: YES<br />
Comment: Hash based, stored in memory, useful for temporary tables<br />
*************************** 3. row ***************************<br />
Engine: InnoDB<br />
Support: YES<br />
Comment: Supports transactions, row-level locking, and foreign keys<br />
*************************** 4. row ***************************<br />
Engine: BerkeleyDB<br />
Support: NO<br />
Comment: Supports transactions and page-level locking<br />
*************************** 5. row ***************************<br />
Engine: BLACKHOLE<br />
Support: YES<br />
Comment: /dev/null storage engine (anything you write to it disappears)<br />
*************************** 6. row ***************************<br />
Engine: EXAMPLE<br />
Support: NO<br />
Comment: Example storage engine<br />
*************************** 7. row ***************************<br />
Engine: ARCHIVE<br />
Support: YES<br />
Comment: Archive storage engine<br />
*************************** 8. row ***************************<br />
Engine: CSV<br />
Support: NO<br />
Comment: CSV storage engine<br />
*************************** 9. row ***************************<br />
Engine: ndbcluster<br />
Support: NO<br />
Comment: Clustered, fault-tolerant, memory-based tables<br />
*************************** 10. row ***************************<br />
Engine: FEDERATED<br />
Support: YES<br />
Comment: Federated MySQL storage engine<br />
*************************** 11. row ***************************<br />
Engine: MRG_MYISAM<br />
Support: YES<br />
Comment: Collection of identical MyISAM tables<br />
*************************** 12. row ***************************<br />
Engine: ISAM<br />
Support: NO<br />
Comment: Obsolete storage engine<br />
12 rows in set (0.00 sec)</p>
<p>这里可以看到<br />
Engine: InnoDB<br />
Support: YES<br />
Comment: Supports transactions, row-level locking, and foreign keys<br />
也就是说，MySQL已经支持了InnoDB引擎，但是并不是作为默认数据库引擎。</p>
<p><strong>三、启用InnoDB的方法</strong></p>
<p>1、关闭mysql的服务</p>
<p>2、修改/etc/my.cnf</p>
<p>将default-storage-engine=InnoDB前的注释（#）去掉<br />
将skip-innodb这行注释（加上#）<br />
将my.cnf中关于innodb的配置前面的#去掉</p>
<p>3、保存后重启mysql服务(如果启动服务时失败，可以试着将innodb日志文件清除 rm ib*  ，然后重新启动)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/how-to-enable-innodb-for-mysql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL语法大全之用户权限</title>
		<link>http://www.askiter.com/2010/grant-syntax-for-mysql.html</link>
		<comments>http://www.askiter.com/2010/grant-syntax-for-mysql.html#comments</comments>
		<pubDate>Sun, 14 Nov 2010 06:55:36 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Syntax]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=251</guid>
		<description><![CDATA[本文主要介绍MySQL语法中比较重要的一个语法Grant，用户权限分配。本文实例，运行于 MySQL 5.0 及以上版本。 MySQL 赋予用户权限命令的简单格式可概括为： grant 权限 on 数据库对象 to 用户 一、grant 普通数据用户，查询、插入、更新、删除 数据库中所有表数据的权利。 grant select on testdb.* to common_user@&#8217;%&#8217; grant insert on testdb.* to common_user@&#8217;%&#8217; grant update on testdb.* to common_user@&#8217;%&#8217; grant delete on testdb.* to common_user@&#8217;%&#8217; 或者，用一条 MySQL 命令来替代： grant select, insert, update, delete on testdb.* to common_user@&#8217;%&#8217; 二、grant 数据库开发人员，创建表、索引、视图、存储过程、函数。。。等权限。 grant 创建、修改、删除 [...]]]></description>
			<content:encoded><![CDATA[<p>本文主要介绍<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/mysql" title="View all posts in MySQL" target="_blank">MySQL</a></span>语法中比较重要的一个语法Grant，用户权限分配。本文实例，运行于 <span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/mysql" title="View all posts in MySQL" target="_blank">MySQL</a></span> 5.0 及以上版本。</p>
<p>MySQL 赋予用户权限命令的简单格式可概括为：<br />
grant 权限 on 数据库对象 to 用户</p>
<p><strong>一、grant 普通数据用户，查询、插入、更新、删除 数据库中所有表数据的权利。</strong></p>
<p>grant select on testdb.* to common_user@&#8217;%&#8217;<br />
grant insert on testdb.* to common_user@&#8217;%&#8217;<br />
grant update on testdb.* to common_user@&#8217;%&#8217;<br />
grant delete on testdb.* to common_user@&#8217;%&#8217;<br />
或者，用一条 MySQL 命令来替代：<br />
grant select, insert, update, delete on testdb.* to common_user@&#8217;%&#8217;</p>
<p><strong>二、grant 数据库开发人员，创建表、索引、视图、存储过程、函数。。。等权限。</strong></p>
<p>grant 创建、修改、删除 MySQL 数据表结构权限。<br />
grant create on testdb.* to developer@&#8217;192.168.0.%&#8217;;<br />
grant alter  on testdb.* to developer@&#8217;192.168.0.%&#8217;;<br />
grant drop   on testdb.* to developer@&#8217;192.168.0.%&#8217;;</p>
<p>grant 操作 MySQL 外键权限。<br />
grant references on testdb.* to developer@&#8217;192.168.0.%&#8217;;</p>
<p>grant 操作 MySQL 临时表权限。<br />
grant create temporary tables on testdb.* to developer@&#8217;192.168.0.%&#8217;;</p>
<p>grant 操作 MySQL 索引权限。<br />
grant index on  testdb.* to developer@&#8217;192.168.0.%&#8217;;</p>
<p>grant 操作 MySQL 视图、查看视图源代码 权限。<br />
grant create view on testdb.* to developer@&#8217;192.168.0.%&#8217;;<br />
grant show   view on testdb.* to developer@&#8217;192.168.0.%&#8217;;</p>
<p>grant 操作 MySQL 存储过程、函数 权限。<br />
grant create routine on testdb.* to developer@&#8217;192.168.0.%&#8217;;  &#8212; now, can show procedure status<br />
grant alter  routine on testdb.* to developer@&#8217;192.168.0.%&#8217;;  &#8212; now, you can drop a procedure<br />
grant execute        on testdb.* to developer@&#8217;192.168.0.%&#8217;;</p>
<p><strong>三、grant 普通 DBA 管理某个 MySQL 数据库的权限。</strong></p>
<p>grant all privileges on testdb to dba@&#8217;localhost&#8217;<br />
其中，关键字 “privileges” 可以省略。</p>
<p><strong>四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。</strong></p>
<p>grant all on *.* to dba@&#8217;localhost&#8217;</p>
<p><strong>五、MySQL grant 权限，分别可以作用在多个层次上。</strong></p>
<p>1. grant 作用在整个 MySQL 服务器上：<br />
grant select on *.* to dba@localhost; &#8212; dba 可以查询 MySQL 中所有数据库中的表。<br />
grant all    on *.* to dba@localhost; &#8212; dba 可以管理 MySQL 中的所有数据库</p>
<p>2. grant 作用在单个数据库上：<br />
grant select on testdb.* to dba@localhost; &#8212; dba 可以查询 testdb 中的表。</p>
<p>3. grant 作用在单个数据表上：<br />
grant select, insert, update, delete on testdb.orders to dba@localhost;</p>
<p>4. grant 作用在表中的列上：<br />
grant select(id, se, rank) on testdb.apache_log to dba@localhost;</p>
<p>5. grant 作用在存储过程、函数上：<br />
grant execute on procedure testdb.pr_add to &#8216;dba&#8217;@'localhost&#8217;<br />
grant execute on function  testdb.fn_add to &#8216;dba&#8217;@'localhost&#8217;</p>
<p><strong>六、查看 MySQL 用户权限</strong></p>
<p>查看当前用户（自己）权限：<br />
show grants;</p>
<p>查看其他 MySQL 用户权限：<br />
show grants for dba@localhost;</p>
<p><strong>七、撤销已经赋予给 MySQL 用户权限的权限。</strong></p>
<p>revoke 跟 grant 的语法差不多，只需要把关键字 “to” 换成 “from” 即可：<br />
grant  all on *.* to   dba@localhost;<br />
revoke all on *.* from dba@localhost;</p>
<p><strong>八、MySQL grant、revoke 用户权限注意事项</strong></p>
<p>1. grant, revoke 用户权限后，该用户只有重新连接 MySQL 数据库，权限才能生效。<br />
2. 如果想让授权的用户，也可以将这些权限 grant 给其他用户，需要选项 “grant option“<br />
grant select on testdb.* to dba@localhost with grant option;<br />
这个特性一般用不到。实际中，数据库权限最好由 DBA 来统一管理。</p>
<p><strong>九、应用实例:新建用户并只付给指定数据库操作权限。</strong></p>
<p>//下面为创建lamfire用户,远程登录密码为123456,并分配其对lamfireDB数据库完全操作权限<br />
CREATE USER &#8216;lamfire&#8217;@'%&#8217; IDENTIFIED BY &#8217;123456&#8242;;<br />
GRANT USAGE ON * . * TO &#8216;lamfire&#8217;@'%&#8217; IDENTIFIED BY &#8217;123456&#8242;  ;<br />
CREATE DATABASE IF NOT EXISTS `lamfireDB` ;<br />
GRANT ALL PRIVILEGES ON `lamfireDB` . * TO lamfire@&#8217;%&#8217; ;<br />
 FLUSH PRIVILEGES;</p>
<p><strong>十、查看系统用户表。</strong></p>
<p>use mysql;<br />
select * from user;</p>
<p>以上就是mysql数据库的用户权限分配时使用的语法详解了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/grant-syntax-for-mysql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux 性能监测工具及调优介绍</title>
		<link>http://www.askiter.com/2010/linux-performance-monitoring-tools-and-optimization.html</link>
		<comments>http://www.askiter.com/2010/linux-performance-monitoring-tools-and-optimization.html#comments</comments>
		<pubDate>Fri, 20 Aug 2010 09:17:47 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[iostat]]></category>
		<category><![CDATA[psstat]]></category>
		<category><![CDATA[sar]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=215</guid>
		<description><![CDATA[LINUX系统下，大多数的性能监测工具保存在/proc目录下。这里我们将Red Hat Linux AS 和 SUSE LINUX EnterpriseServer中，命令行及图形方式下的性能监测工具做概括性介绍。这些工具有些在系统工具盘里，有些可以从网上下载。sar,iostat,和pstat这三个工具在distributionCD里，也可以从网上下载，网址是http://perso.wanadoo.fr/sebastien.godard/。 表&#8211;Linux 性能监测工具 这些工具提供了IBM Director Capacity Manager之外的一些功能，能够在某个时间段内对系统性能进行监测。IBM Director适用于多种操作系统平台，从而使得异构环境下数据的收集和分析更容易。下面分三部分逐个介绍每个命令。 1、uptime uptime命令用于查看服务器运行了多长时间以及有多少个用户登录，快速获知服务器的负荷情况。 uptime的输出包含一项内容是load average，显示了最近1-，5-，15分钟的负荷情况。它的值代表等待CPU处理的进程数，如果CPU没有时间处理这些进程，load average值会升高；反之则会降低。 load average的最佳值是1，说明每个进程都可以马上处理并且没有CPU cycles被丢失。对于单CPU的机器，1或者2是可以接受的值；对于多路CPU的机器，load average值可能在8到10之间。 也可以使用uptime命令来判断网络性能。例如，某个网络应用性能很低，通过运行uptime查看服务器的负荷是否很高，如果不是，那么问题应该是网络方面造成的。 下边是uptime的输出样式 2、dmesg dmesg命令主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。 另外，使用dmesg可以确定您的服务器安装了那些硬件。每次系统重启，系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg命令可以查看该记录。 下边是dmesg的输出样式 3、top top命令显示处理器的活动状况。缺省情况下，显示占用CPU最多的任务，并且每隔5秒钟做一次刷新。 3.1 Process priority and nice levels Process priority的数值决定了CPU处理进程的顺序。LIUNX内核会根据需要调整该数值的大小。nicevalue局限于priority。priority的值不能低于nice value（nicevalue值越低，优先级越高）。您不可以直接修改Process priority的值，但是可以通过调整nicelevel值来间接地改变Process priority值，然而这一方法并不是所有时候都可用。如果某个进程运行异常的慢，可以通过降低nicelevel为该进程分配更多的CPU。 Linux 支持的 nice levels 由19 (优先级低)到-20 (优先级高)，缺省值为0。 执行/bin/ps命令可以查看到当前进程的情况。 4、iostat iostat由Red Hat Enterprise [...]]]></description>
			<content:encoded><![CDATA[<p>LINUX系统下，大多数的性能监测工具保存在/proc目录下。这里我们将Red Hat Linux AS 和 SUSE LINUX EnterpriseServer中，命令行及图形方式下的性能监测工具做概括性介绍。这些工具有些在系统工具盘里，有些可以从网上下载。<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/sar" title="View all posts in sar" target="_blank">sar</a></span>,<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/iostat" title="View all posts in iostat" target="_blank">iostat</a></span>,和pstat这三个工具在distributionCD里，也可以从网上下载，网址是http://perso.wanadoo.fr/sebastien.godard/。</p>
<p>表&#8211;Linux 性能监测工具<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-01.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-01" width="418" height="416" class="aligncenter size-full wp-image-216" /><br />
这些工具提供了IBM Director Capacity Manager之外的一些功能，能够在某个时间段内对系统性能进行监测。IBM Director适用于多种操作系统平台，从而使得异构环境下数据的收集和分析更容易。下面分三部分逐个介绍每个命令。</p>
<p>1、uptime<br />
uptime命令用于查看服务器运行了多长时间以及有多少个用户登录，快速获知服务器的负荷情况。<br />
uptime的输出包含一项内容是load average，显示了最近1-，5-，15分钟的负荷情况。它的值代表等待CPU处理的进程数，如果CPU没有时间处理这些进程，load average值会升高；反之则会降低。<br />
load average的最佳值是1，说明每个进程都可以马上处理并且没有CPU cycles被丢失。对于单CPU的机器，1或者2是可以接受的值；对于多路CPU的机器，load average值可能在8到10之间。</p>
<p>也可以使用uptime命令来判断网络性能。例如，某个网络应用性能很低，通过运行uptime查看服务器的负荷是否很高，如果不是，那么问题应该是网络方面造成的。</p>
<p>下边是uptime的输出样式<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-02.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-02" width="495" height="37" class="aligncenter size-full wp-image-217" /></p>
<p>2、dmesg<br />
dmesg命令主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。<br />
另外，使用dmesg可以确定您的服务器安装了那些硬件。每次系统重启，系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg命令可以查看该记录。</p>
<p>下边是dmesg的输出样式<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-03.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-03" width="487" height="481" class="aligncenter size-full wp-image-218" /></p>
<p>3、top<br />
top命令显示处理器的活动状况。缺省情况下，显示占用CPU最多的任务，并且每隔5秒钟做一次刷新。</p>
<p>3.1 Process priority and nice levels</p>
<p>Process priority的数值决定了CPU处理进程的顺序。LIUNX内核会根据需要调整该数值的大小。nicevalue局限于priority。priority的值不能低于nice value（nicevalue值越低，优先级越高）。您不可以直接修改Process priority的值，但是可以通过调整nicelevel值来间接地改变Process priority值，然而这一方法并不是所有时候都可用。如果某个进程运行异常的慢，可以通过降低nicelevel为该进程分配更多的CPU。<br />
Linux 支持的 nice levels 由19 (优先级低)到-20 (优先级高)，缺省值为0。</p>
<p>执行/bin/ps命令可以查看到当前进程的情况。<br />
<span id="more-215"></span><br />
4、<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/iostat" title="View all posts in iostat" target="_blank">iostat</a></span><br />
iostat由Red Hat Enterprise Linux AS发布。同时iostat也是Sysstat的一部分，可以下载到，网址是http://perso.wanadoo.fr/sebastien.godard/<br />
执行iostat命令可以从系统启动之后的CPU平均时间，类似于uptime。除此之外，iostat还对创建一个服务器磁盘子系统的活动报告。该报告包含两部分：CPU使用情况和磁盘使用情况。</p>
<p>下边是iostat的输出样式<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-04.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-04" width="517" height="200" class="aligncenter size-full wp-image-219" /></p>
<p>CPU占用情况包括四块内容<br />
%user：显示user level (applications)时，CPU的占用情况。<br />
%nice：显示user level在nice priority时，CPU的占用情况。<br />
%sys:显示system level (kernel)时，CPU的占用情况。<br />
%idle: 显示CPU空闲时间所占比例。</p>
<p>磁盘使用报告分成以下几个部分：<br />
Device: 块设备的名字<br />
tps: 该设备每秒I/O传输的次数。多个I/O请求可以组合为一个，每个I/O请求传输的字节数不同，因此可以将多个I/O请求合并为一个。<br />
Blk_read/s, Blk_wrtn/s: 表示从该设备每秒读写的数据块数量。块的大小可以不同，如1024, 2048 或 4048字节，这取决于partition的大小。</p>
<p>例如，执行下列命令获得设备/dev/sda1 的数据块大小：</p>
<p>dumpe2fs -h /dev/sda1 |grep -F &#8220;Block size&#8221;</p>
<p>输出结果如下</p>
<p>dumpe2fs 1.34 (25-Jul-2003)<br />
Block size: 1024</p>
<p>Blk_read, Blk_wrtn: 指示自从系统启动之后数据块读/写的合计数。</p>
<p>5、vmstat<br />
vmstat提供了processes, memory, paging, block I/O, traps和CPU的活动状况.</p>
<p>下边是vmstat的输出样式<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-05.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-05" width="597" height="79" class="aligncenter size-full wp-image-220" /></p>
<p>各输出列的含义：<br />
Process<br />
– r: The number of processes waiting for runtime.<br />
– b: The number of processes in uninterruptable sleep.<br />
Memory<br />
– swpd: The amount of virtual memory used (KB).<br />
– free: The amount of idle memory (KB).<br />
– buff: The amount of memory used as buffers (KB).<br />
Swap<br />
– si: Amount of memory swapped from the disk (KBps).<br />
– so: Amount of memory swapped to the disk (KBps).<br />
IO<br />
– bi: Blocks sent to a block device (blocks/s).<br />
– bo: Blocks received from a block device (blocks/s).<br />
System<br />
– in: The number of interrupts per second, including the clock.<br />
– cs: The number of context switches per second.<br />
CPU (these are percentages of total CPU time)<br />
- us: Time spent running non-kernel code (user time, including nice time).<br />
– sy: Time spent running kernel code (system time).<br />
– id: Time spent idle. Prior to Linux 2.5.41, this included IO-wait time.<br />
– wa: Time spent waiting for IO. Prior to Linux 2.5.41, this appeared as zero.</p>
<p>6 <span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/sar" title="View all posts in sar" target="_blank">sar</a></span></p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/sar" title="View all posts in sar" target="_blank">sar</a></span>是Red Hat Enterprise Linux AS发行的一个工具，同时也是Sysstat工具集的命令之一，可以从以下网址下载：http://perso.wanadoo.fr/sebastien.godard/<br />
sar用于收集、报告或者保存系统活动信息。sar由三个应用组成：sar显示数据、sar1和sar2用于收集和保存数据。<br />
使用sar1和sar2，系统能够配置成自动抓取信息和日志，以备分析使用。配置举例：在/etc/crontab中添加如下几行内容<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-06.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-06" width="532" height="180" class="aligncenter size-full wp-image-221" /></p>
<p>同样的，你也可以在命令行方式下使用sar运行实时报告。如图所示：<br />
从收集的信息中，可以得到详细的CPU使用情况(%user, %nice, %system, %idle)、内存页面调度、网络I/O、进程活动、块设备活动、以及interrupts/second<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-07.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-07" width="528" height="289" class="aligncenter size-full wp-image-222" /></p>
<p>7 KDE System Guard<br />
KDE System Guard (KSysguard) 指KDE任务管理和性能监视。监视本地及远程客户端/服务器架构体系的中的主机。</p>
<p>如下图所示<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-08.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-08" width="592" height="443" class="aligncenter size-full wp-image-223" /></p>
<p>如图所示，使用传感器获取显示的信息。传感器可以返回简单的数值或者复杂的表格信息。<br />
对于每一种类型的信息，提供了一个或者更多显示。并以工作表的形式独立保存。</p>
<p>每个传感器监视一个部件。所有显示的传感器均可以用鼠标拖拽。有三个选择<br />
1可以删除和替换某个传感器<br />
2可以编辑修改行数和列数<br />
3可以建立新的工作表并选择所需的传感器</p>
<p>如下图所示<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-09.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-09" width="659" height="494" class="aligncenter size-full wp-image-224" /></p>
<p>7.1 Work space<br />
如上图所示，有两个tabs：System Load和Process Table</p>
<p>System Load<br />
该工作表中有四个传感器视窗：CPU Load, Load Average (1 Minute), Physical Memory, 和 Swap Memory.<br />
从Physical Memory window可以看到，同一个window中可以显示多个传感器。在图上移动鼠标，根据所出现的描述信息可以知道哪个传感器正被监视。也可以点鼠标右键该图并选择Properties&#8211;Sensors，如下图所示。<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-10.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-10" width="579" height="418" class="aligncenter size-full wp-image-226" /></p>
<p>Process Table<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-11.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-11" width="590" height="462" class="aligncenter size-full wp-image-229" /></p>
<p>点击Process Table显示所有执行的进程。缺省情况下，按照System CPU utilization排序，也可以简单地通过鼠标点击相应项改变排序的方式。</p>
<p><strong>定制一个work sheet</strong><br />
指导定制创建一个如图14-7所示的work sheet</p>
<p>1. 选择File-> New ,如图 14-5<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-12.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-12" width="426" height="295" class="aligncenter size-full wp-image-230" /></p>
<p>2. 输入标题以及行列数；即最多的监视窗口数，这里为四个。如图14-6<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-13.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-13" width="737" height="514" class="aligncenter size-full wp-image-231" /></p>
<p>注：最短2秒更新间隔</p>
<p>3. 现在只需简单将传感器从左恻拖拽到右恻的窗口中。显示可选项为</p>
<p>– Signal Plotter. 显示一个或者多个传感器，如果有多个，则分层显示。如果显示屏足够大，以网格方式显示。<br />
缺省情况下，为自动排列方式，最大和最小值自动设置。如果要修改最大最小值，首先要关闭自动排列方式。</p>
<p>– Multimeter. 以数字方式显示传感器的值。在属性对话框中，可以改变上限和下限。超过限制时，显示警告色。</p>
<p>– BarGraph. 将传感器的值显示为dancing bars. 同Multimeter一样，在属性对话框中，可以改变上限和下限。超过限制时，显示警告色。</p>
<p>– Sensor Logger ：Sensor Logger不显示任何值，而是将上述信息记录到某个文件中， 并加入日期和时间。对每个传感器，你必须定义一个日志文件、记录日志的时间间隔、以及是否报警。</p>
<p>4.点File -> Save，保存worksheet.<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-14.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-14" width="719" height="505" class="aligncenter size-full wp-image-232" /></p>
<p>如需获取更多KDE System Guard信息，访问:http://docs.kde.org/en/3.2/kdebase/ksysgaurd<br />
注：work sheet被保存在用户目录中，其他管理员可能无法访问。<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-15.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-15" width="526" height="148" class="aligncenter size-full wp-image-233" /></p>
<p>8 free<br />
/bin/free命令显示所有空闲的和使用的内存数量，包括swap。同时也包含内核使用的缓存。</p>
<p>9 Traffic-vis<br />
Traffic-vis是一套测定哪些主机在IP网进行通信、通信的目标主机以及传输的数据量。并输出纯文本、HTML或者GIF格式的报告。</p>
<p>注：Traffic-vis仅仅适用于SUSE LINUX ENTERPRISE SERVER。</p>
<p>如下命令用来收集网口eth0的信息：<br />
traffic-collector -i eth0 -s /root/output_traffic-collector<br />
可以使用killall命令来控制该进程。如果要将报告写入磁盘，可使用如下命令：<br />
killall -SIGUSR1 traffic-collector<br />
要停止对信息的收集，执行如下命令：killall -SIGTERM traffic-collector</p>
<p>注意，不要忘记执行最后一条命令，否则会因为内存占用而影响性能。</p>
<p>可以根据packets, bytes, TCP连接数对输出进行排序，根据每项的总数或者收/发的数量进行。<br />
例如根据主机上packets的收/发数量排序，执行命令：<br />
traffic-sort -i output_traffic-collector -o output_traffic-sort -Hp</p>
<p>如要生成HTML格式的报告，显示传输的字节数，packets的记录、全部TCP连接请求和网络中每台服务器的信息，请运行命令：<br />
traffic-tohtml -i output_traffic-sort -o output_traffic-tohtml.html<br />
可以通过浏览器方式查看报告的内容，如图14-8<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-16.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-16" width="680" height="575" class="aligncenter size-full wp-image-234" /></p>
<p>如要生成GIF格式（600X600）的报告，请运行命令：</p>
<p>traffic-togif -i output_traffic-sort -o output_traffic-togif.gif -x 600 -y 600</p>
<p>图14-9显示了网络中主机之间通信的情况。GIF格式的报告可以方便地发现网络广播，查看哪台主机在TCP网络中使用IPX/SPX协议并隔离网络，需要记住的是，IPX是基于广播包的协议。如果我们需要查明例如网卡故障或重复IP的问题，需要使用特殊的工具。例如SUSE LINUXEnterprise Server自带的Ethereal。<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-17.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-17" width="618" height="612" class="aligncenter size-full wp-image-235" /></p>
<p>技巧和提示：使用管道，可以只需执行一条命令来产生报告。如生成HTML的报告，执行命令：<br />
cat output_traffic-collector | traffic-sort -Hp | traffic-tohtml<br />
-o output_traffic-tohtml.html</p>
<p>如要生成GIF文件，执行命令：<br />
cat output_traffic-collector | traffic-sort -Hp | traffic-togif<br />
-o output_traffic-togif.gif -x 600 -y 600<br />
10 pmap<br />
pmap可以报告某个或多个进程的内存使用情况。使用pmap判断主机中哪个进程因占用过多内存导致内存瓶颈。图14-9显示了SUSE LINUX<br />
Enterprise Server下pmap命令执行结果</p>
<p>pmap -x
<pid>
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-18.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-18" width="519" height="172" class="aligncenter size-full wp-image-236" /></p>
<p>图14-10显示了smbd进程所占用的内存<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-19.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-19" width="518" height="128" class="aligncenter size-full wp-image-237" /><br />
pmap
<pid>
<p>11 strace<br />
strace截取和记录系统进程调用，以及进程收到的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。<br />
使用该命令需要指明进程的ID(PID)，例如：<br />
strace -p
<pid>
<p>图14-11 shows an example of the output of strace.<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-20.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-20" width="625" height="414" class="aligncenter size-full wp-image-238" /></p>
<p>12 ulimit<br />
ulimit内置在bash shell中，用来提供对shell和进程可用资源的控制</p>
<p>使用选项-a列出可以设置的所有参数：<br />
ulimit -a<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-21.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-21" width="510" height="241" class="aligncenter size-full wp-image-239" /></p>
<p>-H和-S选项指明所给资源的软硬限制。如果超过了软限制，系统管理员会收到警告信息。硬限制指在用户收到超过文件句炳限制的错误信息之前，可以达到的最大值。<br />
例如可以设置对文件句炳的硬限制：ulimit -Hn 4096<br />
例如可以设置对文件句炳的软限制：ulimit -Sn 1024<br />
查看软硬值，执行如下命令：<br />
ulimit -Hn<br />
ulimit -Sn<br />
例如限制Oracle用户. 在/etc/security/limits.conf输入以下行:<br />
soft nofile 4096<br />
hard nofile 10240<br />
对于Red Hat Enterprise Linux AS，确定文件/etc/pam.d/system-auth包含如下行<br />
session required /lib/security/$ISA/pam_limits.so</p>
<p>对于SUSE LINUX Enterprise Server，确定文件/etc/pam.d/login 和/etc/pam.d/sshd包含如下行：<br />
session required pam_limits.so<br />
这一行使这些限制生效。</p>
<p>13 mpstat<br />
mpstat是Sysstat工具集的一部分，下载地址是http://perso.wanadoo.fr/sebastien.godard/<br />
mpstat用于报告多路CPU主机的每颗CPU活动情况，以及整个主机的CPU情况。<br />
例如，下边的命令可以隔2秒报告一次处理器的活动情况，执行3次<br />
mpstat 2 3<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-22.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-22" width="524" height="173" class="aligncenter size-full wp-image-240" /></p>
<p>如下命令每隔1秒显示一次多路CPU主机的处理器活动情况，执行3次<br />
mpstat -P ALL 1 3<br />
<img src="http://www.askiter.com/wp-content/uploads/2010/08/linux-performance-monitoring-tools-and-optimization-23.gif" alt="" title="linux-performance-monitoring-tools-and-optimization-23" width="509" height="192" class="aligncenter size-full wp-image-241" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/linux-performance-monitoring-tools-and-optimization.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>kill 命令用法详解</title>
		<link>http://www.askiter.com/2010/kill-usage.html</link>
		<comments>http://www.askiter.com/2010/kill-usage.html#comments</comments>
		<pubDate>Thu, 19 Aug 2010 09:15:33 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=197</guid>
		<description><![CDATA[kill命令是Linux系统管理的过程中不可或缺的一个命令。一般来说我们可以通过Ctrl + C键终止当前正在运行的命令。但对于后台进程我们就要用kill工具进行处理了。kill命令的工作原理是，向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号，然后系统内核就可以对进程标识号指定的进程进行操 作。比如在top命令中，我们看到系统运行许多进程，有时就需要使用kill中止某些进程来提高系统资源。 kill命令的语法： kill [ －s signal &#124; －p ] [ －a ] pid … kill －l [ signal ] kill命令的参数： －s：指定发送的信号。 －p：模拟发送信号。 －l：指定信号的名称列表。 pid：要中止进程的ID号。 Signal：表示信号，这里如果不具体指明信号，将会向指定进程发送默认信号15，也就是 SIGTERM 。 信号由数字指定。可以使用kill -l命令查看数字代表的信号，可以使用man 7 signal命令查看关于信号的详细说明，也可以查看这里。 常见用法： 1、强行中止一个进程标识号为1234的进程： ＃kill -9 1234 2、解除Linux系统的死锁 在Linux中有时会发生这样一种情况：一个程序崩溃，并且处于死锁的状态。此时一般不用重新启动计算机，只需要中止(或者说是关闭)这个有问题的程序即可。当kill处于X-Window界面时，主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端，在那里中止有问题的程序。比如，如果Mozilla浏览器程序出现了锁死的情况，可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID，然后使用kill命令停止这个程序： ＃kill -SIGKILL XXX 其中，XXX是包含有Mozolla浏览器的程序的进程标识号。 3、使用命令回收内存 我们知道内存对于系统是非常重要的，回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如，使用top命令发现一个无用 (Zombie) 的进程，此时可以使用下面命令： ＃kill -9 XXX 其中，XXX是无用的进程标识号。 然后使用下面命令： ＃free [...]]]></description>
			<content:encoded><![CDATA[<p>kill命令是Linux系统管理的过程中不可或缺的一个命令。一般来说我们可以通过Ctrl + C键终止当前正在运行的命令。但对于后台进程我们就要用kill工具进行处理了。kill命令的工作原理是，向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号，然后系统内核就可以对进程标识号指定的进程进行操<br />
作。比如在top命令中，我们看到系统运行许多进程，有时就需要使用kill中止某些进程来提高系统资源。</p>
<p>kill命令的语法：<br />
kill [ －s signal | －p ] [ －a ] pid …<br />
kill －l [ signal ] </p>
<p>kill命令的参数：<br />
－s：指定发送的信号。<br />
－p：模拟发送信号。<br />
－l：指定信号的名称列表。<br />
pid：要中止进程的ID号。<br />
Signal：表示信号，这里如果不具体指明信号，将会向指定进程发送默认信号15，也就是 SIGTERM 。</p>
<p>信号由数字指定。可以使用kill -l命令查看数字代表的信号，可以使用man 7 signal命令查看关于信号的详细说明，也可以查看<a href="http://www.askiter.com/2010/linux-signals.html" unfollow>这里</a>。</p>
<p>常见用法：<br />
1、强行中止一个进程标识号为1234的进程：<br />
＃kill -9 1234</p>
<p>2、解除Linux系统的死锁<br />
在Linux中有时会发生这样一种情况：一个程序崩溃，并且处于死锁的状态。此时一般不用重新启动计算机，只需要中止(或者说是关闭)这个有问题的程序即可。当kill处于X-Window界面时，主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端，在那里中止有问题的程序。比如，如果Mozilla浏览器程序出现了锁死的情况，可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID，然后使用kill命令停止这个程序：<br />
＃kill -SIGKILL XXX<br />
其中，XXX是包含有Mozolla浏览器的程序的进程标识号。 </p>
<p>3、使用命令回收内存<br />
我们知道内存对于系统是非常重要的，回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如，使用top命令发现一个无用 (Zombie) 的进程，此时可以使用下面命令：<br />
＃kill -9 XXX<br />
其中，XXX是无用的进程标识号。<br />
然后使用下面命令：<br />
＃free<br />
此时会发现可用内存容量增加了。 </p>
<p>4、killall命令<br />
Linux下还提供了一个killall命令，可以直接使用进程的名字而不是进程标识号，例如：<br />
＃ killall httpd</p>
<p>补充：<br />
对于处于 uninterruptable sleep 状态的进程，使用 kill -9 也是杀不掉的，因为kill -9 只是发一个SIGKILL信号而已，但是进程根本不接受的。这种情况一般是要靠其父进程处理，如果父进程挂掉了，就会被init进程接管，也就是说父进程ID变成了1，这样就根本没戏了。父进程也是不能杀掉的，要等父进程处理。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/kill-usage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux 信号介绍</title>
		<link>http://www.askiter.com/2010/linux-signals.html</link>
		<comments>http://www.askiter.com/2010/linux-signals.html#comments</comments>
		<pubDate>Mon, 16 Aug 2010 13:53:22 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Signal]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=204</guid>
		<description><![CDATA[Linux的信号机制是进程之间相互传递消息的一种方法，信号全称为软中断信号，也有人称作软中断。从它的命名可以看出，它的实质和使用很象中断。所以，信号可以说是进程控制的一部分。 1、基本概念 软中断信号（signal，又简称为信号）用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号，通知进程发生了某个事件。注意，信号只是用来通知某进程发生了什么事件，并不给该进程传递任何数据。 收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类：第一种是类似中断的处理程序，对于需要处理的信号，进程可以指定处理函数，由该函数来处理。第二种方法是，忽略某个信号，对该信号不做任何处理，就象未发生过一样。第三种方法是，对该信号的处理保留系统的默认值，这种缺省操作，对大部分的信号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。 在进程表的表项中有一个软中断信号域，该域中每一位对应一个信号，当有信号发送给进程时，对应位置位。由此可以看出，进程对不同的信号可以同时保留，但对于同一个信号，进程并不知道在处理之前来过多少个。 2、信号的类型 发出信号的原因很多，这里按发出信号的原因简单分类，以了解各种信号： （1） 与进程终止相关的信号。当进程退出，或者子进程终止时，发出这类信号。 （2） 与进程例外事件相关的信号。如进程越界，或企图写一个只读的内存区域（如程序正文区），或执行一个特权指令及其他各种硬件错误。 （3） 与在系统调用期间遇到不可恢复条件相关的信号。如执行系统调用exec时，原有资源已经释放，而目前系统资源又已经耗尽。 （4） 与执行系统调用时遇到非预测错误条件相关的信号。如执行一个并不存在的系统调用。 （5） 在用户态下的进程发出的信号。如进程调用系统调用kill向其他进程发送信号。 （6） 与终端交互相关的信号。如用户关闭一个终端，或按下break键等情况。 （7） 跟踪进程执行的信号。 Linux支持的信号列表如下。很多信号是与机器的体系结构相关的，首先列出的是POSIX.1中列出的信号： 信号 值 处理动作 发出信号的原因 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- SIGHUP 1 A 终端挂起或者控制进程终止 SIGINT 2 A 键盘中断（如break键被按下） SIGQUIT 3 C 键盘的退出键被按下 SIGILL 4 C 非法指令 SIGABRT 6 C 由abort(3)发出的退出指令 SIGFPE 8 C 浮点异常 SIGKILL 9 AEF Kill信号 [...]]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/linux-tag" title="View all posts in Linux" target="_blank">Linux</a></span>的信号机制是进程之间相互传递消息的一种方法，信号全称为软中断信号，也有人称作软中断。从它的命名可以看出，它的实质和使用很象中断。所以，信号可以说是进程控制的一部分。</p>
<p>1、基本概念</p>
<p>软中断信号（signal，又简称为信号）用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号，通知进程发生了某个事件。注意，信号只是用来通知某进程发生了什么事件，并不给该进程传递任何数据。</p>
<p>收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类：第一种是类似中断的处理程序，对于需要处理的信号，进程可以指定处理函数，由该函数来处理。第二种方法是，忽略某个信号，对该信号不做任何处理，就象未发生过一样。第三种方法是，对该信号的处理保留系统的默认值，这种缺省操作，对大部分的信号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。</p>
<p>在进程表的表项中有一个软中断信号域，该域中每一位对应一个信号，当有信号发送给进程时，对应位置位。由此可以看出，进程对不同的信号可以同时保留，但对于同一个信号，进程并不知道在处理之前来过多少个。</p>
<p>2、信号的类型</p>
<p>发出信号的原因很多，这里按发出信号的原因简单分类，以了解各种信号：</p>
<p>（1） 与进程终止相关的信号。当进程退出，或者子进程终止时，发出这类信号。<br />
（2） 与进程例外事件相关的信号。如进程越界，或企图写一个只读的内存区域（如程序正文区），或执行一个特权指令及其他各种硬件错误。<br />
（3） 与在系统调用期间遇到不可恢复条件相关的信号。如执行系统调用exec时，原有资源已经释放，而目前系统资源又已经耗尽。<br />
（4） 与执行系统调用时遇到非预测错误条件相关的信号。如执行一个并不存在的系统调用。<br />
（5） 在用户态下的进程发出的信号。如进程调用系统调用kill向其他进程发送信号。<br />
（6） 与终端交互相关的信号。如用户关闭一个终端，或按下break键等情况。<br />
（7） 跟踪进程执行的信号。</p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/linux-tag" title="View all posts in Linux" target="_blank">Linux</a></span>支持的信号列表如下。很多信号是与机器的体系结构相关的，首先列出的是POSIX.1中列出的信号：</p>
<p>信号 值 处理动作 发出信号的原因<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
SIGHUP 1 A 终端挂起或者控制进程终止<br />
SIGINT 2 A 键盘中断（如break键被按下）<br />
SIGQUIT 3 C 键盘的退出键被按下<br />
SIGILL 4 C 非法指令<br />
SIGABRT 6 C 由abort(3)发出的退出指令<br />
SIGFPE 8 C 浮点异常<br />
SIGKILL 9 AEF Kill信号<br />
SIGSEGV 11 C 无效的内存引用<br />
SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道<br />
SIGALRM 14 A 由alarm(2)发出的信号<br />
SIGTERM 15 A 终止信号<br />
SIGUSR1 30,10,16 A 用户自定义信号1<br />
SIGUSR2 31,12,17 A 用户自定义信号2<br />
SIGCHLD 20,17,18 B 子进程结束信号<br />
SIGCONT 19,18,25 进程继续（曾被停止的进程）<br />
SIGSTOP 17,19,23 DEF 终止进程<br />
SIGTSTP 18,20,24 D 控制终端（tty）上按下停止键<br />
SIGTTIN 21,21,26 D 后台进程企图从控制终端读<br />
SIGTTOU 22,22,27 D 后台进程企图从控制终端写</p>
<p>下面的信号没在POSIX.1中列出，而在SUSv2列出</p>
<p>信号 值 处理动作 发出信号的原因<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
SIGBUS 10,7,10 C 总线错误(错误的内存访问)<br />
SIGPOLL A Sys V定义的Pollable事件，与SIGIO同义<br />
SIGPROF 27,27,29 A Profiling定时器到<br />
SIGSYS 12,-,12 C 无效的系统调用 (SVID)<br />
SIGTRAP 5 C 跟踪/断点捕获<br />
SIGURG 16,23,21 B Socket出现紧急条件(4.2 BSD)<br />
SIGVTALRM 26,26,28 A 实际时间报警时钟信号(4.2 BSD)<br />
SIGXCPU 24,24,30 C 超出设定的CPU时间限制(4.2 BSD)<br />
SIGXFSZ 25,25,31 C 超出设定的文件大小限制(4.2 BSD)</p>
<p>（对于SIGSYS，SIGXCPU，SIGXFSZ，以及某些机器体系结构下的SIGBUS，<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/linux-tag" title="View all posts in Linux" target="_blank">Linux</a></span>缺省的动作是A (terminate)，SUSv2 是C (terminate and dump core)）。</p>
<p>下面是其它的一些信号</p>
<p>信号 值 处理动作 发出信号的原因<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
SIGIOT 6 C IO捕获指令，与SIGABRT同义<br />
SIGEMT 7,-,7<br />
SIGSTKFLT -,16,- A 协处理器堆栈错误<br />
SIGIO 23,29,22 A 某I/O操作现在可以进行了(4.2 BSD)<br />
SIGCLD -,-,18 A 与SIGCHLD同义<br />
SIGPWR 29,30,19 A 电源故障(System V)<br />
SIGINFO 29,-,- A 与SIGPWR同义<br />
SIGLOST -,-,- A 文件锁丢失<br />
SIGWINCH 28,28,20 B 窗口大小改变(4.3 BSD, Sun)<br />
SIGUNUSED -,31,- A 未使用的信号(will be SIGSYS)</p>
<p>（在这里，- 表示信号没有实现；有三个值给出的含义为，第一个值通常在Alpha和Sparc上有效，中间的值对应i386和ppc以及sh，最后一个值对应mips。信号29在Alpha上为SIGINFO / SIGPWR ，在Sparc上为SIGLOST。）</p>
<p>处理动作一项中的字母含义如下<br />
A 缺省的动作是终止进程<br />
B 缺省的动作是忽略此信号<br />
C 缺省的动作是终止进程并进行内核映像转储（dump core）<br />
D 缺省的动作是停止进程<br />
E 信号不能被捕获<br />
F 信号不能被忽略</p>
<p>上面介绍的信号是常见系统所支持的。以表格的形式介绍了各种信号的名称、作用及其在默认情况下的处理动作。各种默认处理动作的含义是：终止程序是指进程退出；忽略该信号是将该信号丢弃，不做处理；停止程序是指程序挂起，进入停止状况以后还能重新进行下去，一般是在调试的过程中（例如ptrace系统调用）；内核映像转储是指将进程数据在内存的映像和进程在内核结构中存储的部分内容以一定格式转储到文件系统，并且进程退出执行，这样做的好处是为程序员提供了方便，使得他们可以得到进程当时执行时的数据值，允许他们确定转储的原因，并且可以调试他们的程序。</p>
<p>注意 信号SIGKILL和SIGSTOP既不能被捕捉，也不能被忽略。信号SIGIOT与SIGABRT是一个信号。可以看出，同一个信号在不同的系统中值可能不一样，所以建议最好使用为信号定义的名字，而不要直接使用信号的值。</p>
<p>在Linux中可以使用kill -l命令查看数字代表的信号，可以使用 man 7 signal 查看各信号的具体含义。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/linux-signals.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux文件查找命令find,xargs详述</title>
		<link>http://www.askiter.com/2010/usage-of-find-and-xargs.html</link>
		<comments>http://www.askiter.com/2010/usage-of-find-and-xargs.html#comments</comments>
		<pubDate>Thu, 12 Aug 2010 06:55:20 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[xargs]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=186</guid>
		<description><![CDATA[本文转自：LinuxSir.org，原文地址在这里。 前言：关于find命令 由于find具有强大的功能，所以它的选项也很多，其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS)，find命令在该文件系统中同样有效，只你具有相应的权限。 在运行一个非常消耗资源的find命令时，很多人都倾向于把它放在后台执行，因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 一、find 命令格式 1、find命令的一般形式 find pathname -options [-print -exec -ok ...] 2、find命令的参数 pathname: find命令所查找的目录路径。例如用.来表示当前目录，用/来表示系统根目录。 -print： find命令将匹配的文件输出到标准输出。 -exec： find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为&#8217;command&#8217; { } \;，注意{ }和\；之间的空格。 -ok： 和-exec的作用相同，只不过以一种更为安全的模式来执行该参数所给出的shell命令，在执行每一个命令之前，都会给出提示，让用户来确定是否执行。 3、find命令选项 -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -prune 使用这一选项可以使find命令不在当前指定的目录中查找，如果同时使用-depth选项，那么-prune将被find命令忽略。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件， &#8211; n表示文件更改时间距现在n天以内，+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项，但它们都和-m time选项。 -nogroup 查找无有效所属组的文件，即该文件所属的组在/etc/groups中不存在。 -nouser 查找无有效属主的文件，即该文件的属主在/etc/passwd中不存在。 -newer file1 ! [...]]]></description>
			<content:encoded><![CDATA[<p>本文转自：<a href="http://www.linuxsir.org/main/">LinuxSir.org</a>，原文地址在<a href="http://www.linuxsir.org/main/?q=node/137">这里</a>。</p>
<p><strong>前言：关于<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/find" title="View all posts in find" target="_blank">find</a></span>命令</strong></p>
<p>由于<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/find" title="View all posts in find" target="_blank">find</a></span>具有强大的功能，所以它的选项也很多，其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS)，find命令在该文件系统中同样有效，只你具有相应的权限。<br />
在运行一个非常消耗资源的find命令时，很多人都倾向于把它放在后台执行，因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。</p>
<p><strong>一、find 命令格式</strong></p>
<p><strong>1、find命令的一般形式</strong></p>
<p>find pathname -options [-print -<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/exec" title="View all posts in exec" target="_blank">exec</a></span> -ok ...]</p>
<p><strong>2、find命令的参数</strong></p>
<p>pathname: find命令所查找的目录路径。例如用.来表示当前目录，用/来表示系统根目录。<br />
-print： find命令将匹配的文件输出到标准输出。<br />
-<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/exec" title="View all posts in exec" target="_blank">exec</a></span>： find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为&#8217;command&#8217; {  } \;，注意{   }和\；之间的空格。<br />
-ok： 和-<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/exec" title="View all posts in exec" target="_blank">exec</a></span>的作用相同，只不过以一种更为安全的模式来执行该参数所给出的shell命令，在执行每一个命令之前，都会给出提示，让用户来确定是否执行。</p>
<p><strong>3、find命令选项</strong></p>
<p>-name<br />
按照文件名查找文件。</p>
<p>-perm<br />
按照文件权限来查找文件。</p>
<p>-prune<br />
使用这一选项可以使find命令不在当前指定的目录中查找，如果同时使用-depth选项，那么-prune将被find命令忽略。</p>
<p>-user<br />
按照文件属主来查找文件。</p>
<p>-group<br />
按照文件所属的组来查找文件。</p>
<p>-mtime -n +n<br />
按照文件的更改时间来查找文件， &#8211; n表示文件更改时间距现在n天以内，+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项，但它们都和-m time选项。</p>
<p>-nogroup<br />
查找无有效所属组的文件，即该文件所属的组在/etc/groups中不存在。</p>
<p>-nouser<br />
查找无有效属主的文件，即该文件的属主在/etc/passwd中不存在。<br />
-newer file1 ! file2 </p>
<p>查找更改时间比文件file1新但比文件file2旧的文件。<br />
-type </p>
<p>查找某一类型的文件，诸如：</p>
<p>b &#8211; 块设备文件。<br />
d &#8211; 目录。<br />
c &#8211; 字符设备文件。<br />
p &#8211; 管道文件。<br />
l &#8211; 符号链接文件。<br />
f &#8211; 普通文件。</p>
<p>-size n：[c] 查找文件长度为n块的文件，带有c时表示文件长度以字节计。<br />
-depth：在查找文件时，首先查找当前目录中的文件，然后再在其子目录中查找。<br />
-fstype：查找位于某一类型文件系统中的文件，这些文件系统类型通常可以在配置文件/etc/fstab中找到，该配置文件中包含了本系统中有关文件系统的信息。</p>
<p>-mount：在查找文件时不跨越文件系统mount点。<br />
-follow：如果find命令遇到符号链接文件，就跟踪至链接所指向的文件。<br />
-cpio：对匹配的文件使用cpio命令，将这些文件备份到磁带设备中。</p>
<p>另外,下面三个的区别:</p>
<p>     -amin n<br />
　　查找系统中最后N分钟访问的文件</p>
<p>　　-atime n<br />
　　查找系统中最后n*24小时访问的文件</p>
<p>　　-cmin n<br />
　　查找系统中最后N分钟被改变文件状态的文件</p>
<p>　　-ctime n<br />
　　查找系统中最后n*24小时被改变文件状态的文件</p>
<p>   　-mmin n<br />
　　查找系统中最后N分钟被改变文件数据的文件</p>
<p>　　-mtime n<br />
　　查找系统中最后n*24小时被改变文件数据的文件</p>
<p><strong>4、使用exec或ok来执行shell命令</strong></p>
<p>使用find时，只要把想要的操作写在一个文件里，就可以用exec来配合find查找，非常方便。</p>
<p>在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前，最好先用ls命令看一下，确认它们是所要删除的文件。</p>
<p>exec选项后面跟随着所要执行的命令或脚本，然后是一对儿{ }，一个空格和一个\，最后是一个分号。为了使用exec选项，必须要同时使用print选项。如果验证一下find命令，会发现该命令只输出从当前路径起的相对路径及文件名。</p>
<p>例如：为了用ls -l命令列出所匹配到的文件，可以把ls -l命令放在find命令的-exec选项中</p>
<p># find . -type f -exec ls -l {  } \;<br />
-rw-r&#8211;r&#8211;    1 root     root        34928 2003-02-25  ./conf/httpd.conf<br />
-rw-r&#8211;r&#8211;    1 root     root        12959 2003-02-25  ./conf/magic<br />
-rw-r&#8211;r&#8211;    1 root     root          180 2003-02-25  ./conf.d/README</p>
<p>上面的例子中，find命令匹配到了当前目录下的所有普通文件，并在-exec选项中使用ls -l命令将它们列出。<br />
在/logs目录中查找更改时间在5日以前的文件并删除它们：</p>
<p>$ find logs -type f -mtime +5 -exec rm {  } \;</p>
<p>记住：在shell中用任何方式删除文件之前，应当先查看相应的文件，一定要小心！当使用诸如mv或rm命令时，可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。</p>
<p>在下面的例子中， find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件，并删除它们，只不过在删除之前先给出提示。</p>
<p>$ find . -name &#8220;*.conf&#8221;  -mtime +5 -ok rm {  } \;<br />
< rm ... ./conf/httpd.conf > ? n</p>
<p>按y键删除文件，按n键不删除。</p>
<p>任何形式的命令都可以在-exec选项中使用。</p>
<p>在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件，例如passwd、passwd.old、passwd.bak，然后执行grep命令看看在这些文件中是否存在一个sam用户。</p>
<p># find /etc -name &#8220;passwd*&#8221; -exec grep &#8220;sam&#8221; {  } \;<br />
sam:x:501:501::/usr/sam:/bin/bash<br />
<span id="more-186"></span><br />
<strong>二、find命令的例子</strong></p>
<p><strong>1、查找当前用户主目录下的所有文件</strong>：</p>
<p>下面两种方法都可以使用<br />
$ find $HOME -print<br />
$ find ~ -print</p>
<p><strong>2、让当前目录中文件属主具有读、写权限，并且文件所属组的用户和其他用户具有读权限的文件</strong>；</p>
<p>$ find . -type f -perm 644 -exec ls -l {  } \;</p>
<p><strong>3、为了查找系统中所有文件长度为0的普通文件，并列出它们的完整路径</strong>；</p>
<p>$ find / -type f -size 0 -exec ls -l {  } \;</p>
<p><strong>4、查找/var/logs目录中更改时间在7日以前的普通文件，并在删除之前询问它们</strong>；</p>
<p>$ find /var/logs -type f -mtime +7 -ok rm {  } \;</p>
<p><strong>5、为了查找系统中所有属于root组的文件</strong>；</p>
<p>$find . -group root -exec ls -l {  } \;<br />
-rw-r&#8211;r&#8211;    1 root     root          595 10月 31 01:09 ./fie1</p>
<p><strong>6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件</strong></p>
<p>该命令只检查三位数字，所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ，才能使用下面这个命令</p>
<p>$ find . -name &#8220;admin.log[0-9][0-9][0-9]&#8221; -atime -7  -ok rm {  } \;<br />
< rm ... ./admin.log001 > ? n<br />
< rm ... ./admin.log002 > ? n<br />
< rm ... ./admin.log042 > ? n<br />
< rm ... ./admin.log942 > ? n</p>
<p><strong>7、为了查找当前文件系统中的所有目录并排序</strong>；</p>
<p>$ find . -type d | sort</p>
<p><strong>8、为了查找系统中所有的rmt磁带设备</strong>；</p>
<p>$ find /dev/rmt -print</p>
<p><strong>三、<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/xargs" title="View all posts in xargs" target="_blank">xargs</a></span></strong></p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/xargs" title="View all posts in xargs" target="_blank">xargs</a></span> &#8211; build and execute command lines from standard input</p>
<p>在使用find命令的-exec选项处理匹配到的文件时， find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制，这样在find命令运行几分钟之后，就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在，特别是与find命令一起使用。</p>
<p>find命令把匹配到的文件传递给xargs命令，而xargs命令每次只获取一部分文件而不是全部，不像-exec选项那样。这样它可以先处理最先获取的一部分文件，然后是下一批，并如此继续下去。</p>
<p>在有些系统中，使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程，并非将匹配到的文件全部作为参数一次执行；这样在有些情况下就会出现进程过多，系统性能下降的问题，因而效率不高；</p>
<p>而使用xargs命令则只有一个进程。另外，在使用xargs命令时，究竟是一次获取所有的参数，还是分批取得参数，以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。</p>
<p>来看看xargs命令是如何同find命令一起使用的，并给出一些例子。</p>
<p>下面的例子查找系统中的每一个普通文件，然后使用xargs命令来测试它们分别属于哪类文件</p>
<p>#find . -type f -print | xargs file<br />
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text<br />
./.kde/Autostart/.directory:      ISO-8859 text\<br />
&#8230;&#8230;</p>
<p>在整个系统中查找内存信息转储文件(core dump) ，然后把结果保存到/tmp/core.log 文件中：</p>
<p>$ find / -name &#8220;core&#8221; -print | xargs echo &#8220;&#8221; >/tmp/core.log</p>
<p>上面这个执行太慢，改成在当前目录下查找</p>
<p>#find . -name &#8220;file*&#8221; -print | xargs echo &#8220;&#8221; > /temp/core.log<br />
# cat /temp/core.log<br />
./file6</p>
<p>在当前目录下查找所有用户具有读、写和执行权限的文件，并收回相应的写权限：</p>
<p># ls -l<br />
drwxrwxrwx    2 sam      adm          4096 10月 30 20:14 file6<br />
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 http3.conf<br />
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 httpd.conf</p>
<p># find . -perm -7 -print | xargs chmod o-w<br />
# ls -l<br />
drwxrwxr-x    2 sam      adm          4096 10月 30 20:14 file6<br />
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf<br />
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf</p>
<p>用grep命令在所有的普通文件中搜索hostname这个词：</p>
<p># find . -type f -print | xargs grep &#8220;hostname&#8221;<br />
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the<br />
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames<br />
on your</p>
<p>用grep命令在当前目录下的所有普通文件中搜索hostnames这个词：</p>
<p># find . -name \* -type f -print | xargs grep &#8220;hostnames&#8221;<br />
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the<br />
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames<br />
on your</p>
<p>注意，在上面的例子中， \用来取消find命令中的*在shell中的特殊含义。</p>
<p>find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。</p>
<p><strong>四、find 命令的参数</strong></p>
<p>下面是find一些常用参数的例子，有用到的时候查查就行了，像上面前几个贴子，都用到了其中的的一些参数，也可以用man或查看论坛里其它贴子有find的命令手册</p>
<p><strong>1、使用name选项</strong></p>
<p>文件名选项是find命令最常用的选项，要么单独使用该选项，要么和其他选项一起使用。</p>
<p>可以使用某种文件名模式来匹配文件，记住要用引号将文件名模式引起来。</p>
<p>不管当前路径是什么，如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件，使用~作为 &#8216;pathname&#8217;参数，波浪号~代表了你的$HOME目录。<br />
$ find ~ -name &#8220;*.txt&#8221; -print</p>
<p>想要在当前目录及子目录中查找所有的‘ *.txt’文件，可以用：<br />
$ find . -name &#8220;*.txt&#8221; -print</p>
<p>想要的当前目录及子目录中查找文件名以一个大写字母开头的文件，可以用：<br />
$ find . -name &#8220;[A-Z]*&#8221; -print</p>
<p>想要在/etc目录中查找文件名以host开头的文件，可以用：<br />
$ find /etc -name &#8220;host*&#8221; -print</p>
<p>想要查找$HOME目录中的文件，可以用：<br />
$ find ~ -name &#8220;*&#8221; -print 或find . -print</p>
<p>要想让系统高负荷运行，就从根目录开始查找所有的文件。<br />
$ find / -name &#8220;*&#8221; -print</p>
<p>如果想在当前目录查找文件名以两个小写字母开头，跟着是两个数字，最后是.txt的文件，下面的命令就能够返回名为ax37.txt的文件：<br />
$find . -name &#8220;[a-z][a-z][0--9][0--9].txt&#8221; -print</p>
<p><strong>2、用perm选项</strong></p>
<p>按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。</p>
<p>如在当前目录下查找文件权限位为755的文件，即文件属主可以读、写、执行，其他用户可以读、执行的文件，可以用：<br />
$ find . -perm 755 -print</p>
<p>还有一种表达方法：在八进制数字前面要加一个横杠-，表示都匹配，如-007就相当于777，-006相当于666<br />
# ls -l<br />
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf<br />
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf<br />
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf<br />
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam<br />
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp</p>
<p># find . -perm 006<br />
# find . -perm -006<br />
./sam<br />
./httpd1.conf<br />
./temp</p>
<p>-perm mode:文件许可正好符合mode<br />
-perm +mode:文件许可部分符合mode<br />
-perm -mode: 文件许可完全符合mode</p>
<p><strong>3、忽略某个目录</strong></p>
<p>如果在查找文件时希望忽略某个目录，因为你知道那个目录中没有你所要查找的文件，那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心，因为如果你同时使用了-depth选项，那么-prune选项就会被find命令忽略。</p>
<p>如果希望在/apps目录下查找文件，但不希望在/apps/bin目录下查找，可以用：<br />
$ find /apps -path &#8220;/apps/bin&#8221; -prune -o -print</p>
<p><strong>4、使用find查找文件的时候怎么避开某个文件目录</strong></p>
<p>比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件<br />
find /usr/sam -path &#8220;/usr/sam/dir1&#8243; -prune -o -print </p>
<p>find [-path ..] [expression] 在路径列表的后面的是表达式</p>
<p>-path &#8220;/usr/sam&#8221; -prune -o -print 是 -path &#8220;/usr/sam&#8221; -a -prune -o<br />
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值，与 shell 的 &#038;&#038; 和 || 类似如果 -path &#8220;/usr/sam&#8221; 为真，则求值 -prune , -prune 返回真，与逻辑表达式为真；否则不求值 -prune，与逻辑表达式为假。如果 -path &#8220;/usr/sam&#8221; -a -prune 为假，则求值 -print ，-print返回真，或逻辑表达式为真；否则不求值 -print，或逻辑表达式为真。</p>
<p>这个表达式组合特例可以用伪码写为<br />
if -path &#8220;/usr/sam&#8221;  then<br />
          -prune<br />
else<br />
          -print</p>
<p>避开多个文件夹<br />
find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print</p>
<p>圆括号表示表达式的结合。</p>
<p>\ 表示引用，即指示 shell 不对后面的字符作特殊解释，而留给 find 命令去解释其意义。</p>
<p>查找某一确定文件，-name等选项加在-o 之后<br />
#find /usr/sam  \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name &#8220;temp&#8221; -print</p>
<p><strong>5、使用user和nouser选项</strong></p>
<p>按文件属主查找文件，如在$HOME目录中查找文件属主为sam的文件，可以用：<br />
$ find ~ -user sam -print</p>
<p>在/etc目录下查找文件属主为uucp的文件：<br />
$ find /etc -user uucp -print</p>
<p>为了查找属主帐户已经被删除的文件，可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时，不必给出用户名； find命令能够为你完成相应的工作。</p>
<p>例如，希望在/home目录下查找所有的这类文件，可以用：<br />
$ find /home -nouser -print</p>
<p><strong>6、使用group和nogroup选项</strong></p>
<p>就像user和nouser选项一样，针对文件所属于的用户组， find命令也具有同样的选项，为了在/apps目录下查找属于gem用户组的文件，可以用：<br />
$ find /apps -group gem -print</p>
<p>要查找没有有效所属用户组的所有文件，可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件<br />
$ find / -nogroup-print</p>
<p><strong>7、按照更改时间或访问时间等查找文件</strong></p>
<p>如果希望按照更改时间来查找文件，可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了，很有可能某一个文件的长度在此期间增长迅速，这时就可以用mtime选项来查找这样的文件。</p>
<p>用减号-来限定更改时间在距今n日以内的文件，而用加号+来限定更改时间在距今n日以前的文件。</p>
<p>希望在系统根目录下查找更改时间在5日以内的文件，可以用：<br />
$ find / -mtime -5 -print</p>
<p>为了在/var/adm目录下查找更改时间在3日以前的文件，可以用：<br />
$ find /var/adm -mtime +3 -print</p>
<p><strong>8、查找比某个文件新或旧的文件</strong></p>
<p>如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件，可以使用-newer选项。它的一般形式为：<br />
newest_file_name ! oldest_file_name</p>
<p>其中，！是逻辑非符号。</p>
<p>查找更改时间比文件sam新但比文件temp旧的文件：</p>
<p>例：有两个文件</p>
<p>-rw-r&#8211;r&#8211;    1 sam      adm             0 10月 31 01:07 fiel<br />
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf<br />
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf<br />
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam<br />
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp</p>
<p># find -newer httpd1.conf  ! -newer temp -ls<br />
1077669    0 -rwxrwxr-x   2 sam      adm             0 10月 31 01:01 ./httpd.conf<br />
1077671    4 -rw-rw-rw-   1 root     root         2792 10月 31 20:19 ./temp<br />
1077673    0 -rw-r&#8211;r&#8211;   1 sam      adm             0 10月 31 01:07 ./fiel</p>
<p>查找更改时间在比temp文件新的文件：<br />
$ find . -newer temp -print</p>
<p><strong>9、使用type选项</strong></p>
<p>在/etc目录下查找所有的目录，可以用：<br />
$ find /etc -type d -print</p>
<p>在当前目录下查找除目录以外的所有类型的文件，可以用：<br />
$ find . ! -type d -print</p>
<p>在/etc目录下查找所有的符号链接文件，可以用<br />
$ find /etc -type l -print</p>
<p><strong>10、使用size选项</strong></p>
<p>可以按照文件长度来查找文件，这里所指的文件长度既可以用块（block）来计量，也可以用字节来计量。以字节计量文件长度的表达形式为N c；以块计量文件长度只用数字表示即可。</p>
<p>在按照文件长度查找文件时，一般使用这种以字节表示的文件长度，在查看文件系统的大小，因为这时使用块来计量更容易转换。<br />
在当前目录下查找文件长度大于1 M字节的文件：<br />
$ find . -size +1000000c -print</p>
<p>在/home/apache目录下查找文件长度恰好为100字节的文件：<br />
$ find /home/apache -size 100c -print</p>
<p>在当前目录下查找长度超过10块的文件（一块等于512字节）：<br />
$ find . -size +10 -print</p>
<p><strong>11、使用depth选项</strong></p>
<p>在使用find命令时，可能希望先匹配所有的文件，再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是，当在使用find命令向磁带上备份文件系统时，希望首先备份所有的文件，其次再备份子目录中的文件。</p>
<p>在下面的例子中， find命令从文件系统的根目录开始，查找一个名为CON.FILE的文件。</p>
<p>它将首先匹配所有的文件然后再进入子目录中查找。<br />
$ find / -name &#8220;CON.FILE&#8221; -depth -print</p>
<p><strong>12、使用mount选项</strong></p>
<p>在当前的文件系统中查找文件（不进入其他文件系统），可以使用find命令的mount选项。</p>
<p>从当前目录开始查找位于本文件系统中文件名以XC结尾的文件：<br />
$ find . -name &#8220;*.XC&#8221; -mount -print</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/usage-of-find-and-xargs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>中文网络协议图</title>
		<link>http://www.askiter.com/2010/network-protocols-map-cn.html</link>
		<comments>http://www.askiter.com/2010/network-protocols-map-cn.html#comments</comments>
		<pubDate>Wed, 11 Aug 2010 15:01:05 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[Protocols]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=175</guid>
		<description><![CDATA[学习网络技术，研究网络分析，都必须学习好网络协议，如果有一份详细的网络协议图，会非常有帮助的。下面是我在科来软件看到的两份网络协议图，觉得很不错，转到这里，希望大家有所帮助。 中文TCP/IP网络协议图(点击图片看大图) 中文网络协议图(点击图片下载pdf格式协议图)]]></description>
			<content:encoded><![CDATA[<p>学习网络技术，研究网络分析，都必须学习好网络协议，如果有一份详细的网络协议图，会非常有帮助的。下面是我在<a href="http://www.colasoft.com.cn">科来软件</a>看到的两份网络协议图，觉得很不错，转到这里，希望大家有所帮助。<br />
<strong>中文TCP/IP网络协议图(点击图片看大图)</strong><br />
<a href="http://www.askiter.com/wp-content/uploads/2010/08/TCP-IP.gif"><img class="alignnone size-medium wp-image-177" title="TCP-IP" src="http://www.askiter.com/wp-content/uploads/2010/08/TCP-IP-211x300.gif" alt="" width="211" height="300" /></a></p>
<p><strong>中文网络协议图(点击图片下载pdf格式协议图)</strong><br />
<a href="http://www.askiter.com/wp-content/uploads/2010/08/network_protocol_map.zip"><img src="http://www.askiter.com/wp-content/uploads/2010/08/network__protocol__map-300x187.png" alt="" title="network__protocol__map" width="300" height="187" class="alignnone size-medium wp-image-180" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/network-protocols-map-cn.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IIS 默认启用父路径功能</title>
		<link>http://www.askiter.com/2010/enable-iis-parent-paths-as-default.html</link>
		<comments>http://www.askiter.com/2010/enable-iis-parent-paths-as-default.html#comments</comments>
		<pubDate>Wed, 11 Aug 2010 09:59:50 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=168</guid>
		<description><![CDATA[IIS5.1中，创建的站点，默认就是启用父路径的，也就是说可以在asp代码中使用类似 ../images/logo.gif 这样的引用方式。但是在IIS 6以及IIS 7中，出于安全考虑，父路径功能默认是关闭的，也就是说新创建的站点是不启用父路径功能的。 为了使得IIS6/IIS7默认启用父路径功能，可以在CMD窗口中执行以下命令： %windir%\system32\inetsrv\appcmd set config -section:asp -enableParentPaths:true 这样，新创建的站点默认就会启用父路径支持了。]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/iis" title="View all posts in IIS" target="_blank">IIS</a></span>5.1中，创建的站点，默认就是启用父路径的，也就是说可以在asp代码中使用类似 ../images/logo.gif 这样的引用方式。但是在<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/iis" title="View all posts in IIS" target="_blank">IIS</a></span> 6以及<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/iis" title="View all posts in IIS" target="_blank">IIS</a></span> 7中，出于安全考虑，父路径功能默认是关闭的，也就是说新创建的站点是不启用父路径功能的。</p>
<p>为了使得IIS6/IIS7默认启用父路径功能，可以在CMD窗口中执行以下命令：<br />
%windir%\system32\inetsrv\appcmd set config -section:asp -enableParentPaths:true</p>
<p>这样，新创建的站点默认就会启用父路径支持了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/enable-iis-parent-paths-as-default.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 DDoS deflate 防御和减轻DDoS攻击</title>
		<link>http://www.askiter.com/2010/anti-ddos-with-ddos-deflate.html</link>
		<comments>http://www.askiter.com/2010/anti-ddos-with-ddos-deflate.html#comments</comments>
		<pubDate>Wed, 11 Aug 2010 04:48:48 +0000</pubDate>
		<dc:creator>咖啡豆</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[DDoS]]></category>

		<guid isPermaLink="false">http://www.askiter.com/?p=166</guid>
		<description><![CDATA[DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址，在检测到某个结点超过预设的限制时，该程序会通过APF或IPTABLES禁止或阻挡这些IP. 程序的官方网站：http://deflate.medialayer.com/ 安装 wget http://www.inetbase.com/scripts/ddos/install.sh chmod 0700 install.sh ./install.sh 配置 配置文件是 /usr/local/ddos/ddos.conf ，默认有如下配置 FREQ=1 NO_OF_CONNECTIONS=150 APF_BAN=1 KILL=1 EMAIL_TO=”root” BAN_PERIOD=600IP 地址白名单：/usr/local/ddos/ignore.ip.list 卸载 wget http://www.inetbase.com/scripts/ddos/uninstall.ddos chmod 0700 uninstall.ddos ./uninstall.ddos 配置参数的解释： FREQ=1 ;检测时间间隔，默认是一分钟,如果修改这个要重新设置Cron Job NO_OF_CONNECTIONS=150 ;最大连接数,超过这个就会禁止IP APF_BAN=1 ;使用APF设置为1,使用iptables设置为0 KILL=1 ;是否禁止IP EMAIL_TO=”root” ;邮件通知,写上接收邮件的邮箱 BAN_PERIOD=600 ;禁止IP时长,默认是600秒 推荐APF_BAN=1改成APF_BAN=0,用iptables 来阻挡IP. 经过实际测试这个脚本还是很好用的,对于尽早发现DDoS攻击,减轻攻击都有很大作用。]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/ddos" title="View all posts in DDoS" target="_blank">DDoS</a></span> deflate是一款免费的用来防御和减轻<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/ddos" title="View all posts in DDoS" target="_blank">DDoS</a></span>攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址，在检测到某个结点超过预设的限制时，该程序会通过APF或IPTABLES禁止或阻挡这些IP.</p>
<p>程序的官方网站：http://deflate.medialayer.com/</p>
<p><strong>安装</strong><br />
wget http://www.inetbase.com/scripts/ddos/install.sh<br />
chmod 0700 install.sh<br />
./install.sh</p>
<p><strong>配置</strong><br />
配置文件是 /usr/local/ddos/ddos.conf ，默认有如下配置<br />
FREQ=1<br />
NO_OF_CONNECTIONS=150<br />
APF_BAN=1<br />
KILL=1<br />
EMAIL_TO=”root”<br />
BAN_PERIOD=600IP</p>
<p>地址白名单：/usr/local/ddos/ignore.ip.list</p>
<p><strong>卸载</strong><br />
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos<br />
chmod 0700 uninstall.ddos<br />
./uninstall.ddos</p>
<p>配置参数的解释：<br />
FREQ=1 ;检测时间间隔，默认是一分钟,如果修改这个要重新设置Cron Job<br />
NO_OF_CONNECTIONS=150 ;最大连接数,超过这个就会禁止IP<br />
APF_BAN=1 ;使用APF设置为1,使用iptables设置为0<br />
KILL=1 ;是否禁止IP<br />
EMAIL_TO=”root” ;邮件通知,写上接收邮件的邮箱<br />
BAN_PERIOD=600 ;禁止IP时长,默认是600秒<br />
推荐APF_BAN=1改成APF_BAN=0,用iptables 来阻挡IP.<br />
经过实际测试这个脚本还是很好用的,对于尽早发现<span class='wp_keywordlink_affiliate'><a href="http://www.askiter.com/tag/ddos" title="View all posts in DDoS" target="_blank">DDoS</a></span>攻击,减轻攻击都有很大作用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.askiter.com/2010/anti-ddos-with-ddos-deflate.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

