<?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>为IT服务 [龙飞的博客] &#187; linux相关</title>
	<atom:link href="http://226617.cn/archives/category/just-technology/about-linux/feed" rel="self" type="application/rss+xml" />
	<link>http://226617.cn</link>
	<description>什么都略懂一点，生活就多彩一些</description>
	<lastBuildDate>Sun, 08 Jan 2012 15:58:02 +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>centos6下挂载nfs</title>
		<link>http://226617.cn/archives/937.htm</link>
		<comments>http://226617.cn/archives/937.htm#comments</comments>
		<pubDate>Fri, 07 Oct 2011 12:17:25 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[只谈技术]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nfs]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=937</guid>
		<description><![CDATA[其实和以前的centos5没啥区别，只不过centos的安装是选mini的还真够mini的，啥都要自己yum。这不连nfs都默认不装了。 mount -t nfs 192.168.1.1:/nfs1 /mnt/nfs 直接提示 mount: wrong fs type, bad option, bad superblock o... ]]></description>
			<content:encoded><![CDATA[<p>其实和以前的centos5没啥区别，只不过centos的安装是选mini的还真够mini的，啥都要自己yum。这不连nfs都默认不装了。<br />
mount -t nfs 192.168.1.1:/nfs1 /mnt/nfs<br />
直接提示</p>
<pre>mount: wrong fs type, bad option, bad superblock on 192.168.1.1:/nfs1,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.&lt;type&gt; helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so</pre>
<p>需要安装下相关的软件包<br />
yum -y install nfs-utils nfs-utils-lib</p>
<p>这时再尝试依然会出错</p>
<pre>mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified</pre>
<p>原因是rpcbind没启动<br />
chkconfig &#8211;list看见是默认启动的，应该是刚装后没启动，手工启动下。<br />
/etc/rc.d/init.d/rpcbind start<br />
然后再<br />
mount -t nfs 192.168.1.1:/nfs1 /mnt/nfs 就正常了</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/937.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关闭centos6的ipv6</title>
		<link>http://226617.cn/archives/934.htm</link>
		<comments>http://226617.cn/archives/934.htm#comments</comments>
		<pubDate>Fri, 07 Oct 2011 08:00:47 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[ipv6]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=934</guid>
		<description><![CDATA[新增文件 /etc/modprobe.d/ipv6-off.conf  内容： alias net-pf-10 off alias ipv6 off 编辑 /etc/sysconfig/network 增加内容： NETWORKING_IPV6=no 关闭自动启动ip6tables chkconfig ip6tables off 重启即... ]]></description>
			<content:encoded><![CDATA[<p>新增文件 <strong>/etc/modprobe.d/ipv6-off.conf</strong>  内容：</p>
<div>
<pre>alias net-pf-10 off
alias ipv6 off</pre>
</div>
<p>编辑 <strong>/etc/sysconfig/network</strong> 增加内容：</p>
<div>
<pre>NETWORKING_IPV6=no</pre>
</div>
<p>关闭自动启动ip6tables</p>
<p><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">chkconfig ip6tables off</span><br />
重启即可</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/934.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>克隆centos6虚拟机后网络无法启动问题解决</title>
		<link>http://226617.cn/archives/929.htm</link>
		<comments>http://226617.cn/archives/929.htm#comments</comments>
		<pubDate>Fri, 07 Oct 2011 05:57:24 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[只谈技术]]></category>
		<category><![CDATA[centos]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=929</guid>
		<description><![CDATA[在克隆centos6的虚拟机后会发现启动网络的时候有报错 Bringing up interface eth0:  Device eth0 does not seem to be present, delaying initialization. 查看配置文件发现并没有像centos5那样克隆后会把原先的ifcfg-eth0备... ]]></description>
			<content:encoded><![CDATA[<p>在克隆centos6的虚拟机后会发现启动网络的时候有报错</p>
<p>Bringing up interface eth0:  Device eth0 does not seem to be present, delaying initialization.</p>
<p>查看配置文件发现并没有像centos5那样克隆后会把原先的ifcfg-eth0备份成ifcfg-eth0.bak然后生成新的初始化的ifcfg-eth0</p>
<p>上网查了查资料，原来centos6会对mac地址和网卡设备名进行绑定，克隆前网卡的mac地址已经绑定了eth0，在克隆后生成的新的mac地址被顺延绑定到了eth1，但是我们又没有对应eth1</p>
<p>的配置文件所以启动就提示出错了。</p>
<p>只需要编辑</p>
<p>vi /etc/udev/rules.d/70-persistent-net.rules</p>
<p>将原来eth0那行删除，把新生成的eth1那行里面的eth1改成eth0 然后修改或者删除下配置文件里面的mac地址和uuid和最后重启下即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/929.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>完美解决nginx环境下服务器上多站点WebShell访问限制问题</title>
		<link>http://226617.cn/archives/887.htm</link>
		<comments>http://226617.cn/archives/887.htm#comments</comments>
		<pubDate>Wed, 06 Jul 2011 01:26:57 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[nginx相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[open_basedir]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=887</guid>
		<description><![CDATA[完美解决nginx环境下服务器上多站点WebShell访问限制问题 http://www.discuz.net/thread-1497466-1-1.html wget http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz tar zxv... ]]></description>
			<content:encoded><![CDATA[<p>完美解决nginx环境下服务器上多站点WebShell访问限制问题</p>
<p>http://www.discuz.net/thread-1497466-1-1.html</p>
<p><code><br />
wget http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror<br />
wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz<br />
tar zxvf php-5.2.10.tar.gz<br />
gzip -cd php-5.2.10-fpm-0.5.11.diff.gz | patch -d php-5.2.10 -p1<br />
cd php-5.2.10/<br />
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-ftp --without-pear<br />
</code><br />
<code><br />
vi main/fopen_wrappers.c<br />
</code><br />
<code><br />
/* {{{ php_check_open_basedir<br />
*/<br />
PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC)<br />
{<br />
/* Only check when open_basedir is available */<br />
if (PG(open_basedir) &#038;&#038; *PG(open_basedir)) {<br />
char *pathbuf;<br />
char *ptr;<br />
char *end; </p>
<p>下面加上：<br />
char *env_document_root = sapi_getenv("DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT")-1 TSRMLS_CC);<br />
if (php_check_specific_open_basedir(ptr, path TSRMLS_CC) == 0) {<br />
efree(env_document_root);<br />
return 0;<br />
}<br />
</code></p>
<p>然后保存，退出。</p>
<p>php.in的open_basedir配置:<br />
修改：<br />
;open_basedir =<br />
为<br />
open_basedir = &#8220;/tmp/:/var/tmp/&#8221; </p>
<p>重启<br />
/usr/local/php/sbin/php-fpm restart </p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/887.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pureftpd如何刷新用户目录已使用的总容量</title>
		<link>http://226617.cn/archives/868.htm</link>
		<comments>http://226617.cn/archives/868.htm#comments</comments>
		<pubDate>Wed, 08 Sep 2010 02:36:38 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[软件相关]]></category>
		<category><![CDATA[pureftpd]]></category>
		<category><![CDATA[quota]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=868</guid>
		<description><![CDATA[今天一个部门打电话来说文件传不上ftp，看了下提示是空间满了，结果扫描了下实际容量似乎没满，感觉是quota的识别容量错了。 说实话这pureftpd用的还很少在安装目录里面逛了圈发现了pure-quot... ]]></description>
			<content:encoded><![CDATA[<p>今天一个部门打电话来说文件传不上ftp，看了下提示是空间满了，结果扫描了下实际容量似乎没满，感觉是quota的识别容量错了。<br />
说实话这pureftpd用的还很少在安装目录里面逛了圈发现了pure-quotacheck这个命令，应该就是了。<br />
试了试使用格式如下：<br />
/usr/local/pureftpd/sbin/pure-quotacheck -u www -d /www/aaa.com</p>
<p>-u 是你指定pure-quotacheck运行时以系统的什么用户去扫描<br />
-d 就是你ftp站点的目录</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/868.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RHEL5/CentOS5 上支持 Ext4</title>
		<link>http://226617.cn/archives/861.htm</link>
		<comments>http://226617.cn/archives/861.htm#comments</comments>
		<pubDate>Wed, 04 Aug 2010 07:24:27 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[ext4]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=861</guid>
		<description><![CDATA[根据我以前的测试 Ext4 的性能好过 Ext3,在 RHEL5 上的 2.6.18-110 也有加入 Ext4 了。但默认没有让我们使用，怎么样才能不重起，能使用这个啦。 其实我们只要加入一个包e4fsprogs 就行，它其实和 e2fs... ]]></description>
			<content:encoded><![CDATA[<p>根据我以前的测试 Ext4 的性能好过 Ext3,在 RHEL5 上的 2.6.18-110 也有加入 Ext4 了。但默认没有让我们使用，怎么样才能不重起，能使用这个啦。<br />
其实我们只要加入一个包e4fsprogs 就行，它其实和 e2fsprogs 是一样的功能，这 RHEL-6 中，会变成一个默认的包的。所以我们目前还只能使用这个包来调整和设置Ext4.</p>
<p><code>yum -y install e4fsprogs</code></p>
<p>在 RHEL 和 Centos5 中使用 Ext4 前，很多想可能想先给现有的文件系统转换成 Ext4 ，只要运行下面的命令就行了</p>
<p><code>tune4fs -O extents,uninit_bg,dir_index,flex_bg /dev/sdb1</code></p>
<p> 在重起前，我还要让内核支持 Ext4 的文件系统，需要修改 initrd 的文件本身的内容。如下命令来生成 支持 Ext4 的 initrd。</p>
<p><code>mkinitrd --with=ext4 --with=ext3 -f /boot/initrd-2.6.18-194.8.1.el5.img 2.6.18-194.8.1</code></p>
<p>转载自：扶凯[http://www.php-oa.com] </p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/861.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php开启open_basedir后启用eaccelerator时File() on line 0报错解决</title>
		<link>http://226617.cn/archives/847.htm</link>
		<comments>http://226617.cn/archives/847.htm#comments</comments>
		<pubDate>Mon, 14 Jun 2010 05:40:26 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[File()]]></category>
		<category><![CDATA[line 0]]></category>
		<category><![CDATA[open_basedir]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=847</guid>
		<description><![CDATA[open_basedir是php提升安全性的重要功能，eaccelerator是提速php的扩展模块，但是似乎默认环境下他们2一起用只要有require就会造成大量的php错误。 PHP Warning: Unknown: open_basedir restriction in effect. File() is ... ]]></description>
			<content:encoded><![CDATA[<p>open_basedir是php提升安全性的重要功能，eaccelerator是提速php的扩展模块，但是似乎默认环境下他们2一起用只要有require就会造成大量的php错误。</p>
<p><code><br />
PHP Warning:  Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (/www/:/tmp/) in Unknown on line 0<br />
</code></p>
<p>要解决这个问题的话在编译eaccelerator时 加上一个参数就行 &#8211;without-eaccelerator-use-inode<br />
官方也说将在0.9.6.1的下一个release中默认启用这个参数。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/847.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下如何在一台机器上安装多个mysql实例</title>
		<link>http://226617.cn/archives/828.htm</link>
		<comments>http://226617.cn/archives/828.htm#comments</comments>
		<pubDate>Mon, 26 Apr 2010 17:14:31 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[mysql相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[只谈技术]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=828</guid>
		<description><![CDATA[最近再做个mysql一从多主的配置，需要在一台机器上安装多个mysql。 起先是按照复制了多了mysql 同时起，在琢磨如何做启动脚本的时候发现support-files目录下有个mysqld_multi.server文件，一查发现原... ]]></description>
			<content:encoded><![CDATA[<p>最近再做个mysql一从多主的配置，需要在一台机器上安装多个mysql。<br />
起先是按照复制了多了mysql 同时起，在琢磨如何做启动脚本的时候发现support-files目录下有个mysqld_multi.server文件，一查发现原来是现成的多实例管理工具。<br />
首先得新建个data目录给新的实例，可以把原来的data目录复制个新的 只需要mysql库，也可以用工具部属个</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">./scripts/mysql_install_db --basedir=/usr/local/mysql3307 --datadir=/mysql/mysql3307/data --user=mysql</pre></td></tr></table></div>

<p>然后修改下my.cnf<br />
主要增加</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="mysql" style="font-family:monospace;"><span style="color: #FF00FF;">&#91;</span>mysqld_multi<span style="color: #FF00FF;">&#93;</span>
mysqld <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>usr<span style="color: #CC0099;">/</span><span style="color: #990099; font-weight: bold;">local</span><span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span><span style="color: #000099;">bin</span><span style="color: #CC0099;">/</span>mysqld_safe
mysqladmin <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>usr<span style="color: #CC0099;">/</span><span style="color: #990099; font-weight: bold;">local</span><span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span><span style="color: #000099;">bin</span><span style="color: #CC0099;">/</span>mysqladmin
<span style="color: #000099;">user</span> <span style="color: #CC0099;">=</span> shutdown
<span style="color: #000099;">password</span> <span style="color: #CC0099;">=</span> <span style="color: #008080;">123456</span>
<span style="color: #000099;">log</span> <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span>mysqld_multi.<span style="color: #000099;">log</span></pre></td></tr></table></div>

<p>然后把原来的 [mysqld] 改为 [mysqld1]<br />
在新增新的实例配置</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="mysql" style="font-family:monospace;"><span style="color: #FF00FF;">&#91;</span>mysqld2<span style="color: #FF00FF;">&#93;</span>
port <span style="color: #CC0099;">=</span> <span style="color: #008080;">3307</span>
socket <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>tmp<span style="color: #CC0099;">/</span>mysql3307.sock
datadir <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>storage<span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span>data3307
............
............</pre></td></tr></table></div>

<p>然后把 mysqld_multi.server 做成启动服务</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">cp ./support-files/mysqld_multi.server /etc/rc.d/init.d/mysqld
chown root:root /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 3 mysqld on
chkconfig --level 5 mysqld on</pre></td></tr></table></div>

<p>启动和关闭全部mysql实例<br />
启动：service mysqld start<br />
关闭：service mysqld stop</p>
<p>对单台数据库的启动和关闭<br />
启动： service mysqld start 1<br />
关闭： service mysqld stop 1</p>
<p>也可以同时启动和关闭多个数据库实例<br />
启动： service mysqld start 1-2<br />
关闭： service mysqld stop 1-2</p>
<p>如果启动的时候提示出错信息：<br />
WARNING: my_print_defaults command not found.<br />
Please make sure you have this command available and<br />
in your path. The command is available from the latest<br />
MySQL distribution.<br />
ABORT: Can&#8217;t find command &#8216;my_print_defaults&#8217;.<br />
This command is available from the latest MySQL<br />
distribution. Please make sure you have the command<br />
in your PATH.</p>
<p>先添加<br />
export PATH=/usr/local/mysql/bin:$PATH<br />
然后在启动mysql</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/828.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux执行脚本提示: No such file or directory</title>
		<link>http://226617.cn/archives/817.htm</link>
		<comments>http://226617.cn/archives/817.htm#comments</comments>
		<pubDate>Thu, 31 Dec 2009 15:53:11 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[脚本]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=817</guid>
		<description><![CDATA[今天在装sphinx，收尾准备做个增量的脚本放crontab里面去，结果每次执行都是提示: No such file or directory。搞来搞去最后发现文本格式忘了改成unix的了，... ]]></description>
			<content:encoded><![CDATA[<p>今天在装sphinx，收尾准备做个增量的脚本放crontab里面去，结果每次执行都是提示: No such file or directory。搞来搞去最后发现文本格式忘了改成unix的了，汗</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/817.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nginx+keepalived负载均衡篇</title>
		<link>http://226617.cn/archives/791.htm</link>
		<comments>http://226617.cn/archives/791.htm#comments</comments>
		<pubDate>Fri, 06 Nov 2009 13:17:06 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[nginx相关]]></category>
		<category><![CDATA[keepalived]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=791</guid>
		<description><![CDATA[由于nginx的url hash功能可以很好的提升squid的性能，所以我把squid前端的负载均衡器更换为nginx，但是一台nginx就形成了单点，现在使用keepalived来解决这个问题，keepalived的故障转移时间很短... ]]></description>
			<content:encoded><![CDATA[<p>由于nginx的url hash功能可以很好的提升squid的性能，所以我把squid前端的负载均衡器更换为nginx，但是一台nginx就形成了单点，现在使用keepalived来解决这个问题，keepalived的故障转移时间很短(<1s)，而且配置简单，这也是选择keepalived的一个主要原因，建议日PV值小的中小型企业web均可采用如下方案实行，下面直接上安装步骤：</p>
<p>一、环境：<br />
centos5.3、nginx-0.7.51、keepalived-1.1.19<br />
主nginx负载均衡器：192.168.0.154<br />
辅nginx负载均衡器：192.168.9.155<br />
vip：192.168.0.188</p>
<p>二、安装keepalived</p>
<p>#tar zxvf keepalived-1.1.19.tar.gz<br />
#cd keepalived-1.1.19<br />
#./configure --prefix=/usr/local/keepalived<br />
#make<br />
#make install<br />
#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/<br />
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/<br />
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/<br />
#mkdir /etc/keepalived<br />
#cd /etc/keepalived/<br />
vim keepalived.conf</p>
<p>! Configuration File for keepalived<br />
global_defs {<br />
   notification_email {<br />
   yuhongchun027@163.com<br />
        }<br />
   notification_email_from keepalived@chtopnet.com<br />
   smtp_server 127.0.0.1<br />
   smtp_connect_timeout 30<br />
   router_id LVS_DEVEL<br />
}</p>
<p>vrrp_instance VI_1 {<br />
    state MASTER<br />
    interface eth0<br />
    virtual_router_id 51<br />
    mcast_src_ip 192.168.0.155    <==辅nginx的IP地址<br />
    priority 100<br />
    advert_int 1<br />
    authentication {<br />
        auth_type PASS<br />
        auth_pass chtopnet<br />
    }<br />
    virtual_ipaddress {<br />
        192.168.0.188                      <==vip地址<br />
    }<br />
}<br />
#service keepalived start<br />
我们来看一下日志：<br />
[root@ltos ~]# tail /var/log/messages<br />
Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.188 on eth0.<br />
Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.154 on eth0.<br />
Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering HINFO record with values 'I686'/'LINUX'.<br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Withdrawing address record for fe80::20c:29ff:feb9:eeab on eth0.<br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Withdrawing address record for 192.168.0.154 on eth0.<br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Host name conflict, retrying with <ltos-31><br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Registering new address record for fe80::20c:29ff:feb9:eeab on eth0.<br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.188 on eth0.<br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.154 on eth0.<br />
Oct 6 03:25:23 ltos avahi-daemon[2306]: Registering HINFO record with values &#8216;I686&#8242;/&#8217;LINUX&#8217;.</p>
<p>很显然vrrp已经启动，我们还可以通过命令：#ip a 来检查</p>
<p>[root@ltos html]# ip a<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue<br />
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
    inet 127.0.0.1/8 scope host lo<br />
    inet6 ::1/128 scope host<br />
       valid_lft forever preferred_lft forever<br />
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000<br />
    link/ether 00:0c:29:ba:9b:e7 brd ff:ff:ff:ff:ff:ff<br />
    inet 192.168.0.154/24 brd 192.168.0.255 scope global eth0<br />
    inet 192.168.0.188/32 scope global eth0<br />
    inet6 fe80::20c:29ff:feba:9be7/64 scope link<br />
       valid_lft forever preferred_lft forever<br />
3: sit0: <NOARP> mtu 1480 qdisc noop<br />
    link/sit 0.0.0.0 brd 0.0.0.0</p>
<p>说明vip已经启动，这样主服务器就配置好了，辅机的配置大致一样，除了配置文件有少部分的变化，下</p>
<p>面贴出辅机的配置文件：</p>
<p>! Configuration File for keepalived<br />
global_defs {<br />
   notification_email {<br />
   yuhongchun027@163.com<br />
        }<br />
   notification_email_from keepalived@chtopnet.com<br />
   smtp_server 127.0.0.1<br />
   smtp_connect_timeout 30<br />
   router_id LVS_DEVEL<br />
}</p>
<p>vrrp_instance VI_1 {<br />
    state BACKUP<br />
    interface eth0<br />
    virtual_router_id 51<br />
    mcast_src_ip 192.168.0.154              <==主nginx的IP的地址<br />
    priority 100<br />
    advert_int 1<br />
    authentication {<br />
        auth_type PASS<br />
        auth_pass chtopnet<br />
    }<br />
    virtual_ipaddress {<br />
        192.168.0.188<br />
    }<br />
}</p>
<p>检查其配置<br />
[root@ltos html]# ip a<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue<br />
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
    inet 127.0.0.1/8 scope host lo<br />
    inet6 ::1/128 scope host<br />
       valid_lft forever preferred_lft forever<br />
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000<br />
    link/ether 00:0c:29:ba:9b:e7 brd ff:ff:ff:ff:ff:ff<br />
    inet 192.168.0.155/24 brd 192.168.0.255 scope global eth0<br />
    inet 192.168.0.188/32 scope global eth0<br />
    inet6 fe80::20c:29ff:feba:9be7/64 scope link<br />
       valid_lft forever preferred_lft forever<br />
3: sit0: <NOARP> mtu 1480 qdisc noop<br />
    link/sit 0.0.0.0 brd 0.0.0.0</p>
<p>测试其效果方法很简单，分别在主辅机上建立不同的主页，index.html分别为192.168.0.154,192.168.0.155，然后用客户机上elinks http://192.168.0.188,主机down掉后辅机会马上接替提供服务，间隔时间几乎无法感觉出来,这个环境准备再进行下压力测试，用于我杭州网跃朋友的web服务器，如有疑问请联系yuhongchun027@163.com(抚琴煮酒)</p>
<p>转载至 http://hi.baidu.com/yuhongchun027/blog/item/25eca12c3442e9e68a13998c.html</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/791.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>bind的top，dnstop安装使用教程</title>
		<link>http://226617.cn/archives/782.htm</link>
		<comments>http://226617.cn/archives/782.htm#comments</comments>
		<pubDate>Tue, 22 Sep 2009 15:08:39 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[软件相关]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[dnstop]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=782</guid>
		<description><![CDATA[安装这里以centos为例 yum install libpcap libpcap-devel ncurses-devel ncurses wget http://dns.measurement-factory.com/tools/dnstop/src/dnstop-20090128.tar.gz tar zxvf dnstop-20090128.tar.gz cd dnstop-20090128 ./configure make &#038;&#038; make inst... ]]></description>
			<content:encoded><![CDATA[<p>安装这里以centos为例</p>
<p>yum install libpcap libpcap-devel ncurses-devel ncurses<br />
wget http://dns.measurement-factory.com/tools/dnstop/src/dnstop-20090128.tar.gz<br />
tar zxvf dnstop-20090128.tar.gz<br />
cd dnstop-20090128<br />
./configure<br />
make &#038;&#038; make install</p>
<p>使用方法很简单 dnstop eth0<br />
输入? 可以看到详细帮助，这里不多介绍了。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/782.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>修改linux系统默认语言为英文</title>
		<link>http://226617.cn/archives/652.htm</link>
		<comments>http://226617.cn/archives/652.htm#comments</comments>
		<pubDate>Tue, 04 Aug 2009 15:09:39 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=652</guid>
		<description><![CDATA[有些人装linux的时候喜欢选中文，结果装完了ssh进去非得用utf8才能显示正常，而且中文提示都感觉怪怪的，还是英文看的舒服 编辑/etc/sysconfig/i18n 把内容改为 LANG=&#8221;en_US.UTF-8&#8243; SYSFONT=&#8221;... ]]></description>
			<content:encoded><![CDATA[<p>有些人装linux的时候喜欢选中文，结果装完了ssh进去非得用utf8才能显示正常，而且中文提示都感觉怪怪的，还是英文看的舒服<br />
编辑/etc/sysconfig/i18n<br />
把内容改为<br />
LANG=&#8221;en_US.UTF-8&#8243;<br />
SYSFONT=&#8221;latarcyrheb-sun16&#8243;</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/652.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>透明DNS解译设定限制网络访问(Linux+iptables+bind)</title>
		<link>http://226617.cn/archives/636.htm</link>
		<comments>http://226617.cn/archives/636.htm#comments</comments>
		<pubDate>Thu, 02 Jul 2009 15:05:48 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=636</guid>
		<description><![CDATA[实现目的 1.linux网关用iptables配置DNS拦截,记录全部机器的DNS请求(什么时候上了什么网站) 2.利用DNS欺骗禁止用户防问部分网站 将需禁止的网站域名指向一个错误的IP地址 方法 1.将所有进入网关的... ]]></description>
			<content:encoded><![CDATA[<p>实现目的<br />
1.linux网关用iptables配置DNS拦截,记录全部机器的DNS请求(什么时候上了什么网站)<br />
2.利用DNS欺骗禁止用户防问部分网站 将需禁止的网站域名指向一个错误的IP地址</p>
<p>方法<br />
1.将所有进入网关的DNS请求，都转向本机的53端口，这样，既使内网PC使了其它的DNS服务器，最终也是由网关解析。<br />
一条iptables的指令即可<br />
iptables -t nat -A PREROUTING -p udp –dport 53 -j REDIRECT –to-port 53</p>
<p>2.DNS设置<br />
bind的设置文件named.conf，设定将请示转发到ISP的DNS，比如说深圳电信的DNS服务器202.96.128.68; 202.96.134.133<br />
设定要禁止用户防问网站test.com<br />
设定查询记录记在/var/named/query.log,查看此记录可以看到用户上了那些网站<br />
记得将目录/var/named的属主改成named chown -R named:named /var/named 否则无法生成/var/named/query.log</p>
<p>[root@gw ~]# cat /etc/named.conf<br />
// Default named.conf generated by install of bind-9.2.4-30.el4</p>
<p>options {<br />
directory “/var/named”;<br />
dump-file “/var/named/data/cache_dump.db”;<br />
statistics-file “/var/named/data/named_stats.txt”;<br />
forwarders { 202.96.128.68; 202.96.134.133; };<br />
};</p>
<p>zone “test.com” IN {<br />
type master;<br />
file “test.com.zone”;<br />
};</p>
<p>logging{<br />
channel query_log {<br />
file “query.log” versions 3 size 20m;<br />
severity info;<br />
print-time yes;<br />
print-category   yes;<br />
};<br />
category queries {<br />
query_log;<br />
};<br />
};</p>
<p>域指定文件将*.test.com指向127.0.0.1<br />
cat /var/named/test.com.zone<br />
$ttl    1D<br />
@               IN SOA  test.com.  root.test.com. (</p>
<p>1053891162<br />
3H<br />
15M<br />
1W<br />
1D )</p>
<p>IN NS          test.com.<br />
IN MX    5    test.com.<br />
www                IN A          127.0.0.1<br />
*                  IN A          127.0.0.1</p>
<p>启动bind<br />
/etc/init.d/named start</p>
<p>执行IP转发<br />
iptables -t nat -A PREROUTING -p udp –dport 53 -j REDIRECT –to-port 53</p>
<p>看看日志如下<br />
[root@gw ~]# !ta<br />
tail -f /var/named/query.log<br />
Jun 08 16:46:18.930 queries: client 192.168.10.193#55856: query: updatem.360safe.com IN A<br />
Jun 08 16:46:19.311 queries: client 192.168.10.182#61239: query: policy.store.qq.com IN A<br />
Jun 08 16:46:20.329 queries: client 192.168.10.182#54165: query: route.store.qq.com IN A<br />
Jun 08 16:46:20.784 queries: client 192.168.10.182#65321: query: xanewp.photo.qq.com IN A<br />
Jun 08 16:46:20.790 queries: client 192.168.10.182#58162: query: app.photo.qq.com IN A<br />
Jun 08 16:46:21.089 queries: client 192.168.10.177#65300: query: www.microsoft.com IN A<br />
Jun 08 16:46:22.939 queries: client 192.168.10.182#64573: query: s21.photo.store.qq.com IN A<br />
Jun 08 16:46:23.182 queries: client 192.168.10.182#52749: query: s17.photo.store.qq.com IN A<br />
Jun 08 16:46:23.266 queries: client 192.168.10.204#51395: query: user.qzone.qq.com IN A<br />
Jun 08 16:46:24.440 queries: client 192.168.10.204#56676: query: pingfore.qq.com IN A<br />
Jun 08 16:46:24.770 queries: client 192.168.10.204#57851: query: users.qzone.qq.com IN A<br />
Jun 08 16:46:24.839 queries: client 192.168.10.204#50360: query: base.qzone.qq.com IN A<br />
Jun 08 16:46:24.843 queries: client 192.168.10.204#61001: query: taotao.qq.com IN A<br />
Jun 08 16:46:24.883 queries: client 192.168.10.204#53403: query: ic.qzone.qq.com IN A<br />
Jun 08 16:46:25.176 queries: client 192.168.10.204#64821: query: qlogo4.store.qq.com IN A<br />
Jun 08 16:46:25.426 queries: client 192.168.10.204#60886: query: g.qzone.qq.com IN A<br />
Jun 08 16:46:26.435 queries: client 192.168.10.204#60875: query: vip.qzone.qq.com IN A<br />
Jun 08 16:46:26.730 queries: client 192.168.10.204#53668: query: cityapi.qzone.qq.com IN A<br />
Jun 08 16:46:27.227 queries: client 192.168.10.204#61486: query: daren4.store.qq.com IN A<br />
Jun 08 16:46:27.235 queries: client 192.168.10.197#55670: query: profile.qshop.qq.com IN A<br />
Jun 08 16:46:27.335 queries: client 192.168.10.204#64822: query: broadcast.qq.com IN A<br />
Jun 08 16:46:27.626 queries: client 192.168.10.202#56066: query: qzone-client.qq.com IN A</p>
<p>在客户端测试结果，我的NB的DNS是设为202.96.128.68<br />
C:\Documents and Settings\li>nslookup www.test.com<br />
*** Can’t find server name for address 202.96.128.68: Non-existent domain<br />
*** Can’t find server name for address 202.96.134.133: Non-existent domain<br />
*** Default servers are not available<br />
Server:  UnKnown<br />
Address:  202.96.128.68</p>
<p>Name:    www.test.net<br />
Address:  127.0.0.1</p>
<p>C:\Documents and Settings\li>nslookup 12134.test.com<br />
*** Can’t find server name for address 202.96.128.68: Non-existent domain<br />
*** Can’t find server name for address 202.96.134.133: Non-existent domain<br />
*** Default servers are not available<br />
Server:  UnKnown<br />
Address:  202.96.128.68</p>
<p>Name:    12134.test.com<br />
Address:  127.0.0.1</p>
<p>原文：http://www.opvps.com/?p=320</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/636.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>linux下实现UDP端口映射</title>
		<link>http://226617.cn/archives/594.htm</link>
		<comments>http://226617.cn/archives/594.htm#comments</comments>
		<pubDate>Fri, 24 Apr 2009 03:23:29 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[udp]]></category>
		<category><![CDATA[端口映射]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=594</guid>
		<description><![CDATA[一、实际问题snmp监听端口默认为UPD 161，当监控服务器无法直接访问时，就需要用到端口映射来解决！同样问题还有dns服务器的UPD 53端口。 二、使用nc来映射UPD端口假设被监控服务器的IP为192.168... ]]></description>
			<content:encoded><![CDATA[<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Simsun; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #4d4b4c; font-family: Arial; font-size: 13px; line-height: 18px;"></p>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;">一、实际问题<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />snmp监听端口默认为UPD 161，当监控服务器无法直接访问时，就需要用到端口映射来解决！<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />同样问题还有dns服务器的UPD 53端口。</p>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;">二、使用nc来映射UPD端口<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />假设被监控服务器的IP为192.168.1.1；用于端口映射的主机为某个公网IP如59.1.1.1；需要映射的端口为UDP 161转发端口设为1161（自定义建议1024以上端口）<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />在端口映射服务器上操作，要安装nc，一般系统都会安装；<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />【注：nc存在安全漏洞，一定要设定防火墙】</p>
<div class="hl-surround" style="border: 1px solid #c3ced9; margin: 0px 0px 5px; padding: 0px; overflow: auto; list-style-type: none; text-decoration: none; background-color: #f9fbfc; width: auto; height: auto; text-align: left; font-family: Verdana,Tahoma,'Courier New',Courier,monospace;">
<div class="hl-main" style="margin: 0px; padding: 6px 24px; list-style-type: none; text-decoration: none; line-height: 23px; background-color: transparent;">首先使用mkfifo建立管道文件<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />#mkfifo /tmp/snmpfifo<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />通过nc建立端口映射 -l为监听模式 -u为UDP -p为本地端口；将内网监控161端口映射到本地的1161端口上；<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />#nc -l -u -p 1161 &lt; /tmp/snmpfifo | nc -u 192.168.1.1 161 &gt; /tmp/snmpfifo<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />查看netstat 1161是否监听<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />#netstat -nlp |grep :1161<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />udp     0      0 0.0.0.0:1161       0.0.0.0:*          31472/nc</div>
</div>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;">在监控服务器上进行测试是否能采集到数据：</p>
<div class="hl-surround" style="border: 1px solid #c3ced9; margin: 0px 0px 5px; padding: 0px; overflow: auto; list-style-type: none; text-decoration: none; background-color: #f9fbfc; width: auto; height: auto; text-align: left; font-family: Verdana,Tahoma,'Courier New',Courier,monospace;">
<div class="hl-main" style="margin: 0px; padding: 6px 24px; list-style-type: none; text-decoration: none; line-height: 23px; background-color: transparent;">#snmpwalk -c public -v2c 59.1.1.1:1161 if<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />IF-MIB::ifIndex.1 = INTEGER: 1<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />IF-MIB::ifIndex.2 = INTEGER: 2<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />IF-MIB::ifIndex.3 = INTEGER: 3<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />IF-MIB::ifIndex.4 = INTEGER: 4<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />IF-MIB::ifDescr.1 = STRING: lo<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />IF-MIB::ifDescr.2 = STRING: eth0<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />&#8230;.</div>
</div>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;">设定成功；这里存在一个问题就是nc监听的端口每次一连接就会挂起，采取一个比较笨的办法就是写个restart.sh脚本放在crontab中每分钟执行一次；<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />产生该问题的主要原因我在下面讲socat的时候会分析的；<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />针对snmp采集这样是没有问题，如果dns服务就不行啦！</p>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;">三、采用nc升级版本的socat来实现UDP端口映射<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />软件包下载地址：http://www.dest-unreach.org/socat/download/<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />安装无非就是configure make make install<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />socat的主要特点就是在两个数据流之间建立通道；且支持众多协议和链接方式：ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />这里不一一介绍啦！<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />有兴趣可以查看官方文档：http://www.dest-unreach.org/socat/doc/socat.html<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />我们说说如何使用socat建立UPD端口映射</p>
<div class="hl-surround" style="border: 1px solid #c3ced9; margin: 0px 0px 5px; padding: 0px; overflow: auto; list-style-type: none; text-decoration: none; background-color: #f9fbfc; width: auto; height: auto; text-align: left; font-family: Verdana,Tahoma,'Courier New',Courier,monospace;">
<div class="hl-main" style="margin: 0px; padding: 6px 24px; list-style-type: none; text-decoration: none; line-height: 23px; background-color: transparent;">#socat udp4-listen:11161,reuseaddr,fork UDP:[监控服务器IP]:161<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />udp4-listen：在本地建立的是一个udp ipv4协议的监听端口；<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />reuseaddr，绑定本地一个端口；<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />fork，设定多链接模式，即当一个链接被建立后，自动复制一个同样的端口再进行监听；</div>
</div>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;">【注：nc就是因为缺少fork模式，所以每次监听只能处理一次连接】<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />socat是一个强大的软件，希望与有这方面需求的同仁一起学习这个好的工具！<br style="margin: 0px; padding: 0px; list-style-type: none; text-decoration: none;" />ps：无论是nc方式还是socat方式，启动监听模式都是在前端占用一个shell，所以请在后台执行或者使用screen工具等等！</p>
<p style="margin: 0px; padding: 0px 0px 10px; list-style-type: none; text-decoration: none;"><a href="http://www.hiadmin.com/linux%E4%B8%8B%E5%AE%9E%E7%8E%B0udp%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84/">http://www.hiadmin.com/linux下实现udp端口映射/</a></p>
<p></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/594.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux 和unix下SAR命令的用法</title>
		<link>http://226617.cn/archives/589.htm</link>
		<comments>http://226617.cn/archives/589.htm#comments</comments>
		<pubDate>Wed, 22 Apr 2009 07:52:33 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sar]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=589</guid>
		<description><![CDATA[dmesg可以直接查看cpu的主频，要查看CPU、内存的使用情况可以使用sar！ sar 命令行的常用格式： sar [options] [-A] [-o file] t [n] 在命令行中，n 和t 两个参数组合起来定义采样间隔和次数，t为采样间... ]]></description>
			<content:encoded><![CDATA[<p>dmesg可以直接查看cpu的主频，要查看CPU、内存的使用情况可以使用sar！</p>
<p>sar 命令行的常用格式：<br />
sar [options] [-A] [-o file] t [n]</p>
<p>在命令行中，n 和t  两个参数组合起来定义采样间隔和次数，t为采样间隔，是必须有<br />
的参数，n为采样次数，是可选的，默认值是1，-o file表示将命令结果以二进制格式<br />
存放在文件中，file 在此处不是关键字，是文件名。options 为命令行选项，sar命令<br />
的选项很多，下面只列出常用选项：</p>
<p>-A：所有报告的总和。<br />
-u：CPU利用率<br />
-v：进程、I节点、文件和锁表状态。<br />
-d：硬盘使用报告。<br />
-r：没有使用的内存页面和硬盘块。<br />
-g：串口I/O的情况。<br />
-b：缓冲区使用情况。<br />
-a：文件读写情况。<br />
-c：系统调用情况。<br />
-R：进程的活动情况。<br />
-y：终端设备活动情况。<br />
-w：系统交换活动。</p>
<p>下面将举例说明。</p>
<p>例一：使用命令行 sar -u t n</p>
<p>例如，每60秒采样一次，连续采样5次，观察CPU 的使用情况，并将采样结果以二进制<br />
形式存入当前目录下的文件zhou中，需键入如下命令：</p>
<p># sar -u -o zhou 60 5</p>
<p>屏幕显示：</p>
<p>SCO_SV　　　scosysv　3.2v5.0.5　i80386　　　10/01/2001<br />
14:43:50　　　%usr　　　%sys　　%wio　　　　%idle(-u)<br />
14:44:50　　　0　　　　　1　　　　4　　　　　　94<br />
14:45:50　　　0　　　　　2　　　　4　　　　　　93<br />
14:46:50　　　0　　　　　2　　　　2　　　　　　96<br />
14:47:50　　　0　　　　　2　　　　5　　　　　　93<br />
14:48:50　　　0　　　　　2　　　　2　　　　　　96<br />
Average　　　 0　　　　　2　　　　4　　　　　　94</p>
<p>在显示内容包括：</p>
<p>%usr：CPU处在用户模式下的时间百分比。<br />
%sys：CPU处在系统模式下的时间百分比。<br />
%wio：CPU等待输入输出完成时间的百分比。<br />
%idle：CPU空闲时间百分比。</p>
<p>在所有的显示中，我们应主要注意%wio和%idle，%wio的值过高，表示硬盘存在I/O瓶颈，<br />
%idle值高，表示CPU较空闲，如果%idle值高但系统响应慢时，有可能是CPU等待分配内存，<br />
此时应加大内存容量。%idle值如果持续低于10，那么系统的CPU处理能力相对较低，表<br />
明系统中最需要解决的资源是CPU。</p>
<p>如果要查看二进制文件zhou中的内容，则需键入如下sar命令：</p>
<p># sar -u -f zhou</p>
<p>可见，sar命令即可以实时采样，又可以对以往的采样结果进行查询。</p>
<p>例二：使用命行sar -v t n</p>
<p>例如，每30秒采样一次，连续采样5次，观察核心表的状态，需键入如下命令：</p>
<p># sar -v 30 5</p>
<p>屏幕显示：<br />
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001<br />
10:33:23 proc-sz  ov inod-sz ov file-sz ov lock-sz　　 (-v)<br />
10:33:53　305/　321 　0　1337/2764　  0　1561/1706　0　40/　128<br />
10:34:23　308/　321 　0　1340/2764　 0　1587/1706　0　37/　128<br />
10:34:53　305/　321 　0　1332/2764　 0　1565/1706　0　36/　128<br />
10:35:23　308/　321  　0　1338/2764　 0　1592/1706　0　37/　128<br />
10:35:53　308/　321　 0　1335/2764　  0　1591/1706　0　37/　128</p>
<p>显示内容包括：</p>
<p>proc-sz：目前核心中正在使用或分配的进程表的表项数，由核心参数MAX-PROC控制。</p>
<p>inod-sz：目前核心中正在使用或分配的i节点表的表项数，由核心参数<br />
MAX-INODE控制。</p>
<p>file-sz： 目前核心中正在使用或分配的文件表的表项数，由核心参数MAX-FILE控<br />
制。</p>
<p>ov：溢出出现的次数。</p>
<p>Lock-sz：目前核心中正在使用或分配的记录加锁的表项数，由核心参数MAX-FLCKRE<br />
控制。</p>
<p>显示格式为</p>
<p>实际使用表项/可以使用的表项数</p>
<p>显示内容表示，核心使用完全正常，三个表没有出现溢出现象，核心参数不需调整，如<br />
果出现溢出时，要调整相应的核心参数，将对应的表项数加大。</p>
<p>例三：使用命行sar -d t n</p>
<p>例如，每30秒采样一次，连续采样5次，报告设备使用情况，需键入如下命令：</p>
<p>#  sar -d 30 5</p>
<p>屏幕显示：</p>
<p>SCO_SV scosysv 3.2v5.0.5 i80386  10/01/2001<br />
11:06:43 device　%busy　　　avque　　　r+w/s　　blks/s　　avwait avserv (-d)<br />
11:07:13 wd-0　　　1.47　　　2.75　　　4.67　　　14.73　　 5.50 3.14<br />
11:07:43  wd-0　　　0.43　　　18.77　　 3.07　　　8.66　　　25.11 1.41<br />
11:08:13  wd-0　　　0.77　　　2.78　　　2.77　　　7.26　　　4.94 2.77<br />
11:08:43 wd-0　　　1.10　　　11.18　　  4.10　　　11.26　　 27.32 2.68<br />
11:09:13 wd-0　　　1.97　　　21.78　　  5.86　　　34.06　　　69.66 3.35<br />
Average wd-0　　　1.15　　　12.11　　 4.09　　　15.19　　　31.12  2.80</p>
<p>显示内容包括：</p>
<p>device： sar命令正在监视的块设备的名字。<br />
%busy：  设备忙时，传送请求所占时间的百分比。<br />
avque： 队列站满时，未完成请求数量的平均值。<br />
r+w/s：  每秒传送到设备或从设备传出的数据量。<br />
blks/s： 每秒传送的块数，每块512字节。<br />
avwait：  队列占满时传送请求等待队列空闲的平均时间。<br />
avserv： 完成传送请求所需平均时间（毫秒）。</p>
<p>在显示的内容中，wd-0是硬盘的名字，%busy的值比较小，说明用于处理传送请求的有<br />
效时间太少，文件系统效率不高，一般来讲，%busy值高些，avque值低些，文件系统<br />
的效率比较高，如果%busy和avque值相对比较高，说明硬盘传输速度太慢，需调整。</p>
<p>例四：使用命行sar -b t n</p>
<p>例如，每30秒采样一次，连续采样5次，报告缓冲区的使用情况，需键入如下命令：</p>
<p># sar -b 30 5</p>
<p>屏幕显示：</p>
<p>SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001<br />
14:54:59  bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)<br />
14:55:29　0　　147　　100　 5　　21　　78　　 0　　　0<br />
14:55:59　0　　186　　100　  5　　25　　79　　 0　　　0<br />
14:56:29　4　　232 　　98　 8　　58　　86　　 0　　　0<br />
14:56:59　0　　125　　100　 5　　23　　76　　 0　　　0<br />
14:57:29　0　　 89　　100　  4　　12　　66　　 0　　　0<br />
Average　 1　　156 　　99　 5　　28　　80　　 0　　　0</p>
<p>显示内容包括：</p>
<p>bread/s： 每秒从硬盘读入系统缓冲区buffer的物理块数。<br />
lread/s： 平均每秒从系统buffer读出的逻辑块数。<br />
%rcache： 在buffer cache中进行逻辑读的百分比。<br />
bwrit/s： 平均每秒从系统buffer向磁盘所写的物理块数。<br />
lwrit/s： 平均每秒写到系统buffer逻辑块数。<br />
%wcache： 在buffer cache中进行逻辑读的百分比。<br />
pread/s： 平均每秒请求物理读的次数。<br />
pwrit/s： 平均每秒请求物理写的次数。</p>
<p>在显示的内容中，最重要的是%cache和%wcache两列，它们的值体现着buffer的使用效<br />
率，%rcache的值小于90或者%wcache的值低于65，应适当增加系统buffer的数量，buffer<br />
数量由核心参数NBUF控制，使%rcache达到90左右，%wcache达到80左右。但buffer参数<br />
值的多少影响I/O效率，增加buffer，应在较大内存的情况下，否则系统效率反而得不到<br />
提高。</p>
<p>例五：使用命行sar -g t  n</p>
<p>例如，每30秒采样一次，连续采样5次，报告串口I/O的操作情况，需键入如下命令：</p>
<p># sar -g 30 5</p>
<p>屏幕显示：</p>
<p>SCO_SV scosysv 3.2v5.0.5 i80386　　11/22/2001<br />
17:07:03  　ovsiohw/s　 ovsiodma/s　　ovclist/s (-g)<br />
17:07:33　　　0.00　　　0.00　　　0.00<br />
17:08:03　　　0.00　　　0.00　　　0.00<br />
17:08:33　　　0.00　　　0.00　　　0.00<br />
17:09:03　　　0.00　　　0.00　　　0.00<br />
17:09:33　　　0.00　　　0.00　　　0.00<br />
Average  　　　0.00　　　0.00　　　0.00</p>
<p>显示内容包括：</p>
<p>ovsiohw/s：每秒在串口I/O硬件出现的溢出。</p>
<p>ovsiodma/s：每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。</p>
<p>ovclist/s ：每秒字符队列出现的溢出。</p>
<p>在显示的内容中，每一列的值都是零，表明在采样时间内，系统中没有发生串口I/O溢<br />
出现象。</p>
<p>sar命令的用法很多，有时判断一个问题，需要几个sar命令结合起来使用，比如，怀疑<br />
CPU存在瓶颈，可用sar -u 和sar  -q来看，怀疑I/O存在瓶颈，可用sar -b、sar  -u和sar-d来看。<br />
&#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;<br />
Sar<br />
-A  所有的报告总和<br />
-a 文件读，写报告<br />
-B 报告附加的buffer cache使用情况<br />
-b buffer cache使用情况<br />
-c  系统调用使用报告<br />
-d 硬盘使用报告<br />
-g 有关串口I/O情况<br />
-h 关于buffer使用统计数字<br />
-m  IPC消息和信号灯活动<br />
-n 命名cache<br />
-p 调页活动<br />
-q 运行队列和交换队列的平均长度<br />
-R 报告进程的活动<br />
-r  没有使用的内存页面和硬盘块<br />
-u CPU利用率<br />
-v 进程，i节点，文件和锁表状态<br />
-w 系统交换活动<br />
-y  TTY设备活动</p>
<p>-a 报告文件读，写报告<br />
&lt;/&gt; sar –a 5 5<br />
SCO_SV scosvr  3.2v5.0.5 PentII(D)ISA 06/07/2002<br />
11:45:40 iget/s namei/s dirbk/s  (-a)<br />
11:45:45 6 2 2<br />
11:45:50 91 20 28<br />
11:45:55 159 20 18<br />
11:46:00  157 21 19<br />
11:46:05 177 30 35<br />
Average 118 18 20</p>
<p>iget/s  每秒由i节点项定位的文件数量<br />
namei/s 每秒文件系统路径查询的数量<br />
dirbk/s  每秒所读目录块的数量</p>
<p>＊这些值越大，表明核心花在存取用户文件上的时间越多，它反映着一些程序和应用文件系统产生的负荷。一般地，如果iget/s与namei/s的比值大于5，并且namei/s的值大于30，则说明文件系统是低效的。这时需要检查文件系统的自由空间，看看是否自由空间过少。</p>
<p>-b  报告缓冲区（buffer cache）的使用情况<br />
&lt;/&gt; sar -b 2 3<br />
SCO_SV scosvr 3.2v5.0.5  PentII(D)ISA 06/07/2002<br />
13:51:28 bread/s lread/s %rcache bwrit/s lwrit/s  %wcache pread/s pwrit/s (-b)<br />
13:51:30 382 1380 72 131 273 52 0 0<br />
13:51:32  378 516 27 6 22 72 0 0<br />
13:51:34 172 323 47 39 57 32 0 0<br />
Average 310 739 58  58 117 50 0 0</p>
<p>bread/s 平均每秒从硬盘（或其它块设备）读入系统buffer的物理块数<br />
lread/s  平均每秒从系统buffer读出的逻辑块数<br />
%rcache 在buffer cache中进行逻辑读的百分比（即100％ &#8211;  bread/lreads）<br />
bwrit/s 平均每秒从系统buffer向磁盘（或其它块设备）所写的物理块数<br />
lwrit/s  平均每秒写到系统buffer的逻辑块数<br />
%wcache 在buffer cache中进行逻辑写的百分比（即100％ &#8211;  bwrit/lwrit）.<br />
pread/sgu 平均每秒请求进行物理读的次数<br />
pwrit/s  平均每秒请求进行物理写的次数</p>
<p>＊所显示的内容反映了目前与系统buffer有关的读，写活。在所报告的数字中，最重要的是%rcache和%wcache（统称为cache命中率）两列，它们具体体现着系统buffer的效率。衡量cache效率的标准是它的命中率值的大小。<br />
＊如果%rcache的值小于90或者%wcache的值低于65，可能就需要增加系统buffer的数量。如果在系统的应用中，系统的I/O活动十分频繁，并且在内存容量配置比较大时，可以增加buffer  cache，使%rcache达到95左右，%wcache达到80左右。<br />
＊系统buffer  cache中，buffer的数量由核心参数NBUF控制。它是一个要调的参数。系统中buffer数量的多少是影响系统I/O效率的瓶颈。要增加系统buffer数量，则要求应该有较大的内存配置。否则一味增加buffer数量，势必减少用户进程在内存中的运行空间，这同样会导致系统效率下降。</p>
<p>-c  报告系统调用使用情况<br />
&lt;/ &gt; sar -c 2 3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA  06/07/2002<br />
17:02:42 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s  (-c)<br />
17:02:44 2262 169 141 0.00 0.00 131250 22159<br />
17:02:46 1416 61 38 0.00  0.00 437279 6464<br />
17:02:48 1825 43 25 0.00 0.00 109397 42331<br />
Average 1834  91 68 0.00 0.00 225975 23651</p>
<p>scall/s  每秒使用系统调用的总数。一般地，当4~6个用户在系统上工作时，每秒大约30个左右。<br />
sread/s 每秒进行读操作的系统调用数量。<br />
swrit/s  每秒进行写操作的系统调用数量。<br />
fork/s 每秒fork系统调用次数。当4~6个用户在系统上工作时，每秒大约0.5秒左右。<br />
exec/s  每秒exec系统调用次数。<br />
rchar/s 每秒由读操作的系统调用传送的字符（以字节为单位）。<br />
wchar/s  每秒由写操作的系统调用传送的字符（以字节为单位）。<br />
＊如果scall/s持续地大于300，则表明正在系统中运行的可能是效率很低的应用程序。在比较<br />
典型的情况下，进行读操作的系统调用加上进行写操作的系统调用之和，约是scall的一半左右。</p>
<p>-d  报告硬盘使用情况<br />
&lt;/ &gt; sar -d 2 3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA  06/07/2002<br />
17:27:49 device %busy avque r+w/s blks/s avwait avserv  (-d)<br />
17:27:51 ida-0 6.93 1.00 13.86 259.41 0.00 5.00<br />
ida-1 0.99 1.00 17.33  290.10 0.00 0.57<br />
17:27:53 ida-0 75.50 1.00 54.00 157.00 0.00 13.98<br />
ida-1  9.50 1.00 12.00 75.00 0.00 7.92<br />
17:27:55 ida-0 7.46 1.00 46.77 213.93 0.00  1.60<br />
ida-1 17.41 1.00 57.71 494.53 0.00 3.02<br />
Average ida-0 29.85 1.00  38.14 210.28 0.00 7.83<br />
ida-1 9.29 1.00 29.02 286.90 0.00  3.20</p>
<p>device 这是sar命令正在监视的块设备的名字。<br />
%busy 设备忙时，运行传送请求所占用的时间。这个值以百分比表示。<br />
avque 在指定的时间周期内，没有完成的请求数量的平均值。仅在队列被占满时取这个值。<br />
r+w/s  每秒传送到设备或者从设备传送出的数据量。<br />
blks/s 每秒传送的块数。每块512个字节。<br />
avwait  传送请求等待队列空闲的平均时间（以毫秒为单位）。仅在队列被占满时取这个值。<br />
avserv  完成传送请求所需平均时间（以毫秒为单位）<br />
＊ida-0和ida-1是硬盘的设备名字。在显示的内容中，如果%busy的值比较小，说明用于处理<br />
传送请求的有效时间太少，文件系统的效率不高。要使文件系统的效率得到优化，应使%busy的数值相对高一些，而avque的值应该低一些。</p>
<p>-g  报告有关串口I/O情况<br />
&lt;/ &gt; sar -g 3 3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA  06/13/2002<br />
11:10:09 ovsiohw/s ovsiodma/s ovclist/s (-g)<br />
11:10:12 0.00 0.00  0.00<br />
11:10:15 0.00 0.00 0.00<br />
11:10:18 0.00 0.00 0.00<br />
Average 0.00 0.00  0.00</p>
<p>ovsiohw/s 每秒在串囗I/O硬件出现的溢出。<br />
ovsiodma/s  每秒在串囗I/O的直接输入，输出信道高速缓存出现的溢出。<br />
ovclist/s 每秒字符队列出现的溢出。</p>
<p>-m  报告进程间的通信活动（IPC消息和信号灯活动）情况<br />
&lt;/ &gt; sar -m 4 3<br />
SCO_SV scosvr 3.2v5.0.5  PentII(D)ISA 06/13/2002<br />
13:24:28 msg/s sema/s (-m)<br />
13:24:32 2.24  9.95<br />
13:24:36 2.24 21.70<br />
13:24:40 2.00 36.66<br />
Average 2.16  22.76</p>
<p>msg/s 每秒消息操作的次数（包括发送消息的接收信息）。<br />
sema/s  每秒信号灯操作次数。<br />
＊信号灯和消息作为进程间通信的工具，如果在系统中运行的应用过程中没有使用它们，那么由sar命令报告的msg  和sema的值都将等于0.00。如果使用了这些工具，并且其中或者msg/s大于100，或者sema/s大于100，则表明这样的应用程序效率比较低。原因是在这样的应用程序中，大量的时间花费在进程之间的沟通上，而对保证进程本身有效的运行时间必然产生不良的影响。</p>
<p>-n  报告命名缓冲区活动情况<br />
&lt;/ &gt; sar -n 4 3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA  06/13/2002<br />
13:37:31 c_hits cmisses (hit %) (-n)<br />
13:37:35 1246 71  (94%)<br />
13:37:39 1853 81 (95%)<br />
13:37:43 969 56 (94%)<br />
Average 1356 69  (95%)</p>
<p>c_hits cache命中的数量。<br />
cmisses cache未命中的数量。<br />
(hit %)  命中数量/(命中数理+未命中数量)。<br />
＊不难理解，(hit %)值越大越好，如果它低于90％，则应该调整相应的核心参数。</p>
<p>-p  报告分页活动<br />
&lt;/ &gt; sar -p 5 3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA  06/13/2002<br />
13:45:26 vflt/s pflt/s pgfil/s rclm/s (-p)<br />
13:45:31 36.25 50.20  0.00 0.00<br />
13:45:36 32.14 58.48 0.00 0.00<br />
13:45:41 79.80 58.40 0.00  0.00<br />
Average 49.37 55.69 0.00 0.00</p>
<p>vflt/s  每秒进行页面故障地址转换的数量（由于有效的页面当前不在内存中）。<br />
pflt/s  每秒来自由于保护错误出现的页面故障数量（由于对页面的非法存，取引起的页面故障）。<br />
pgfil/s  每秒通过”页—入”满足vflt/s的数量。<br />
rclm/s  每秒由系统恢复的有效页面的数量。有效页面被增加到自由页面队列上。<br />
＊如果vflt/s的值高于100，可能预示着对于页面系统来说，应用程序的效率不高，也可能分页参数需要调整，或者内存配置不太合适。</p>
<p>-q  报告进程队列（运行队列和交换队列的平均长度）情况<br />
&lt;/ &gt; sar -q 2 3<br />
SCO_SV scosvr 3.2v5.0.5  PentII(D)ISA 06/13/2002<br />
14:25:50 runq-sz %runocc swpq-sz %swpocc  (-q)<br />
14:25:52 4.0 50<br />
14:25:54 9.0 100<br />
14:25:56 9.0 100<br />
Average 7.3  100</p>
<p>runq-sz 准备运行的进程运行队列。<br />
%runocc 运行队列被占用的时间（百分比）<br />
swpq-sz  要被换出的进程交换队列。<br />
%swpocc  交换队列被占用的时间（百分比）。<br />
＊如果%runocc大于90，并且runq-sz的值大于2，则表明CPU的负载较重。其直接后果，可能使系统的响应速度降低。如果%swpocc大于20，表明交换活动频繁，将严重导致系统效率下降。解决的办法是加大内存或减少缓存区数量，从而减少交换及页—入,页—出活动。</p>
<p>-r  报告内存及交换区使用情况（没有使用的内存页面和硬盘块）<br />
&lt;/&gt; sar -r 2 3<br />
SCO_SV scosvr 3.2v5.0.5  PentII(D)ISA 06/14/2002<br />
10:14:19 freemem freeswp availrmem availsmem  (-r)<br />
10:14:22 279729 6673824 93160 1106876<br />
10:14:24 279663 6673824 93160  1106876<br />
10:14:26 279661 6673824 93160 1106873<br />
Average 279684 6673824 93160  1106875</p>
<p>freemem 用户进程可以使用的内存页面数，4KB为一个页面。<br />
freeswp  用于进程交换可以使用的硬盘盘块，512B为一个盘块。</p>
<p>-u CPU利用率<br />
&lt;/&gt; sar -u 2  3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002<br />
10:27:23 %usr %sys %wio  %idle (-u)<br />
10:27:25 2 3 8 88<br />
10:27:27 3 3 5 89<br />
10:27:29 0 0 0  100<br />
Average 2 2 4 92<br />
.<br />
%usr cpu处在用户模式下时间（百分比）<br />
%sys  cpu处在系统模式下时间（百分比）<br />
%wio cpu等待输入，输出完成（时间百分比）<br />
%idle  cpu空闲时间（百分比）<br />
＊在显示的内容中，%usr和  %sys这两个值一般情况下对系统无特别影响，%wio的值不能太高，如果%wio的值过高，则CPU花在等待输入，输出上的时间太多，这意味着硬盘存在I/O瓶颈。如果%idle的值比较高，但系统响应并不快，那么这有可能是CPU花时间等待分配内存引起的。%idle的值可以较深入帮助人们了解系统的性能，在这种情况上，%idle的值处于40~100之间，一旦它持续低于30，则表明进程竟争的主要资源不是内存而是CPU。<br />
＊在有大量用户运行的系统中，为了减少CPU的压力，应该使用智能多串卡，而不是非智能多串卡。智能多串卡可以承担CPU的某些负担。<br />
＊此外，如果系统中有大型的作业运行，应该把它们合理调度，错开高峰，当系统相对空闲时再运行。</p>
<p>-v  报告系统表的内容（进程，i节点，文件和锁表状态）<br />
&lt;/&gt; sar -v 2 3<br />
SCO_SV scosvr 3.2v5.0.5  PentII(D)ISA 06/14/2002<br />
10:56:46 proc-sz ov inod-sz ov file-sz ov lock-sz  (-v)<br />
10:56:48 449/ 500 0 994/4147 0 1313/2048 0 5/ 128<br />
10:56:50 450/ 500 0  994/4147 0 1314/2048 0 5/ 128<br />
10:56:52 450/ 500 0 994/4147 0 1314/2048 0 5/  128</p>
<p>proc-sz 目前在核心中正在使用或分配的进程表的表项数<br />
inod-sz  目前在核心中正在使用或分配的i节点表的表项数<br />
file-sz 目前在核心中正在使用或分配的文件表的表项数<br />
ov 溢出出现的次数<br />
lock-sz  目前在核心中正在使用或分配的记录加锁的表项数<br />
＊除ov外，均涉及到unix的核心参数，它们分别受核心参数NPROC,NIMODE,NFILE和FLOCKREC的控制。<br />
＊显示格式为：<br />
实际使用表项/整个表可以使用的表项数<br />
比如，proc-sz一列所显示的四个数字中，分母的100是系统中整个进程表的长度（可建立100个表项），分子上的24，26和25分别是采样的那一段时间所使用的进程表项。inod-sz，file-sz和lock-sz三列数字的意义也相同。<br />
三列ov的值分别对应进程表，i节点表和文件表，表明目前这三个表都没有出现溢出现象，当出现溢出时，需要调整相应的核心参数，将对应表加大。</p>
<p>-w  系统交换活动<br />
&lt;/&gt; sar -w 2 3<br />
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA  06/14/2002<br />
11:22:05 swpin/s bswin/s swpot/s bswots pswch/s (-w)<br />
11:22:07  0.00 0.0 0.00 0.0 330<br />
11:22:09 0.00 0.0 0.00 0.0 892<br />
11:22:11 0.00 0.0  0.00 0.0 1053<br />
Average 0.00 0.0 0.00 0.0 757</p>
<p>swpin/s  每秒从硬盘交换区传送进入内存的次数。<br />
bswin/s 每秒为换入而传送的块数。<br />
swpot/s  每秒从内存传送到硬盘交换区的次数。<br />
bswots 每秒为换出而传送的块数。<br />
pswch/s  每秒进程交换的数量。<br />
＊swpin/s，bswin/s，swpot/s和bswots描述的是与硬盘交换区相关的交换活动。交换关系到系统的效率。交换区在硬盘上对硬盘的读，写操作比内存读，写慢得多，因此，为了提高系统效率就应该设法减少交换。通常的作法就是加大内存，使交换区中进行的交换活动为零，或接近为零。如果swpot/s的值大于1，预示可能需要增加内存或减少缓冲区（减少缓冲区能够释放一部分自由内存空间）。</p>
<p>-y  报告终端的I/O活动（TTY设备活动）情况<br />
&lt;/&gt; sar -y 2 3<br />
SCO_SV scosvr 3.2v5.0.5  PentII(D)ISA 06/14/2002<br />
11:38:03 rawch/s canch/s outch/s rcvin/s xmtin/s  mdmin/s (-y)<br />
11:38:05 5 0 951 0 1 0<br />
11:38:07 10 0 996 0 0 0<br />
11:38:09 4  0 2264 0 0 0<br />
Average 6 0 1404 0 1 0</p>
<p>rawch/s 每秒输入的字符数（原始队列）<br />
canch/s  每秒由正则队列（canonical  queue）处理的输入字符数。进行正则处理过程中，可以识别出一些有特殊意义的字符。比如，&lt;Del&gt;(中断字符)，&lt;ctrl&gt;(退出符)，&lt;Bksp&gt;(退格键)等。因此，canch/s中的计数不包括这些有特殊意义的字符。<br />
outch/s  每秒输出的字符数。<br />
rcvin/s 每秒接收的硬件中断次数。<br />
xmtin/s 每秒发出的硬件中断次数。<br />
mdmin/s  每秒modem中断次数。<br />
＊应该特别说明，sar命令可以对任意终端活动进行统计，所谓任意终端，是指任意tty设备。它们可以是串行终端，主控台，伪终端等等。<br />
＊在这几个量中，modem中断次数mdmin/s应该接近0。其它没有特殊要求，但如果每发送一个字符，中断的数量就动态地增加，这表明终端线出了差错，可能是接触不好。</p>
<p><span style="font-size: x-small;">这个包在各大发行版中都有，如果您试一下有sar这个命令就证明已经有了。如果没有的，可以下载安装上就OK了</span></p>
<p>一、简要介绍：</p>
<p>sysstat这个工具，可以说是linux  &amp;Unix  以及Freebsd最常用的工具。它的主要用途就是观察服务负载，比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。</p>
<p>sar<br />
iostat<br />
sa1<br />
sa2<br />
sadf<br />
mpstat<br />
sadc<br />
sysstat</p>
<p>这几个命令中，有的是服务，有的是查看结果的命令。也有的是即时服务器CPU，内存以及网络的使用率,比如先要打开sa1  sa2或者sysstat 才能使用sar sadf sadc, 还要即时服务器的CPU，内存，网络使用率的命令，比如：mpstat  iostat<br />
二、安装：</p>
<p>首先您到 [url]http://perso.wanadoo.fr/sebastien.godard/[/url]  下载最新的版本，最好是源码包，比如我下载的是sysstat-5.1.1.tar.gz</p>
<p>安装方法比较简单：</p>
<p>1.解包：</p>
<p>#tar  zxvf sysstat-5.1.1.tar.gz</p>
<p>2.安装：</p>
<p>#cd sysstat-5.1.1<br />
#make config  这步可以省略，因为我在安装的过程 中，发现在有些发行版中出错，如果不用这个命令，可以直接安装到其默认的/usr/local/lib目录中<br />
make  config这个命令就是用来配置sysstat安装的，比如安装路径，log存放等，如下：</p>
<p>代码:<br />
Installation  directory: [/usr/local]<br />
sadc directory: [/usr/local/lib/sa]<br />
System  activity directory: [/var/log/sa]<br />
Clean system activity directory?  [n]<br />
Enable National Language Support (NLS)? [y]<br />
Linux SMP race in serial  driver workaround? [n]<br />
sa2 uses daily data file of previous day?  [n]<br />
Number of daily data files to keep: [7]<br />
Group for manual pages:  [man]<br />
Set crontab to start sar automatically? [n]</p>
<p>#make  注：这步是必须的，如果您不用第一步，这步也是必要的。</p>
<p>#make  install</p>
<p>这样就安装好了。</p>
<p>三、使用：</p>
<p>对于这个工具，如何使用呢？？如果您想看即时  服务器的CPU，内存，网络使用率的命令，比如：mpstat iostat  ，您可以简单的用下面的命令，如果更复杂一点，您可以用man来查看所有命令的用法。</p>
<p>比如：<br />
[beinan@S11 beinan]$  iostat<br />
Linux 2.4.22-2f (S11) 2004年10月30日</p>
<p>avg-cpu: %user %nice %system  %iowait %idle<br />
8.64 0.00 0.95 0.00 90.41<br />
Device: tps Blk_read/s Blk_wrtn/s  Blk_read Blk_wrtn<br />
dev3-0 2.97 55.28 38.84 213314 149856</p>
<p>[beinan@S11  beinan]$ mpstat<br />
Linux 2.4.22-2f (S11) 2004年10月30日</p>
<p>03时13分56秒 CPU %user  %nice %sys %iowait %irq %soft %idle intr/s<br />
03时13分56秒 all 8.56 0.00 0.94 0.00  0.00 0.00 90.50 84.32</p>
<p>比如观察磁盘的读写速度：</p>
<p>[beinan@S11 beinan]$ iostat  -p<br />
Linux 2.4.22-2f (S11) 2004年10月30日</p>
<p>avg-cpu: %user %nice %system  %iowait %idle<br />
33.54 0.00 4.95 0.86 60.65</p>
<p>Device: tps Blk_read/s  Blk_wrtn/s Blk_read Blk_wrtn<br />
hda 26.26 186.57 481.17 16117015  41564960<br />
hda1 3.29 1.33 26.01 115138 2246456<br />
hda2 19.86 26.49 149.65  2288449 12927104<br />
hda3 40.16 158.57 305.51 13697580 26391400<br />
hda5 0.00 0.00  0.00 8 0</p>
<p>如果是想让服务器自动运行，并且想每个小时都有一个数据反馈，我们可以用cron 来让执行sa1  sa2，这样就有一份日志文件存在/var/log/sa/目录中。我们到时运行sar就能知道所有过去时间每个小时运行情况：</p>
<p>可以写一个命令到一个文件中。。。把这个文件设置为755的执行权限，放在/etc/cron.hourly目录中。</p>
<p>[root@S11  root]# cd /etc/cron.hourly/ 进入目录<br />
[root@S11 cron.hourly]# touch sa1ho  创建文件，这个文件名可以自己来命名<br />
[root@S11 cron.hourly]# chmod 755  sa1ho<br />
然后在这个文件中写入下面的一行</p>
<p>/usr/local/lib/sa/sa1&amp;</p>
<p>这样每一个小时，就有日志文件写入/var/log/sa/目录中了，当然还有一个/usr/local/lib/sa/sa2的命令，也可以写一个文件到  在/etc/cron.weekly/目录中，sa2是做什么用的呢？自己先看看帮助文件，当然也可以写入/etc/cron.hourly/  ，这样就每小时一次。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/589.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables在防火墙应用方面的简单教程(第2版)</title>
		<link>http://226617.cn/archives/563.htm</link>
		<comments>http://226617.cn/archives/563.htm#comments</comments>
		<pubDate>Mon, 13 Apr 2009 15:48:24 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=563</guid>
		<description><![CDATA[#首先全部允许数据包通过，防止默认丢包的话下面删除规则造成数据包全部丢掉 #允许所有进来的包 iptables -P INPUT ACCEPT #允许所有出去的包 iptables -P OUTPUT ACCEPT #初始化iptables 清空所有规则和组 ... ]]></description>
			<content:encoded><![CDATA[<p>#首先全部允许数据包通过，防止默认丢包的话下面删除规则造成数据包全部丢掉<br />
#允许所有进来的包<br />
<span style="color: #ff0000;">iptables -P INPUT ACCEPT<br />
</span>#允许所有出去的包<br />
<span style="color: #ff0000;">iptables -P OUTPUT ACCEPT</span></p>
<p>#初始化iptables 清空所有规则和组<br />
#删除所有规则<br />
<span style="color: #ff0000;">iptables -F<br />
</span>#删除所有组<br />
<span style="color: #ff0000;">iptables -X</span></p>
<p>#这里才是正式开始配置iptables<br />
#创建新的定义firewall_in<br />
<span style="color: #ff0000;">iptables -N firewall_in</span></p>
<p>#指定firewall_in组应用到INPUT chain，类似于应用组<br />
<span style="color: #ff0000;">iptables -A INPUT -j firewall_in</span></p>
<p>#指定firewall_in组应用到FORWARD chain，类似于应用组。<br />
<span style="color: #ff0000;">iptables -A FORWARD -j firewall_in</span></p>
<p>#这里开始增加规则，这里例子里规则都是添加到firewall_in组<br />
#localhost数据包全部允许通过<br />
<span style="color: #ff0000;">iptables -A firewall_in -i lo -j ACCEPT</span></p>
<p>#所有已经建立连接的数据包全部通过<br />
<span style="color: #ff0000;">iptables -A firewall_in -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT</span></p>
<p>#所有地址开放tcp 80端口<br />
<span style="color: #ff0000;">iptables -A firewall_in -p tcp -m tcp &#8211;dport 80 -j ACCEPT</span></p>
<p>#ping数据包允许每秒通过1个<br />
<span style="color: #ff0000;">iptables -A firewall_in -p icmp -m limit &#8211;limit 1/s &#8211;limit-burst 10 -j ACCEPT</span></p>
<p>#向10.1.1.0/255.255.255.0网段开放eth0网卡上面并且目的ip地址为10.1.1.1的22端口（这是一个功能示例：网卡、协议类型、源地址组、目的地址、目的端口都有体现）<br />
<span style="color: #ff0000;">iptables -A firewall_in -i eth0 -p tcp -m tcp -s 10.1.1.0/255.255.255.0 -d 10.1.1.1 –dport 22 -j ACCEPT</span></p>
<p>#下面这2行是ftp server的pasv模式开放示例，因为ftp的pasv模式端口是随机打开的所以需要另外设置ftp server的pasv端口范围为60000-60004<br />
<span style="color: #ff0000;">iptables -A firewall_in -p tcp -m tcp -s 10.1.1.2 &#8211;dport 21 -j ACCEPT<br />
iptables -A firewall_in -p tcp -m tcp -s 10.1.1.2 &#8211;dport 60000:60004 -j ACCEPT</span></p>
<p>#丢弃不符合规则的其它tcp和udp数据包，如果处于调试的最好先不要用这2行，万一规则错了就麻烦了<br />
<span style="color: #ff0000;">iptables -A firewall_in -p tcp -m tcp -j DROP<br />
iptables -A firewall_in -p udp -m udp -j DROP</span></p>
<p>#清除规则匹配数据包计数信息<br />
<span style="color: #ff0000;">iptables -Z</span></p>
<p>#禁止所有进来的包，iptables是从上往下匹配的，如果有符合的话就结束匹配了，这里丢弃和上面规则里面的丢弃相比更加彻底。<br />
#同样如果处于调试的最好先不要用这2行，万一规则错了就麻烦了<br />
<span style="color: #ff0000;">iptables -P INPUT DROP</span></p>
<p>#应许所有出去的包，这个防火墙只是简单的进行入站包的过滤，如果需要出站包也要过滤话可以给OUTPUT chain单独一个组然后把参考上面把出站规则写到对应的组里<br />
<span style="color: #ff0000;">iptables -P OUTPUT ACCEPT</span></p>
<p>#最后保存iptables，这样重启后也能应用<br />
<span style="color: #ff0000;">/etc/init.d/iptables save</span></p>
<p>虽然iptables可以通过命令进行修改插入和删除操作，但是这里极不推荐新手这样来修改iptables，我推荐大家是把我上面的这样的命令(去掉注释)保存下来，一方面是做好记录，另一方面在下次修改的时候可以很方便的修改文本，然后把命令全部粘贴进命令行就行。</p>
<p>另外查看目前iptables的内容指令：<br />
<span style="color: #ff0000;">iptables -L -vn</span></p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/563.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux时间永远快8小时的问题解决</title>
		<link>http://226617.cn/archives/546.htm</link>
		<comments>http://226617.cn/archives/546.htm#comments</comments>
		<pubDate>Thu, 02 Apr 2009 15:44:56 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=546</guid>
		<description><![CDATA[今天在给一朋友搞个环境，发现系统时间永远比现在时间快8小时 date 输出 后面是GMT+8。不知道装系统的时候怎么选的 /usr/sbin/ntpdate time.nist.gov 结果无用，tzselect重新选择Asia/Shanghai也没用。 cat ... ]]></description>
			<content:encoded><![CDATA[<p>今天在给一朋友搞个环境，发现系统时间永远比现在时间快8小时<br />
date 输出 后面是GMT+8。不知道装系统的时候怎么选的<br />
/usr/sbin/ntpdate time.nist.gov 结果无用，tzselect重新选择Asia/Shanghai也没用。<br />
cat 了一下/etc/sysconfig/clock发现ZONE还是GMT+8，手工改成Asia/Shanghai结果还是没用 <img src='http://226617.cn/wp-includes/images/smilies/icon_twisted.gif' alt=':twisted:' class='wp-smiley' /><br />
最后cat了下/etc/localtime 发现有点猫腻<br />
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 了一下终于搞定，真是个奇怪的毛病</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/546.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高并发网络负载linux的内核优化</title>
		<link>http://226617.cn/archives/539.htm</link>
		<comments>http://226617.cn/archives/539.htm#comments</comments>
		<pubDate>Thu, 02 Apr 2009 08:23:30 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=539</guid>
		<description><![CDATA[近期在上squid，由于访问量集中在一台主机上，虽然经过了一些优化但是还是大量存在timewait的链接。打算在细挖下内核的一些网络参数的优化。目前还在调整中，如果照着修改的话先cat 备份下... ]]></description>
			<content:encoded><![CDATA[<p>近期在上squid，由于访问量集中在一台主机上，虽然经过了一些优化但是还是大量存在timewait的链接。打算在细挖下内核的一些网络参数的优化。目前还在调整中，如果照着修改的话先cat 备份下你系统现在的值<br />
1.可以改变滑动窗口的大小 (默认应该就是“1”)<br />
echo &#8220;1&#8243; &gt; /proc/sys/net/ipv4/tcp_window_scaling</p>
<p>2.修改内核共享内存限制 (新的系统应该默认就是这值)<br />
echo 4294967296 &gt;/proc/sys/kernel/shmall<br />
echo 68719476736 &gt;/proc/sys/kernel/shmmax</p>
<p>3.可使用的代理端口<br />
echo &#8220;1024 65000&#8243; &gt; /proc/sys/net/ipv4/ip_local_port_range</p>
<p>4.禁止广播和ping入<br />
echo &#8220;1&#8243; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts<br />
echo &#8220;1&#8243; &gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses</p>
<p>5./proc/sys/net/ipv4/netfilter/ip_conntrack_max 改大到 268435456 默认只有65536 (这个就是连接跟踪表，一味的改大反而会增加系统的负载，一般来讲默认值也够，正确的优化方向是加快连接的关闭释放资源，我这只是在优化初期临时改大。注意/proc/sys/net/ipv4/ip_conntrack_max的值要大于这个值)</p>
<p>6.echo &#8220;1800&#8243; &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established<br />
默认确立连接会在5天后失效，改为半小时后失效，减少ip_conntrack的有效连接数量。</p>
<p>7.echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies<br />
防范SYN DDOS攻击，打开TCPsyncookies,CENTOS4以上的内核是支持的。</p>
<p>8.echo 2048 &gt; /proc/sys/net/ipv4/tcp_max_syn_backlog<br />
SYN列队长度，不要设置太高，会消耗相应的内存。</p>
<p>9.echo 3 &gt; /proc/sys/net/ipv4/tcp_synack_retries<br />
SYN重试次数。</p>
<p>10.echo 3 &gt; /proc/sys/net/ipv4/tcp_syn_retries<br />
SYN重试次数。</p>
<p>还有一些没深入研究的<br />
echo 600 &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_generic_timeout<br />
echo 10 &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close<br />
echo 120 &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait<br />
echo 120 &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait<br />
echo 60 &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait<br />
echo 30 &gt; /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/539.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下文件批量改名的一些方法</title>
		<link>http://226617.cn/archives/519.htm</link>
		<comments>http://226617.cn/archives/519.htm#comments</comments>
		<pubDate>Mon, 30 Mar 2009 07:22:22 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[改名]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=519</guid>
		<description><![CDATA[A 加后缀 1.问题：同以目录下有海量以日期命名的文件，其中有的有后缀，有的以点结尾，如20020101.，20020102.，……，20020101.td，20020102.td…… 要求： 把所有以点结尾的加上后缀.ts 我的方法： #... ]]></description>
			<content:encoded><![CDATA[<p>A 加后缀</p>
<p>1.问题：同以目录下有海量以日期命名的文件，其中有的有后缀，有的以点结尾，如20020101.，20020102.，……，20020101.td，20020102.td……<br />
要求： 把所有以点结尾的加上后缀.ts<br />
我的方法：<br />
  #！/bin/bash<br />
  for files in `ls *.`<br />
  do<br />
        mv $files `echo &#8220;$filests&#8221; `<br />
  done</p>
<p>2. 同上</p>
<p>     mv  $files ${files}ts</p>
<p>3. 同上</p>
<p>     mv  $files  `$files.ts|sed &#8216;s/\.//&#8217; `</p>
<p>4. file ＝>file.txt</p>
<p>       mv  $files  $files.txt</p>
<p>5. *.04  => *04.txt</p>
<p>    mv $files $(echo ${files}.txt|sed &#8216;s/\.//1&#8242;)</p>
<p>    或者</p>
<p>   mv $files  `echo ${files}.txt|sed &#8216;s/\.//1&#8242; `</p>
<p>B 改后缀(.old => .new)</p>
<p>1. rename</p>
<p>     rename .old .new  *</p>
<p>2.<br />
    mv $files ${file%.old}.new</p>
<p>3.<br />
    mv $files `echo $files|tr .old .new`</p>
<p>4.<br />
    mv $files `echo $files|sed &#8216;s/\.old/\.new/&#8217; `</p>
<p>C 去后缀 （*.dat ＝> *)</p>
<p>1.  mv $files `echo $files |sed &#8216;s/\.dat//&#8217; `</p>
<p>2.  mv $files  `echo $files|tr .dat  （4空格）`</p>
<p>D 改前缀 (re* => un*)</p>
<p>1.  mv $files un${$files#re}</p>
<p>2.  mv $files `echo $files | tr re un`</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/519.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何在repair filesystem下面修改文件</title>
		<link>http://226617.cn/archives/487.htm</link>
		<comments>http://226617.cn/archives/487.htm#comments</comments>
		<pubDate>Thu, 26 Mar 2009 15:04:51 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=487</guid>
		<description><![CDATA[今天在把一台cdn重新安装成64位系统，vm上划了台新机器就把挂在老的机器上的存储lun删除后挂在新的机器上，结果下午准备把老的cdn拿出来测试下squid3.0 结果起到一半由于fstab还有挂载存储lun... ]]></description>
			<content:encoded><![CDATA[<p>今天在把一台cdn重新安装成64位系统，vm上划了台新机器就把挂在老的机器上的存储lun删除后挂在新的机器上，结果下午准备把老的cdn拿出来测试下squid3.0 结果起到一半由于fstab还有挂载存储lun的信息，只能进repair filesystem，打算fstab里面删除挂载存储lun的信息又发现整个文件系统是只读挂载，晕，网上搜了搜，用#mount -o remount / 重新挂载根分区搞定了。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/487.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plesk for Linux 安装Zend Optimizer</title>
		<link>http://226617.cn/archives/479.htm</link>
		<comments>http://226617.cn/archives/479.htm#comments</comments>
		<pubDate>Wed, 18 Mar 2009 09:10:15 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Plesk]]></category>
		<category><![CDATA[Zend Optimizer]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=479</guid>
		<description><![CDATA[今天在给一台linux 的plesk安装Zend Optimizer，全部默认安装，结果restart apache后php文件没法访问。查看apache的出错日志里面提示PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini f... ]]></description>
			<content:encoded><![CDATA[<p>今天在给一台linux 的plesk安装Zend Optimizer，全部默认安装，结果restart apache后php文件没法访问。查看apache的出错日志里面提示PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0<br />
后来仔细看了看plesk的php，发现用的是centos自带的php，就找到目录里面看发现是和plesk使用的Ioncube冲突。只要解决下先后加载顺序就行把php.ini里面的：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Zend<span style="">&#93;</span></span>
zend_extension_manager.optimizer<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/Optimizer-3.3.0</span>
zend_extension_manager.optimizer_ts<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/Optimizer_TS-3.3.0</span>
zend_optimizer.version<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">3.3.0</span>
<span style="color: #000099;">zend_extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/ZendExtensionManager.so</span>
<span style="color: #000099;">zend_extension_ts</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/ZendExtensionManager_TS.so</span></pre></td></tr></table></div>

<p>剪切然后修改etc/php.d/ioncube-loader.ini 添加到</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000099;">zend_extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/lib/php/modules//php_ioncube_loader_lin_5.1.so</span></pre></td></tr></table></div>

<p>后面就ok了</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/479.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux ulimit参数介绍</title>
		<link>http://226617.cn/archives/475.htm</link>
		<comments>http://226617.cn/archives/475.htm#comments</comments>
		<pubDate>Thu, 12 Mar 2009 13:53:38 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ulimit]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=475</guid>
		<description><![CDATA[在*NIX将TCP/IP也作为文件来访问，而一般系统默认的访问文件数是1024。如果是在运营级别服务器上面就需要调整系统的最大访问文件数来提高网络并发性能。 调整方法就是ulimit命令，比如ulimit -... ]]></description>
			<content:encoded><![CDATA[<p>在*NIX将TCP/IP也作为文件来访问，而一般系统默认的访问文件数是1024。如果是在运营级别服务器上面就需要调整系统的最大访问文件数来提高网络并发性能。<br />
调整方法就是ulimit命令，比如ulimit -SHn 65535</p>
<p>ulimit 参数介绍:<br />
-H 设置硬件资源限制.<br />
-S 设置软件资源限制.<br />
-a 显示当前所有的资源限制.<br />
-c size:设置core文件的最大值.单位:blocks<br />
-d size:设置数据段的最大值.单位:kbytes<br />
-f size:设置创建文件的最大值.单位:blocks<br />
-l size:设置在内存中锁定进程的最大值.单位:kbytes<br />
-m size:设置可以使用的常驻内存的最大值.单位:kbytes<br />
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n<br />
-p size:设置管道缓冲区的最大值.单位:kbytes<br />
-s size:设置堆栈的最大值.单位:kbytes<br />
-t size:设置CPU使用时间的最大上限.单位:seconds<br />
-v size:设置虚拟内存的最大值.单位:kbytes</p>
<p>一般可以设置 ulimit -SHn 65535<br />
请注意，该命令只在当前shell环境下有效，而且只能由root权限来设置，一般可以放在需要启动服务的命令脚本里，另外，如果你是用root登录来启动服务的话，防止忘记这条命令，一般可以设置在~/.root 下的 .bash_profile 文件或者/etc/rc.local文件中，不建议在/etc/profile 中设置，因为该命令只有root用户有权限将数字增加到超过系统默认的上限（比如 -n 打开文件数 1024 )。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/475.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>使用iptables防止ssh暴力猜解</title>
		<link>http://226617.cn/archives/460.htm</link>
		<comments>http://226617.cn/archives/460.htm#comments</comments>
		<pubDate>Sat, 07 Mar 2009 14:24:40 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=460</guid>
		<description><![CDATA[基于端口，使用iptables的connlimit模块 iptables -I INPUT -p tcp –syn –dport 22 -m connlimit –connlimit-above 2 -j REJECT 一条指令即可以搞掂， –connlimit-above 2表示只允许一个客户开启二个会话,与sshd_config 设置... ]]></description>
			<content:encoded><![CDATA[<p>基于端口，使用iptables的connlimit模块</p>
<p>iptables -I INPUT -p tcp –syn –dport 22 -m connlimit –connlimit-above 2 -j REJECT</p>
<p>一条指令即可以搞掂， –connlimit-above 2表示只允许一个客户开启二个会话,与sshd_config 设置的区别，sshd_config只能设定一个用户最多尝试几次密码</p>
<p>同样也可以设定web服务访问设限</p>
<p>iptables -I INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 30 -j REJECT<br />
这样即可</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/460.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CENTOS 5下双网卡实现网络的高性能HP和高可用HA</title>
		<link>http://226617.cn/archives/458.htm</link>
		<comments>http://226617.cn/archives/458.htm#comments</comments>
		<pubDate>Sat, 07 Mar 2009 14:23:54 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=458</guid>
		<description><![CDATA[高性能HP和高可用HA网络介面设定都是一样的 cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.10.104 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none USERCTL=no cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=e... ]]></description>
			<content:encoded><![CDATA[<p>高性能HP和高可用HA网络介面设定都是一样的<br />
cat /etc/sysconfig/network-scripts/ifcfg-bond0<br />
DEVICE=bond0<br />
IPADDR=192.168.10.104<br />
NETMASK=255.255.255.0<br />
ONBOOT=yes<br />
BOOTPROTO=none<br />
USERCTL=no</p>
<p>cat /etc/sysconfig/network-scripts/ifcfg-eth0<br />
DEVICE=eth0<br />
USERCTL=no<br />
ONBOOT=yes<br />
MASTER=bond0<br />
SLAVE=yes<br />
BOOTPROTO=none</p>
<p>cat /etc/sysconfig/network-scripts/ifcfg-eth1<br />
DEVICE=eth1<br />
USERCTL=no<br />
ONBOOT=yes<br />
MASTER=bond0<br />
SLAVE=yes<br />
BOOTPROTO=none</p>
<p>区别设定文件/etc/modprobe.conf中的mode的值<br />
mode的值表示工作模式，他共有0，1，2，3四种模式，常用的为0，1两种。需根据交换机可提供的工作模式选择。<br />
mode=0表示load balancing (round-robin)为负载均衡方式，两块网卡都工作。<br />
mode=1表示fault-tolerance (active-backup)提供冗余功能，工作方式是主备的工作方式，也就是说默认情况下只有一块网卡工作，另一块做备份。<br />
1.实现网络高性能HP则在/etc/modprobe.conf加入以下二行<br />
alias bond0 bonding<br />
options bond0 miimon=100 mode=0<br />
2.实现网络高可用HA则在/etc/modprobe.conf加入以下二行<br />
alias bond0 bonding<br />
options bond0 miimon=100 mode=1</p>
<p>设好配置文件后，执行如下二条指令即可，无需重启系统<br />
ldconfig<br />
/etc/init.d/network restart</p>
<p>查看 ifconfig -a<br />
bond0     Link encap:Ethernet  HWaddr 00:E0:4C:B1:0F:5A<br />
inet addr:192.168.10.104  Bcast:192.168.10.255  Mask:255.255.255.0<br />
UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1<br />
RX packets:4805 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:2030 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0<br />
RX bytes:414775 (405.0 KiB)  TX bytes:420723 (410.8 KiB)</p>
<p>eth0      Link encap:Ethernet  HWaddr 00:E0:4C:B1:0F:5A<br />
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1<br />
RX packets:2105 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:1194 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000<br />
RX bytes:182497 (178.2 KiB)  TX bytes:240559 (234.9 KiB)<br />
Interrupt:5 Base address:0×8000</p>
<p>eth1      Link encap:Ethernet  HWaddr 00:E0:4C:B1:0F:5A<br />
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1<br />
RX packets:2706 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:848 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000<br />
RX bytes:232638 (227.1 KiB)  TX bytes:182028 (177.7 KiB)<br />
Interrupt:9 Base address:0×6000</p>
<p>lo        Link encap:Local Loopback<br />
inet addr:127.0.0.1  Mask:255.0.0.0<br />
UP LOOPBACK RUNNING  MTU:16436  Metric:1<br />
RX packets:1078 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:1078 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0<br />
RX bytes:1487408 (1.4 MiB)  TX bytes:1487408 (1.4 MiB)</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/458.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下面启动network，startup eth0假死[没解决]</title>
		<link>http://226617.cn/archives/451.htm</link>
		<comments>http://226617.cn/archives/451.htm#comments</comments>
		<pubDate>Thu, 05 Mar 2009 01:30:57 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[eth0]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=451</guid>
		<description><![CDATA[昨天帮忙去给看了一台无法启动的linux主机，电话里说是启动网卡的时候显示eth0 什么错误之类的。 到哪里一看，是台联想万全的服务器，发现是启动到startup eth0提示ifcfg-eth0第x行:wq语法错误，... ]]></description>
			<content:encoded><![CDATA[<p>昨天帮忙去给看了一台无法启动的linux主机，电话里说是启动网卡的时候显示eth0 什么错误之类的。<br />
到哪里一看，是台联想万全的服务器，发现是启动到startup eth0提示ifcfg-eth0第x行:wq语法错误，然后就不动了，只能重启用逐个启动跳过了network进系统一看原来在ifcfg-eth0编辑退出的时候把:wq给写在里面了，汗。。。一直没重启所以没出问题。<br />
改完重启，仍然发现在启动到startup eth0卡死，然后继续跳过network进系统手工启动发现eth0启动后显示出一堆类似网卡工作参数的内容后就没反应了。这时候切换到tty2测试网络没问题。说明网络已经工作正常了，只是启动的脚本假死。ps了一下发现最后有个awk的进程，感觉应该和网卡启动脚本有关，于是kill几次后tty1里面启动脚本显示ok了。在restart一下没问题，但是在尝试重启的时候还是这样，后来时间也晚了，也没地方查资料，感觉好像是awk的问题，所以把network改成了手动启动，放到了rc.local最后面，这样启动卡死至少所有服务和网络都正常了，能够远程ssh连上去操作和重启。</p>
<p>这问题蛮奇怪的，因为说之前是正常的，我看看网卡似乎也是用的内核自带的驱动，莫非问题出在awk上面？</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/451.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php动态方式加载gd编译方法</title>
		<link>http://226617.cn/archives/428.htm</link>
		<comments>http://226617.cn/archives/428.htm#comments</comments>
		<pubDate>Wed, 18 Feb 2009 15:58:11 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[动态加载]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=428</guid>
		<description><![CDATA[首先安装好gd 假设gd是安装在/usr/local/gd2，php是安装在/usr/local/php-cgi的话 cd /usr/local/src/php-5.2.8/ext/gd/ /usr/local/php-cgi/bin/phpize ./configure &#8211;with-gd=/usr/local/gd2 &#8211;with-php-config=/usr/local/php-cgi/bin/php-c... ]]></description>
			<content:encoded><![CDATA[<p>首先安装好gd<br />
假设gd是安装在/usr/local/gd2，php是安装在/usr/local/php-cgi的话</p>
<p>cd /usr/local/src/php-5.2.8/ext/gd/<br />
/usr/local/php-cgi/bin/phpize<br />
./configure &#8211;with-gd=/usr/local/gd2 &#8211;with-php-config=/usr/local/php-cgi/bin/php-config<br />
make &#038;&#038; make install</p>
<p>然后再修改php.ini文件<br />
　　手工修改：查找/usr/local/php-cgi/etc/php.ini中的extension_dir = &#8220;./&#8221;<br />
　　修改为extension_dir = &#8220;/usr/local/php-cgi/lib/php/extensions/no-debug-non-zts-20060613/&#8221;<br />
　　并在此行后增加以下几行，然后保存：<br />
　　extension = &#8220;gd2.so&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/428.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>x64位系统下php iconv函数输出空白问题</title>
		<link>http://226617.cn/archives/425.htm</link>
		<comments>http://226617.cn/archives/425.htm#comments</comments>
		<pubDate>Wed, 18 Feb 2009 15:47:00 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=425</guid>
		<description><![CDATA[接着昨天那个iconv问题继续研究，发现iconv函数数据输出为空。经过分析基本判断为gd库和iconv的冲突问题只要php编译中加入gd库支持就会导致这一情况，但是在x86系统里面缺完全没有这个问题，... ]]></description>
			<content:encoded><![CDATA[<p>接着昨天那个iconv问题继续研究，发现iconv函数数据输出为空。经过分析基本判断为gd库和iconv的冲突问题只要php编译中加入gd库支持就会导致这一情况，但是在x86系统里面缺完全没有这个问题，看来只是x64的问题。解决方法是把gd或者iconv作为作为动态模块加载，总之避免gd和iconv同时使用静态方式编译就行。ps：后来我发现我有一台x64的机器都是静态编译的但是就偏偏没有这个问题真是奇怪了。看来这问题还是有一定前提的</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/425.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>64位系统安装mysql提示libstdc++.so.5: cannot open shared object file问题</title>
		<link>http://226617.cn/archives/375.htm</link>
		<comments>http://226617.cn/archives/375.htm#comments</comments>
		<pubDate>Wed, 07 Jan 2009 07:04:35 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[mysql相关]]></category>
		<category><![CDATA[64位]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=375</guid>
		<description><![CDATA[今天在把博客的系统换成64位装mysql时提示： error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory 之前装32位习惯了yum -y install compat-libstdc++-33 后发现还是这样，... ]]></description>
			<content:encoded><![CDATA[<p>今天在把博客的系统换成64位装mysql时提示：<br />
error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory<br />
之前装32位习惯了yum -y install compat-libstdc++-33 后发现还是这样，才想起来是64位<br />
重新yum -y install compat-libstdc++-33.x86_64 在安装就ok了<br />
所以安装64位系统这些lib库可留心下把64位的也装了。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/375.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>终于搞定了64位centos的nginx+php+mysql编译问题</title>
		<link>http://226617.cn/archives/371.htm</link>
		<comments>http://226617.cn/archives/371.htm#comments</comments>
		<pubDate>Tue, 06 Jan 2009 14:16:16 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[mysql相关]]></category>
		<category><![CDATA[nginx相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[64位]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=371</guid>
		<description><![CDATA[以前也是一时起兴，顺手试了试结果php configure的时候出错，就放在那一直也没空弄。 最近打算把部分虚拟机扩到8G内存测试下压力所以又把64的系统装起来再次尝试。 吃好晚饭忽然觉得有点头... ]]></description>
			<content:encoded><![CDATA[<p>以前也是一时起兴，顺手试了试结果php configure的时候出错，就放在那一直也没空弄。<br />
最近打算把部分虚拟机扩到8G内存测试下压力所以又把64的系统装起来再次尝试。<br />
吃好晚饭忽然觉得有点头晕恶心，什么事情都干不了，就在那里翻config的log，结果发现原来是krb5没装，yum install krb5 krb5-devel后重新configure搞定。忽然发现头也不疼了哈哈。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/371.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>虚拟机部署ifup提示RTNETLINK answers: File exists</title>
		<link>http://226617.cn/archives/363.htm</link>
		<comments>http://226617.cn/archives/363.htm#comments</comments>
		<pubDate>Fri, 26 Dec 2008 13:36:05 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=363</guid>
		<description><![CDATA[vmware vi3 部署centos虚拟机模板启动、ifup eth0的时候提示 RTNETLINK answers: File exists 经过检查原来是ifcfg-eth0中已经写了网关，但是用自定义规则部署虚拟机模板的自动又生成了一个route-eth0来指定网... ]]></description>
			<content:encoded><![CDATA[<p>vmware vi3 部署centos虚拟机模板启动、ifup eth0的时候提示<br />
RTNETLINK answers: File exists</p>
<p>经过检查原来是ifcfg-eth0中已经写了网关，但是用自定义规则部署虚拟机模板的自动又生成了一个route-eth0来指定网关，删除route-eth0后问题解决</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/363.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装rrdtool的一些编译问题</title>
		<link>http://226617.cn/archives/330.htm</link>
		<comments>http://226617.cn/archives/330.htm#comments</comments>
		<pubDate>Mon, 22 Dec 2008 12:26:57 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[cairo]]></category>
		<category><![CDATA[glib]]></category>
		<category><![CDATA[pixman]]></category>
		<category><![CDATA[rrdtool]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=330</guid>
		<description><![CDATA[最近准备测试测试几个监控的软件，今天在装cacti需要的rrdtool的时候，碰到了一些问题。 我用的是源码安装所以rrdtool需要的一些lib库也都是从源码安装的，在装glib的时候make 报错：#error GNU libi... ]]></description>
			<content:encoded><![CDATA[<p>最近准备测试测试几个监控的软件，今天在装cacti需要的rrdtool的时候，碰到了一些问题。</p>
<p>我用的是源码安装所以rrdtool需要的一些lib库也都是从源码安装的，在装glib的时候make 报错：#error GNU libiconv not in use but included iconv.h is from libiconv<br />
解决办法 ./configure &#8211;with-libiconv=gnu 然后make就可以了</p>
<p>还有一个是在装cairo的时候报错应该是没安装pixman，但是安装了后还是同样报错没装pixman，其实环境变量问题，export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/330.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux常用命令桌面</title>
		<link>http://226617.cn/archives/324.htm</link>
		<comments>http://226617.cn/archives/324.htm#comments</comments>
		<pubDate>Sun, 21 Dec 2008 15:07:02 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=324</guid>
		<description><![CDATA[把常用的命令都放在桌面上了，还怕记不住... ]]></description>
			<content:encoded><![CDATA[<p>把常用的命令都放在桌面上了，还怕记不住么</p>
<p><a href="http://226617.cn/wp-content/uploads/2008/12/cli.png"><img class="alignnone size-medium wp-image-325" title="cli" src="http://226617.cn/wp-content/uploads/2008/12/cli-300x240.png" alt="cli" width="300" height="240" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/324.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>vim键位图</title>
		<link>http://226617.cn/archives/321.htm</link>
		<comments>http://226617.cn/archives/321.htm#comments</comments>
		<pubDate>Sun, 21 Dec 2008 15:05:28 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[软件相关]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=321</guid>
		<description><![CDATA[虽然现在linux下面的编辑软件越来越多，可是vim毕竟还是基础，功能也是强大，直到今天我也没完全掌握，放张图方便下以后查阅把 点击图片放... ]]></description>
			<content:encoded><![CDATA[<p>虽然现在linux下面的编辑软件越来越多，可是vim毕竟还是基础，功能也是强大，直到今天我也没完全掌握，放张图方便下以后查阅把<br />
<a href="http://226617.cn/wp-content/uploads/2008/12/vim.gif"></a><a class="highslide-image" onclick="return hs.expand(this, {captionId:'caption_1238316388460'});" href="http://226617.cn/wp-content/uploads/2008/12/vim.gif"><img title="Click to enlarge" src="http://226617.cn/wp-content/uploads/2008/12/vim-300x211.gif" alt="image" /></a></p>
<div id="caption_1238316388460" class="highslide-caption">点击图片放大</div>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/321.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在opensuse11.0下安装vmware workstation</title>
		<link>http://226617.cn/archives/229.htm</link>
		<comments>http://226617.cn/archives/229.htm#comments</comments>
		<pubDate>Fri, 03 Oct 2008 12:05:40 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[vmware相关]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=229</guid>
		<description><![CDATA[先准备安装环境 sudo zypper in make binutils kernel-source gcc gcc-c++ 然后下载安装包 sudo rpm -ivh VMware-workstation-xxx.xx.xx.rpm 如果不先准备环境，按照vmware提示的话会提示安装kernel-headers-pae，这个包其实就是... ]]></description>
			<content:encoded><![CDATA[<p>先准备安装环境<br />
sudo zypper in make binutils kernel-source gcc gcc-c++</p>
<p>然后下载安装包<br />
sudo rpm -ivh VMware-workstation-xxx.xx.xx.rpm </p>
<p>如果不先准备环境，按照vmware提示的话会提示安装kernel-headers-pae，这个包其实就是 kernel-source</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/229.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu中的Load/Unload Cycle Count问题及解决方案</title>
		<link>http://226617.cn/archives/217.htm</link>
		<comments>http://226617.cn/archives/217.htm#comments</comments>
		<pubDate>Mon, 29 Sep 2008 11:58:52 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[硬盘]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=217</guid>
		<description><![CDATA[说明：请大家注意，本文所描述的问题只有笔记本电脑才会出现。 1. 问题描述 几周前收到soldiers童鞋的短信说，Ubuntu伤硬盘？我说没事，好多人都用呢。过了一周，soldiers童鞋又问，Ubuntu伤硬... ]]></description>
			<content:encoded><![CDATA[<p>说明：请大家注意，本文所描述的问题只有笔记本电脑才会出现。</p>
<p>1. 问题描述</p>
<p>几周前收到soldiers童鞋的短信说，Ubuntu伤硬盘？我说没事，好多人都用呢。过了一周，soldiers童鞋又问，Ubuntu伤硬盘？我说我查查看&#8230;.</p>
<p># 安装smart参数查看工具，由此可以查看硬盘的smart信息<br />
$ sudo apt-get install smartmontools</p>
<p># 查看/dev/sda这块硬盘的smart参数, 你可能需要把/dev/sda这部分修改成你的硬盘设备地址<br />
# grep 193是只查看 Load Cycle Count这项</p>
<p>$ sudo smartctl -a /dev/sda | grep 193<br />
193 Load_Cycle_Count 0&#215;0012 090 090 000 Old_age Always &#8211; 109989</p>
<p>这样就可以看到Load/Unload Cycle Count数目了。用Windows的童鞋可以借助Everest工具，查看存储器-&gt;SMART信息，也可以找到相应项的数据。</p>
<p>不看不知道，一看吓一跳，我的是华丽的11W!!! T.T 据说到了60W，就离挂掉不远了。我才用了4个月，算下来照这个速度用下去的话，只能用4*60/10/12=2年&#8230;. 同寝的Acrest童鞋的也过了10W大关哈哈哈。</p>
<p>$ while true; do sudo smartctl -a /dev/sda | grep 193; sleep 300; done;</p>
<p>这样可以每隔5分钟查询一下LCC，一般来说每小时增长在15上下应该是正常的。这样的话即便你每天24小时开着本子，硬盘也可以坚持4年(当然是从理论上来讲)。</p>
<p>1.1 这个Load/Unload Cycle Count到底是什么？</p>
<p>Load/Unload Cycle Count(以下简称为LCC)就是Load/Unload的次数，那么什么叫做Load/Unload呢，下面是一段非常罗嗦的解释，建议不感兴趣的同学出门右转，直接看下一节吧。</p>
<p>大家都知道，硬盘的数据传输是通过磁头读写磁盘上的数据来完成的。在工作过程中，磁头并不与磁盘的盘面直接接触，两者之间有一层很薄的空气薄膜，这层空气薄膜是由于磁盘的高速旋转产生的。如果磁盘停止旋转，空气薄膜消失，磁头则会直接接触到盘片，更详细一点说，会接触到盘片的landing zone，或者叫做start/stop zone，这无疑对盘片的寿命以及对存储在这块区域的数据造成不好的影响。因此在早期阶段，硬盘制造商一般会在对盘片的表面或landing zone部分做特殊的处理，并尽量避免在landing zone存储数据。</p>
<p>但是随着人们对于硬盘传输速度和硬盘容量需求的不断增加，制造商需要不断提高硬盘的面密度，同时要求盘片表面尽可能地平滑，这无疑与之前采用的技术产生了冲突，再加上其他的一些因素，硬盘制造商迫切地需要一种新的方式来替代之前采用的磁头直接接触盘面的行为。这时IBM的工程师们提出了一种叫做Load/Unload的技术。简单来说，Load/Unload技术有点像老式的点唱机，当盘片转速降低无法再产生空气薄膜的时候，就将磁臂以及磁头旋转一下，停靠到磁盘旁边的一个小斜坡上。这样就完全避免了磁头与盘片的直接接触。</p>
<p>总体来说，Load/Unload技术是有利的，比如可以提高硬盘的可靠性：硬盘遭到撞击的时候磁头不会划伤盘面；可以提高硬盘的面密度：不再需要对盘片表面做特殊的处理，可以提供平滑的盘面；以及可以有效地降低功耗：低功耗的程序可以通过多次请求Load/Unload来减少盘片的旋转时间，或者设置旋转超时时间(spin down timeout)来让磁头定期的做Load/Unload等等。</p>
<p>1.2 这个参数值高了有啥危害？</p>
<p>虽然Load/Unload技术有很多优点，但毫无疑问频繁的Load/Unload操作会造成磁头的磨损，严重的话会造成数据读写失效，也就说，硬盘挂了。</p>
<p>那么到底Load/Unload多少次会挂呢？最流行的说法是到60W次，西部数据的一份产品规格说明书上也明确标示出了这一数字。</p>
<p>但也有人指出SMART参数根本就是扯淡，好多坏掉的硬盘SMART值很低好的硬盘SMART值超标，因此根本不能成为评判标准以至于现在好多新机器都直接屏掉。但无论如何，频繁地卸载/挂载总不是什么好事。尤其是当你已经了解到Load/Unload次数过多有可能造成硬盘挂掉的时候，我想无论再有人辟谣，你也不会高枕无忧了。毕竟相对于硬盘本身来说，上面的数据可是要重要的多。</p>
<p>1.3 LCC为啥会那么高？</p>
<p>简单来说，可能有下面几个原因：</p>
<p>1) 硬盘厂商在固件中制定的节能策略过于苛刻，以至于为了节能，硬盘频繁地Load/Unload<br />
2) 操作系统的电源策略过于苛刻。</p>
<p>1.4 其他的发行版有没有这个问题？Windows呢，MAC OS呢？</p>
<p>各大linux发行版好像就Ubuntu被报告有这个问题，但这实际上并不是Ubuntu的电源策略太变态，恰恰相反，默认情况下Ubuntu会直接沿用硬件固件里面的设定。其他的发行版中SUSE也有类似的电源管理的BUG，除此之外的发行版似乎默认会忽略硬盘的这个节能功能，所以不会有类似的问题。</p>
<p>至于Windows，也会出现类似的现象，比如说我宿舍的Acrest童鞋，但我的没有。MAC OS也有报告出现类似的问题。</p>
<p>总体来说这个并不是个别现象，也并不应该算是操作系统的问题。感觉由于Windows下硬盘几乎会一直不停地运作，所以硬件厂商不太重视硬盘固件中的初始设定，比如说我的日立硬盘，电源管理级别被设置为128，结果由于Linux并不像Windows那样频繁读盘，磁头为了节能会频繁地做 Load/Unload操作。</p>
<p>2. 如何修复这个问题？</p>
<p>2.1 硬件修改法 (***推荐使用***)</p>
<p>正如上面所说，如果你的硬盘在Ubuntu下有这个问题，那么有可能是硬件本身的节能策略太激进了。最简单也是最根本的方法，就是用厂商提供的固件修改工具对出厂的默认设置进行修改，比如说日立的Feature Tools。</p>
<p>在Feature Tools中，有一项&#8221;Change Advanced Power Mode&#8221;，默认是128，可以选择从1到254不同的数值。</p>
<p>简单来说，数字越小越节能，数字越大性能越好。Feature Tools中将1－254分成三段并分别做了简单的说明，一般来说，设置到192-254则表示不允许Load/Unload操作，而255则表示禁用APM()。这个数字也就是后文提到的APM级别。</p>
<p>2.2 软件修改法</p>
<p>修改硬盘固件是最根本的解决方案，除此之外，关于在Ubuntu中修改相关策略，网上有很多种不同的解法，有兴趣的童鞋可以看关于这个Bug的讨论, Ubuntu Wiki上关于这个Bug的介绍，起因分析以及解决方案的总结等。基本上流传的方法有这么两种：</p>
<p>2.2.1 启用laptop-mode，通过修改laptop-mode.conf中的相关设置达到控制Load/Unload的目的</p>
<p>2.2.2 直接在/etc/acpi/start.d, resume.d等目录下放置脚本，通过hdparm命令修改APM级别和spin down time.</p>
<p>具体内容见文后附注。归根结底，这两种方法都是利用hdparm工具，通过-B参数修改高级电源管理(APM)级别，通过-S参数修改旋转超时时间 (Spin Down Timeout)，从而控制硬盘的Load/Unload次数。所谓APM级别就是我们上面介绍过的1~255，而Spin-down Timeout就是指硬盘空闲(或者旋转?这个拿不准)多久后才会Spin Down，也就是停转，做Unload操作。相对应的，有一个Spin up Time，这是指硬盘重新启动到正常运转所需要的时间。</p>
<p>Windows下也有一款HDDScan软件可以很方便地做到这一点。这样的软件改法确实有效，但由于hdparm不会将设置写入固件，因此在关机、休眠以及待机之后，由于硬盘掉电，这些通过软件的设置会失效，需要重新启用一次。目前这两种方法在我的机器上的测试结果是待机唤醒之后参数不会重新启用。实际上，laptop-mode只会在开机的时候才会应用我们设定的参数，而 acpi的resume.d目录下放置的脚本并不会被执行，不知道这是不是个别现象。 所以如果大家非要用软件的修改方法时，推荐下面这一种。</p>
<p>2.2.3 pm.utils大法 （推荐使用）</p>
<p>除了这两种修改方法之外，还有另外一种通过pm.utils来调用hdparm的方法。这实际上是Suse的一个解决方案。pm.utils全称是 Power Management Utilities，与acpi类似，它可以通过加入Hook脚本的方法在待机、休眠和唤醒的时候修复一些待机/休眠方面的Bug或者实现某些特定的功能。pm.utils很有可能会在8.10中就取代acpi，所以从这个意义上来讲这个方案也会有更长的效用。具体步骤如下：</p>
<p>1) 首先做一些配置，主要就是设置省电模式开启和关闭的模式下hdparm的参数，具体的内容脚本中有注释。</p>
<p>你可能需要将“/dev/sda&#8221;修改成你的硬件设备,比如你有两个硬盘，可以修改为&#8221;/dev/sda /dev/sdb&#8221;。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>pm<span style="color: #000000; font-weight: bold;">/</span>config.d<span style="color: #000000; font-weight: bold;">/</span>disk
&nbsp;
<span style="color: #666666; font-style: italic;"># Configure disk power management settings to ensure both</span>
<span style="color: #666666; font-style: italic;"># long disk life and good power management.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Space delimited list of disk devices this affects.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #007800;">DEVICES_DISK_PM_NAMES</span>=<span style="color: #ff0000;">&quot;/dev/sda&quot;</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Power management modes</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Powersave mode off</span>
<span style="color: #666666; font-style: italic;"># Set APM as 192</span>
<span style="color: #666666; font-style: italic;"># Set spin-down for 30 minutes</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #007800;">DEVICES_DISK_PM_POWERSAVE_OFF</span>=<span style="color: #ff0000;">&quot;hdparm -q -B 192 -q -S 241 -q -M 128&quot;</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Powersave mode on</span>
<span style="color: #666666; font-style: italic;"># Enable APM to conservative 192 and set spin-down for 21 minutes</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #007800;">DEVICES_DISK_PM_POWERSAVE_ON</span>=<span style="color: #ff0000;">&quot;hdparm -q -B 192 -q -S 252 -q -M 128&quot;</span></pre></td></tr></table></div>

<p>2) 在power.d中加入Hook脚本，作用是在使用电池和AC电源的时候可以自动切换省电模式。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>pm<span style="color: #000000; font-weight: bold;">/</span>power.d
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vi</span> disk
&nbsp;
<span style="color: #666666; font-style: italic;">#!/bin/bash</span>
. <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>pm-utils<span style="color: #000000; font-weight: bold;">/</span>functions
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>pm<span style="color: #000000; font-weight: bold;">/</span>config.d<span style="color: #000000; font-weight: bold;">/</span>disk
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${DEVICES_DISK_PM_NAMES}</span>&quot;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
<span style="color: #c20cb9; font-weight: bold;">true</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;**enabled pm for harddisk&quot;</span>
<span style="color: #000000; font-weight: bold;">for</span> DISK_NAME <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #800000;">${DEVICES_DISK_PM_NAMES}</span><span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #800000;">${DEVICES_DISK_PM_POWERSAVE_ON}</span> <span style="color: #800000;">${DISK_NAME}</span>
<span style="color: #000000; font-weight: bold;">done</span> <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #c20cb9; font-weight: bold;">false</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;**disabled pm for harddisk&quot;</span>
<span style="color: #000000; font-weight: bold;">for</span> DISK_NAME <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #800000;">${DEVICES_DISK_PM_NAMES}</span><span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #800000;">${DEVICES_DISK_PM_POWERSAVE_OFF}</span> <span style="color: #800000;">${DISK_NAME}</span>
<span style="color: #000000; font-weight: bold;">done</span> <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x disk</pre></td></tr></table></div>

<p>3) 在sleep.d中加入脚本，目的是在休眠/待机之后唤醒的时候重新设定hdparm的参数：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
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
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>pm<span style="color: #000000; font-weight: bold;">/</span>sleep.d<span style="color: #000000; font-weight: bold;">/</span>
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vi</span> disk
&nbsp;
<span style="color: #666666; font-style: italic;">#!/bin/bash</span>
. <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>pm-utils<span style="color: #000000; font-weight: bold;">/</span>functions
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>pm<span style="color: #000000; font-weight: bold;">/</span>config.d<span style="color: #000000; font-weight: bold;">/</span>disk
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-z</span> <span style="color: #800000;">${DEVICES_DISK_PM_NAMES}</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
thaw<span style="color: #000000; font-weight: bold;">|</span>resume<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>on_ac_power;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;**disabled PM for harddisk&quot;</span>
<span style="color: #000000; font-weight: bold;">for</span> DISK_NAME <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #800000;">${DEVICES_DISK_PM_NAMES}</span><span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #800000;">${DEVICES_DISK_PM_POWERSAVE_OFF}</span> <span style="color: #800000;">${DISK_NAME}</span>
<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;**enabled PM for harddisk&quot;</span>
<span style="color: #000000; font-weight: bold;">for</span> DISK_NAME <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #800000;">${DEVICES_DISK_PM_NAMES}</span><span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #800000;">${DEVICES_DISK_PM_POWERSAVE_ON}</span> <span style="color: #800000;">${DISK_NAME}</span>
<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x disk</pre></td></tr></table></div>

<p>＊＊＊注意最后一定要为disk脚本添加执行权限。否则pm.tuils不会自动执行这段脚本</p>
<p>4) 如果你没有启用laptop mode （默认是不启用的），可以跳过这部分了。</p>
<p>由于Ubuntu中acpi和pm.utils是共存的，所以如果你启用了laptop mode，那么在改变电源状态(指电池-&gt;AC电源或者反之)的时候，acpi会在启用/停用laptop mode的同时设置hdparm参数，会覆盖掉pm-utils所做的设置。</p>
<p>所以如果你启用了laptop mode的话，需要做如下修改：</p>
<p>1&#8242; $ sudo vi /etc/default/acpi-support</p>
<p>将最后的</p>
<p>SPINDOWN_TIME=12</p>
<p>修改为</p>
<p>SPINDOWN_TIME=241</p>
<p>2&#8242; $ sudo vi /etc/acpi/power.sh</p>
<p>将function laptop_mode_enable部分的</p>
<p>$HDPARM -B 1 /dev/$drive 2&gt;/dev/null</p>
<p>修改成</p>
<p>$HDPARM -B 192 /dev/$drive 2&gt;/dev/null</p>
<p>上述的解决方案在Dell Inspiron 700m + Ubuntu 8.04.1上测试通过。在待机唤醒之后参数会重新被设置，但是由于我的机器上休眠有问题，所以没有办法测试休眠。但理论上来也是可以的。</p>
<p>3. 我想定期检测Load_Cycle_Count，怎么办？</p>
<p>好办，这里是一个脚本，具体用法在注释里面粗体标明了。(不好意思&#8230;注释好像比代码都长)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
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
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># @Description:</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># check_lcc v0.2</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Check Load_Cycle_Count from S.M.A.R.T info of your hard drive</span>
<span style="color: #666666; font-style: italic;"># when power on and off and Save them to $FILE in following format:</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># LCC TIME</span>
<span style="color: #666666; font-style: italic;"># ON 110044 18:05:00 2008-09-08</span>
<span style="color: #666666; font-style: italic;"># OFF 110044 18:10:03 2008-09-08</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># &quot;ON&quot; indicates POWER ON while &quot;OFF&quot; indicates POWER OFF, LCC is</span>
<span style="color: #666666; font-style: italic;"># exactly Load_Cycle_Count of your hard drive at TIME.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># @Usages:</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># 1. sudo vi /etc/init.d/check_lcc</span>
<span style="color: #666666; font-style: italic;"># 2. copy all the contents of this script to it</span>
<span style="color: #666666; font-style: italic;"># *** Note that u need to modify &quot;FILE&quot; as what u want.</span>
<span style="color: #666666; font-style: italic;"># save and quit.</span>
<span style="color: #666666; font-style: italic;"># 3. sudo chmod +x /etc/init.d/check_lcc</span>
<span style="color: #666666; font-style: italic;"># 4. sudo update-rc.d check_lcc start 1 2 . stop 99 0 6 .</span>
<span style="color: #666666; font-style: italic;"># 5. Have fun.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This script was tested under Ubuntu 8.04.1.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># @Author:</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># breaddawson@gmail.com</span>
<span style="color: #666666; font-style: italic;"># 2008/09/07</span>
&nbsp;
<span style="color: #007800;">FILE</span>=<span style="color: #ff0000;">&quot;/home/bread/lcc_report.txt&quot;</span>
<span style="color: #007800;">STAT</span>=<span style="color: #000000; font-weight: bold;">`</span>smartctl <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #000000;">193</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-nr</span> <span style="color: #ff0000;">&quot;s/.*[[:space:]]([[:digit:]]{1,})$/\1/p&quot;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span> &quot;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">'%T %F'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">STAT</span>=<span style="color: #ff0000;">&quot;ON <span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #007800;">$STAT</span>
<span style="color: #000000; font-weight: bold;">;;</span>
stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">STAT</span>=<span style="color: #ff0000;">&quot;OFF<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #007800;">$STAT</span>
<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usages: $0 {start|stop}&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">2</span>
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">2</span>
<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #007800;">$STAT</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$FILE</span></pre></td></tr></table></div>

<p>按照上面的说明操作之后，LCC的结果就会存在你定义的log文件里面了。可以定期打开查看。</p>
<p>4. 最后附上之前的两种方法，启用laptop mode和添加acpi脚本。</p>
<p>4.1. 加入acpi脚本</p>
<p>1) 为使用电源和电池的时候定制不同的hdparm参数。你可能需要把/dev/sda修改成你的硬盘设备。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$sudo</span> <span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000;">99</span>-hdd-ugly-fix.sh
&nbsp;
<span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #000000; font-weight: bold;">if</span> on_ac_power; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #666666; font-style: italic;"># on AC so don't do any head parking</span>
hdparm <span style="color: #660033;">-B</span> <span style="color: #000000;">254</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #666666; font-style: italic;"># you might need 255 or a different value</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #666666; font-style: italic;"># either on battery or power status could not be determined</span>
<span style="color: #666666; font-style: italic;"># so quickly park the head to protect the disk</span>
hdparm <span style="color: #660033;">-B</span> <span style="color: #000000;">192</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p>2) 将如上脚本安装到如下4个地方</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$sudo</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000;">99</span>-hdd-ugly-fix.sh <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>acpi<span style="color: #000000; font-weight: bold;">/</span>resume.d<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #007800;">$sudo</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000;">99</span>-hdd-ugly-fix.sh <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>acpi<span style="color: #000000; font-weight: bold;">/</span>start.d<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #007800;">$sudo</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000;">99</span>-hdd-ugly-fix.sh <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>acpi<span style="color: #000000; font-weight: bold;">/</span>ac.d<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #007800;">$sudo</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000;">99</span>-hdd-ugly-fix.sh <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>acpi<span style="color: #000000; font-weight: bold;">/</span>battery.d<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>这个方案比开启laptop简单且方便。因此如果你实在是不想用pm.utils的时候，推荐使用这种方法。</p>
<p>4.2. 启用laptop mode</p>
<p>Ubuntu 8.04测试有效，但是待机/休眠唤醒之后设置会丢失。laptop mode 模块在Ubuntu 8.04中是默认包含的，只是没有启用。下面是具体的设置方法。</p>
<p>1) /etc/default/acpi-support中修改</p>
<p># 启用laptop模式<br />
ENABLE_LAPTOP_MODE=true</p>
<p># 将spin down 时间改成 (241-240)*30min = 30min<br />
# spin down time决定硬盘闲置多久以后关闭主轴电动机以节省功耗，0表示永远不关闭<br />
# 具体的解释看 man hdparm的-S部分<br />
SPINDOWN_TIME=241</p>
<p>2) /etc/laptop-mode/laptop-mode.conf中修改</p>
<p># 即便是接上电源也用laptop mode<br />
ENABLE_LAPTOP_MODE_ON_AC=1</p>
<p># 显示器关闭的时候也用laptop mode<br />
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1</p>
<p># 让laptop mode控制硬盘闲置多长时间才卸载<br />
CONTROL_HD_IDLE_TIMEOUT=1</p>
<p># 改成半小时<br />
LM_AC_HD_IDLE_TIMEOUT_SECONDS=1800<br />
LM_BATT_HD_IDLE_TIMEOUT_SECONDS=1800<br />
NOLM_HD_IDLE_TIMEOUT_SECONDS=7200</p>
<p># 让laptop mode来控制硬盘的电源管理<br />
CONTROL_HD_POWERMGMT=1</p>
<p># 192表示不关闭，从128-254都表示不关闭，越大能耗越大<br />
# 具体可以 man hdparm 看-B<br />
BATT_HD_POWERMGMT=192<br />
LM_AC_HD_POWERMGMT=254<br />
NOLM_AC_HD_POWERMGMT=254</p>
<p>3) /etc/acpi/power.sh中</p>
<p>把 &#8220;$HDPARM -B 1 /dev/$drive 2&gt;/dev/null&#8221;<br />
修改为 &#8220;$HDPARM -B 192 /dev/$drive 2&gt;/dev/null&#8221;</p>
<p>4) 禁用pm.utils的部分功能</p>
<p>$ sudo chmod -x /usr/lib/pm-utils/power.d/laptop-tools</p>
<p>否则laptop-mode不会随机启动。</p>
<p>5) 重启后，cat /proc/sys/vm/laptop_mode</p>
<p>结果是2表示laptop-mode已经启动，是0表示还未启动，请仔细检查上面的设置是否有遗漏。</p>
<p>###############我是很郁闷的分割线###############</p>
<p>附:关于为啥要禁用pm.utils，具体的解释如下：</p>
<p>我从网上找到了laptop mode的解决方案之后，按照说明一步步操作，但是重新启动之后，查看cat /proc/sys/vm/laptop_mode，发现仍然是0.(是2才表示已经启动)。查看/etc/rc2.d/目录下确实有 S99laptop-mode，这说明系统确实会加载这个服务(这个目录下的文件都是个符号链接，会链接到/etc/init.d目录下的同名脚本)。后来Google了一下发现这样的解释：</p>
<p>首先来说/proc/sys/vm/laptop_mode这个变量和初始化进程laptop-mode并不是一个意思。前者是个内核控制的变量，作用是将磁盘写操作聚簇，后者是一个脚本。</p>
<p>其次，Hardy加入了pm-utils，会覆盖或忽略一部分根据linux传统的配置。为了解决这个问题，可以修改/usr/lib/pm-utils/power.d/laptop-tools中相关的内容或者运行下述命令：</p>
<p>$ sudo chmod -x /usr/lib/pm-utils/power.d/laptop-tools</p>
<p>这条命令会禁用pm-utils的部分功能，从而修复你所遇到的问题(指laptop-mode不会随机启动)。注意得重启以后设置才会生效。</p>
<p>实际上pm-utils盲目地覆盖掉laptop-mode或者是/etc/sysctl.conf中的配置，所以chmod -x禁用相关脚本后, 在从AC POWER转到电池供电的时候，pm-utils就不会执行相关的脚本(laptop-tools)，从而也就不会覆盖相关的设置。这种做法改动最小，如果之后你想重新启用pm-utils的这部分功能，只需要chmod +x就可以了。</p>
<p>###############很郁闷的分割线又来啦###############</p>
<p>5. 最后是References:</p>
<p>日立关于Load/Unload技术的解释: Load/Unload白皮书下载<br />
StorageView关于Load/Unload技术的解释：http://www.storagereview.com/guide2000/ref/hdd/perf/qual/featuresHead.html<br />
西部数据的规格：http://www.wdc.com/en/library/portable/2879-001121.pdf<br />
日立的Feature Tool下载:http://www.hitachigst.com/hdd/support/download.htm#FeatureTool<br />
Bug报告页面： https://launchpad.net/bug59695.html<br />
Ubuntu Wiki的Bug总结：https://wiki.ubuntu.com/DanielHahler/Bug59695<br />
Ubuntu Dev解释：http://www.advogato.org/person/mjg59/diary/82.html<br />
laptop mode的解决方案：https://launchpad.net/ubuntu/+source/acpi-support/+bug/59695/comments/63<br />
acpi的解决方案：http://ubuntuforums.org/showthread.php?p=5031046<br />
Suse的解决方案：http://en.opensuse.org/Disk_Power_Management<br />
休眠后重新设置pm.utils的方案：https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/235105<br />
pm.utils的wiki:http://pm-utils.freedesktop.org/wiki/<br />
Suse的pm.utils介绍：http://en.opensuse.org/Pm-utils<br />
CnBeta的报道：http://www.cnbeta.com/articles/42191.htm<br />
CnBeta的一个总结：http://www.cnbeta.com/articles/42421.htm<br />
国内用户的一个解决方案: http://lymanrb.blogspot.com/2008/01/loadunload-bug.html<br />
Ubuntu中文论坛的讨论: http://forum.ubuntu.org.cn/viewtopic.php?p=555500<br />
关于laptop mode和pm.utils冲突的解释：http://ubuntuforums.org/showthread.php?t=867728<br />
Windows下修改硬盘APM和Spin-down time的工具：http://hddscan.com/</p>
<p>6. 最最后</p>
<p>折腾这个问题费了我一整天(实际上是半天，不过那天我中午才起&#8230;)，总结这些破烂方法，再加上反复试验确定某个方法是否有效，硬着头皮分析脚本的功能，零零碎碎加起来也有一整天的时间，再加上写这篇总结，又花去一整天加上两节入学教育的时间(罪过啊罪过啊)。到此为止距离开始解决这个问题就已经过去整整一周了。就这还没总结全，好多东西都还没有写上来。不过倒是学到了不少东西，硬盘的原理是确确实实复习了一遍了又，另外学了些写Shell脚本的技巧以及 ACPI和pm.utils的机制。感觉系统里面同时有俩搞电源管理的东西实在是太FT了，因为会有冲突的部分，好在据说Intrepid要搞掉acpi 只用pm.utils，也许会清净一些。</p>
<p>无论如何总算是写完了。一边实验一边记录，一度想放弃了(实在是太费时间，感觉也没太大的意义)，但一个是为了我的宝贝硬盘考虑(钱啊钱啊！)，又觉得折腾了那么多不记录下来，功夫不就都白费了。正好今天有两节入学教育，于是就勇敢地抱本过去，写完最后一段哈哈哈。</p>
<p>贴到这里，希望会对遇到这个问题的人有所帮助。</p>
<p>[原文链接]</p>
<p>版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.<br />
本文网址: http://linuxtoy.org/archives/ubuntu-harddisk.html</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/217.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos5默认网关大搜捕</title>
		<link>http://226617.cn/archives/210.htm</link>
		<comments>http://226617.cn/archives/210.htm#comments</comments>
		<pubDate>Sun, 28 Sep 2008 15:13:21 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[网关]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=210</guid>
		<description><![CDATA[centos里面能加网关的地方太多了，有的时候往往会死改活该怎么也改不了网关。这里总结下 默认网关通常由如下配置文件决定 /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network... ]]></description>
			<content:encoded><![CDATA[<p>centos里面能加网关的地方太多了，有的时候往往会死改活该怎么也改不了网关。这里总结下<br />
默认网关通常由如下配置文件决定<br />
/etc/sysconfig/network<br />
/etc/sysconfig/network-scripts/ifcfg-eth0<br />
/etc/sysconfig/network-scripts/route-eth0<br />
/etc/sysconfig/static-routes<br />
还不知道有没有别的地方了，以后知道了再加</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/210.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>centos关闭ipv6不能忘记/etc/sysconfig/network</title>
		<link>http://226617.cn/archives/208.htm</link>
		<comments>http://226617.cn/archives/208.htm#comments</comments>
		<pubDate>Sun, 28 Sep 2008 15:09:41 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[ipv6]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=208</guid>
		<description><![CDATA[redhat系列的linux 关闭ipv6通常就是在 /etc/sysconfig/network里加入 alias net-pf-10 off 其实还有个地方得留意就是/etc/sysconfig/network 加入里面的NETWORKING_IPV6=yes 的话那/etc/sysconfig/network再改也是没用的... ]]></description>
			<content:encoded><![CDATA[<p>redhat系列的linux 关闭ipv6通常就是在 /etc/sysconfig/network里加入<br />
alias net-pf-10 off</p>
<p>其实还有个地方得留意就是/etc/sysconfig/network<br />
加入里面的NETWORKING_IPV6=yes 的话那/etc/sysconfig/network再改也是没用的。</p>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/208.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何在linux上安装intel wifi link 5100的无线网卡驱动</title>
		<link>http://226617.cn/archives/163.htm</link>
		<comments>http://226617.cn/archives/163.htm#comments</comments>
		<pubDate>Thu, 04 Sep 2008 14:24:53 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=163</guid>
		<description><![CDATA[新本本就是麻烦，什么都是新的，驱动都难找。逛了一个晚上外国论坛总算发现个方法，明天试试 Download compat-wireless from http://linuxwireless.org/download/co&#8230;ss-2.6.tar.bz2 Untar somewhere (I&#8217;m choosing ... ]]></description>
			<content:encoded><![CDATA[<p>新本本就是麻烦，什么都是新的，驱动都难找。逛了一个晚上外国论坛总算发现个方法，明天试试</p>
<ol style="list-style-type: decimal;">
<li>Download compat-wireless from <a href="http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2" target="_blank">http://linuxwireless.org/download/co&#8230;ss-2.6.tar.bz2</a></li>
<li>Untar somewhere (I&#8217;m choosing /usr/src/) and I&#8217;m doing everything as root from here on:
<div style="margin: 5px 20px 20px;">
<div class="smallfont" style="margin-bottom: 2px;">Code:</div>
<pre class="alt2" style="margin: 0px; overflow: auto; width: 640px; height: 82px; text-align: left; border: 1px inset; padding: 6px;" dir="ltr">sudo su
cd /usr/src
tar xjf compat-wireless-2.6.tar.bz2
cd compat-wireless-2008-08-06</pre>
</div>
</li>
<li>Note, as of this writing (8/24/0<img class="inlineimg" title="Cool" src="http://ubuntuforums.org/images/smilies/icon_cool.gif" border="0" alt="" />, the most recent compat wireless package available was dated 8/6/08, but it does contain support for the 5100 card.</li>
<li>Edit the config.mk file and add the following lines at the end to turn on support for the 5100 card and also for the rfkill switch:
<div style="margin: 5px 20px 20px;">
<div class="smallfont" style="margin-bottom: 2px;">Code:</div>
<pre class="alt2" style="margin: 0px; overflow: auto; width: 640px; height: 50px; text-align: left; border: 1px inset; padding: 6px;" dir="ltr">CONFIG_IWL5000=y
CONFIG_IWLWIFI_RFKILL=y</pre>
</div>
</li>
<li>Download the firmware <a href="http://www.intellinuxwireless.org/?p=iwlwifi&amp;n=downloads" target="_blank">iwlwifi-5000-ucode-5.4.A.11.tar.gz</a></li>
<li>
<div style="margin: 5px 20px 20px;">
<div class="smallfont" style="margin-bottom: 2px;">Code:</div>
<pre class="alt2" style="margin: 0px; overflow: auto; width: 640px; height: 50px; text-align: left; border: 1px inset; padding: 6px;" dir="ltr">tar xzf iwlwifi-5000-ucode-5.4.A.11.tar.gz
sudo cp iwlwifi-5000-1.ucode /lib/firmware/2.6.24-19-generic/</pre>
</div>
</li>
<li>
<div style="margin: 5px 20px 20px;">
<div class="smallfont" style="margin-bottom: 2px;">Code:</div>
<pre class="alt2" style="margin: 0px; overflow: auto; width: 640px; height: 66px; text-align: left; border: 1px inset; padding: 6px;" dir="ltr">make
make install
make load</pre>
</div>
<p>This will add support for the 5100 card to the iwl4965 kernel module. This is probably temporary and from what I read the 2.6.26 kernels already have an iwl5000 module&#8230;</li>
<li>
<div style="margin: 5px 20px 20px;">
<div class="smallfont" style="margin-bottom: 2px;">Code:</div>
<pre class="alt2" style="margin: 0px; overflow: auto; width: 640px; height: 482px; text-align: left; border: 1px inset; padding: 6px;" dir="ltr">lshw -C network
  *-network DISABLED
       description: Wireless interface
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:0e:00.0
       logical name: wmaster0
       version: 00
       serial: 00:16:ea:73:64:e0
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list logical ethernet physical wireless
       configuration: broadcast=yes driver=iwl4965 latency=0 module=iwl4965 multicast=yes wireless=IEEE 802.11abgn
  *-network
       description: Ethernet interface
       product: RTL8111/8168B PCI Express Gigabit Ethernet controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:14:00.0
       logical name: eth0
       version: 02
       serial: 00:1e:ec:55:88:02
       size: 100MB/s
       capacity: 1GB/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.2LK duplex=full ip=192.168.1.8 latency=0 link=yes module=r8169 multicast=yes port=twisted pair speed=100MB/s</pre>
</div>
</li>
<li>And this is where I get stuck. The wlan0 device is not enabled. I think this is related somehow to the hardware RF Kill switch (airplane switch) that disables wireless. This machine has a hardware switch and a software Fn+F2 option. Neither combination has worked for me. Toggling the hardware switch generates errors in the syslog:
<div style="margin: 5px 20px 20px;">
<div class="smallfont" style="margin-bottom: 2px;">Code:</div>
<pre class="alt2" style="margin: 0px; overflow: auto; width: 640px; height: 50px; text-align: left; border: 1px inset; padding: 6px;" dir="ltr">Aug 24 16:29:38 wta-mobile kernel: [ 1576.686265] atkbd.c: Unknown key pressed (translated set 2, code 0xf1 on isa0060/serio0).
Aug 24 16:29:38 wta-mobile kernel: [ 1576.686275] atkbd.c: Use 'setkeycodes e071 &lt;keycode&gt;' to make it known.</pre>
</div>
</li>
<li>This <a href="http://ubuntuforums.org/showthread.php?t=877789" target="_blank">thread</a> talks about the rfkill switch, but none of the suggestions have worked for me.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/163.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

