<?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>走出Windows &#187; Linux</title>
	<atom:link href="http://www.killwin.com/articles/category/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.killwin.com</link>
	<description>抛弃Windows就是走向高效率</description>
	<lastBuildDate>Fri, 23 Sep 2011 12:50:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>关于qmail发邮件故障的一些小问题</title>
		<link>http://www.killwin.com/articles/403.html</link>
		<comments>http://www.killwin.com/articles/403.html#comments</comments>
		<pubDate>Sat, 27 Aug 2011 19:09:03 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=403</guid>
		<description><![CDATA[说这是小问题，其实也不小，折腾了我将近半年时间，那就是，服务器发送邮件到yahoo的邮箱，客户总是收不到邮件，所以一直建议客户不要使用yahoo的邮箱，今天坐下来，立志解决这个问题，一坐就坐到了凌晨三点钟。。。下面就来记录下我的解决过程 公司服务器给很多邮箱发邮件都正常，唯独yahoo的不正常，怀疑是yahoo把ip加入黑名单了，于是用telnet模拟了一下SMTP发信过程（网上教程很多，搜一下一大把，记得把消息全部写在记事本里面，然后只要复制粘贴就行了，不然手工输入很容易超时退出了），发现yahoo竟然能收到邮件，只不过是在垃圾箱里面，但是至少比收不到邮件强一点吧。这样的话，说明不是被yahoo加入黑名单。 然后我又在服务器上面tcpdump了一下 tcpdump -i eth0 -s 65535 -w /some/file 网上资料说，tcpdump默认dunp出来的数据只有200多个字节还是bit，所以要-s 65535一下，-w是写入结果到某文件，这样的话，可以用wireshark直接分析导出的数据，不然的话，分析数据累死你不偿命的。 tcpdump运行起来立即发送一封邮件到yahoo，然后重新运行tcpdump，再发一封到google邮箱，这样就得到了两个文件供分析。 分析结果令我大吃一惊，发送到google的邮件正常与服务器通讯，监控yahoo的那个文件，竟然没有发现任何一个smtp会话，于是乎，在网上找了一整天的资料，终于找到了qmail的日志，用下面的命令监控日志 tail -f /var/log/qmail/qmail-send/current 然后发信，发现了错误 @400000004e5933e615fe4984 delivery 2: deferral: CNAME_lookup_failed_temporarily._(#4.4.3)/ 继续上网查资料，然后发现，这个错误产生的原因是qmail没打bigdns的补丁，补丁在这里下载 http://www.ckdhr.com/ckd/qmail-103.patch，虽然是1.03的补丁，可是到了1.06，这个问题依旧没有解决，真的要怀疑一下qmail的开发人员了，虽然是开源软件，但是也不要这样绝情吧，哎，还算不错的是，虽然是1.03的补丁，但是经过我测试，1.06版本依然适用 把这个文件下载到 /usr/portage/mail-mta/netqmail/files里面，然后编辑这个文件 /usr/portage/mail-mta/netqmail/netqmail-1.06.ebuild 在大约84行的地方找到 epatch "${FILESDIR}"/${PV}-exit.patch epatch "${FILESDIR}"/${PV}-readwrite.patch 在下面加一行 epatch "${FILESDIR}"/qmail-103.patch 然后执行 ebuild /usr/portage/mail-mta/netqmail/netqmail-1.06.ebuild manifest 重新编译安装qmail，重启一些服务，/etc/init.d/svscan restart 再次测试，发送到yahoo成功！]]></description>
			<content:encoded><![CDATA[<p>说这是小问题，其实也不小，折腾了我将近半年时间，那就是，服务器发送邮件到yahoo的邮箱，客户总是收不到邮件，所以一直建议客户不要使用yahoo的邮箱，今天坐下来，立志解决这个问题，一坐就坐到了凌晨三点钟。。。下面就来记录下我的解决过程</p>
<p>公司服务器给很多邮箱发邮件都正常，唯独yahoo的不正常，怀疑是yahoo把ip加入黑名单了，于是用telnet模拟了一下SMTP发信过程（网上教程很多，搜一下一大把，记得把消息全部写在记事本里面，然后只要复制粘贴就行了，不然手工输入很容易超时退出了），发现yahoo竟然能收到邮件，只不过是在垃圾箱里面，但是至少比收不到邮件强一点吧。这样的话，说明不是被yahoo加入黑名单。</p>
<p>然后我又在服务器上面tcpdump了一下</p>
<p>tcpdump -i eth0 -s 65535 -w /some/file</p>
<p>网上资料说，tcpdump默认dunp出来的数据只有200多个字节还是bit，所以要-s 65535一下，-w是写入结果到某文件，这样的话，可以用wireshark直接分析导出的数据，不然的话，分析数据累死你不偿命的。</p>
<p>tcpdump运行起来立即发送一封邮件到yahoo，然后重新运行tcpdump，再发一封到google邮箱，这样就得到了两个文件供分析。</p>
<p>分析结果令我大吃一惊，发送到google的邮件正常与服务器通讯，监控yahoo的那个文件，竟然没有发现任何一个smtp会话，于是乎，在网上找了一整天的资料，终于找到了qmail的日志，用下面的命令监控日志</p>
<p>tail -f /var/log/qmail/qmail-send/current</p>
<p>然后发信，发现了错误</p>
<p>@400000004e5933e615fe4984 delivery 2: deferral: CNAME_lookup_failed_temporarily._(#4.4.3)/</p>
<p>继续上网查资料，然后发现，这个错误产生的原因是qmail没打bigdns的补丁，补丁在这里下载 <a href="http://www.ckdhr.com/ckd/qmail-103.patch" target="_blank">http://www.ckdhr.com/ckd/qmail-103.patch</a>，虽然是1.03的补丁，可是到了1.06，这个问题依旧没有解决，真的要怀疑一下qmail的开发人员了，虽然是开源软件，但是也不要这样绝情吧，哎，还算不错的是，虽然是1.03的补丁，但是经过我测试，1.06版本依然适用</p>
<p>把这个文件下载到 /usr/portage/mail-mta/netqmail/files里面，然后编辑这个文件</p>
<p>/usr/portage/mail-mta/netqmail/netqmail-1.06.ebuild</p>
<p>在大约84行的地方找到</p>
<blockquote><p>    epatch "${FILESDIR}"/${PV}-exit.patch<br />
    epatch "${FILESDIR}"/${PV}-readwrite.patch</p></blockquote>
<p>在下面加一行</p>
<p>epatch "${FILESDIR}"/qmail-103.patch</p>
<p>然后执行 </p>
<p>ebuild /usr/portage/mail-mta/netqmail/netqmail-1.06.ebuild manifest</p>
<p>重新编译安装qmail，重启一些服务，/etc/init.d/svscan restart</p>
<p>再次测试，发送到yahoo成功！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/403.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于PPTP 和L2TP VPN的端口 以及linux下面查看占用端口进程的方法</title>
		<link>http://www.killwin.com/articles/400.html</link>
		<comments>http://www.killwin.com/articles/400.html#comments</comments>
		<pubDate>Fri, 26 Aug 2011 08:01:01 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=400</guid>
		<description><![CDATA[l2tp 1701/udp pptp 1723/tcp 懒得说明了，真正懂的一眼就看懂了，下面说说怎么查占用端口的进程 server ~ # netstat -anp &#124;grep 1701 udp 0 0 0.0.0.0:1701 0.0.0.0:* 5986/xl2tpd 说明进程号为5986的进程占用了1701端口，可能是进程挂了，成了僵尸，所以常规的方法无法停止进程了，只能kill -9 5986 这样强制干掉了，下面启动xl2tpd就很顺利了 server ~ # /etc/runlevels/default/xl2tpd start * Starting xl2tpd ... [ ok ]]]></description>
			<content:encoded><![CDATA[<p>l2tp 1701/udp<br />
pptp 1723/tcp</p>
<p>懒得说明了，真正懂的一眼就看懂了，下面说说怎么查占用端口的进程</p>
<p>server ~ # netstat -anp |grep 1701<br />
udp        0      0 0.0.0.0:1701            0.0.0.0:*                           5986/xl2tpd</p>
<p>说明进程号为5986的进程占用了1701端口，可能是进程挂了，成了僵尸，所以常规的方法无法停止进程了，只能kill -9 5986 这样强制干掉了，下面启动xl2tpd就很顺利了</p>
<p>server ~ # /etc/runlevels/default/xl2tpd start<br />
 * Starting xl2tpd ...                                                    [ ok ]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/400.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下面小巧的端口转发工具</title>
		<link>http://www.killwin.com/articles/382.html</link>
		<comments>http://www.killwin.com/articles/382.html#comments</comments>
		<pubDate>Wed, 15 Jun 2011 09:26:05 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=382</guid>
		<description><![CDATA[今天要介绍的软件名字叫 rinetd ，是linux下面一个端口转发软件。使用这个软件的原因是，公司有很多在外面的部门，每个部门都有指纹打卡机，每个月需要导出一次数据, 如果每个月去每个部门跑一趟来取数据，有点不现实，况且现在天气这么热，咱们又没四轮的。。。 本来可以通过路由器上端口映射加上花生壳来实现这个功能，可是软件 上面限制了考勤机的地址只能是IP，不能用域名，如图 这可麻烦了，每次先要获取IP，然后才能传输，如果能有一个软件，我连接局域网内某个固定IP的电脑，这个软件会去自己连接考勤机的域名，然后把考勤机的数据转发到这个电脑的端口上，我只要连接这台电脑的IP，不就解决了，于是上网找到这个软件，ubuntu下面的安装方法就是直接apt-get了，然后编辑  /etc/rinetd.conf allow *.*.*.* 之后，下面会有转发配置的提示 bindadress    bindport  connectaddress  connectport bindaddress 意思是bind本机上某个端口 bindport意思是bind的端口 connectaddress  connectport就是远程服务器的地址和端口了，这里是可以填域名的，比如我的配置就是 192.168.3.254 4370 kaoqin.domain.com 4370 执行下面命令 /etc/init.d/rinetd restart 重启一下服务，连接192.168.3.254就可以实现连接远程考勤机了，就这么简单]]></description>
			<content:encoded><![CDATA[<p>今天要介绍的软件名字叫 rinetd ，是linux下面一个端口转发软件。使用这个软件的原因是，公司有很多在外面的部门，每个部门都有指纹打卡机，每个月需要导出一次数据, 如果每个月去每个部门跑一趟来取数据，有点不现实，况且现在天气这么热，咱们又没四轮的。。。</p>
<p>本来可以通过路由器上端口映射加上花生壳来实现这个功能，可是软件 上面限制了考勤机的地址只能是IP，不能用域名，如图</p>
<p><a href="/wp-content/uploads/2011/06/QQ截图20110615171810.png"><img class="alignnone size-full wp-image-383" title="QQ截图20110615171810" src="/wp-content/uploads/2011/06/QQ截图20110615171810.png" alt="" width="505" height="153" /></a></p>
<p>这可麻烦了，每次先要获取IP，然后才能传输，如果能有一个软件，我连接局域网内某个固定IP的电脑，这个软件会去自己连接考勤机的域名，然后把考勤机的数据转发到这个电脑的端口上，我只要连接这台电脑的IP，不就解决了，于是上网找到这个软件，ubuntu下面的安装方法就是直接apt-get了，然后编辑  /etc/rinetd.conf</p>
<p>allow *.*.*.*</p>
<p>之后，下面会有转发配置的提示</p>
<p>bindadress    bindport  connectaddress  connectport</p>
<p>bindaddress 意思是bind本机上某个端口 bindport意思是bind的端口</p>
<p>connectaddress  connectport就是远程服务器的地址和端口了，这里是可以填域名的，比如我的配置就是</p>
<p>192.168.3.254 4370 kaoqin.domain.com 4370</p>
<p>执行下面命令</p>
<p>/etc/init.d/rinetd restart</p>
<p>重启一下服务，连接192.168.3.254就可以实现连接远程考勤机了，就这么简单</p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/382.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用VIM批量注释和批量反注释</title>
		<link>http://www.killwin.com/articles/362.html</link>
		<comments>http://www.killwin.com/articles/362.html#comments</comments>
		<pubDate>Tue, 03 May 2011 01:57:18 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[VIM编辑器]]></category>

		<guid isPermaLink="false">https://www.killwin.com/?p=362</guid>
		<description><![CDATA[在编写代码的时候经常要注释一大段代码,一行行的注释当然是最傻的方法了,在vim里面可以这样做 &#160; 移到要开始注释的那行   Ctrl+v进入可视化列选择模式 移到光标到最后需要注释的行(注意,如果你知道行号,可以使用行号G(大写的G)快速跳到该行，例如 10G), 然后按I(大写)(转载注:貌似小写也可以吧),进入插入模式,输入注释符,比如C++/C#/Java是//,一些配置文件是#, 然后按ESC键回到命令模式,看到奇迹发生了吧?! 反注释怎么办呢?更简单了, 同样Ctrl+v进入列选择模式, 移到光标把注释符选中, 按下d,OK了吧?! 本文转自：http://hi.baidu.com/hansfly/blog/item/63b063d095584589a0ec9c9d.html]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium;">在编写代码的时候经常要注释一大段代码,一行行的注释当然是最傻的方法了,在vim里面可以这样做</span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">移到要开始注释的那行   Ctrl+v进入可视化列选择模式</span></p>
<p><span style="font-size: medium;">移到光标到最后需要注释的行(注意,如果你知道行号,可以使用行号G(大写的G)快速跳到该行，例如 10G),</span></p>
<p><span style="font-size: medium;">然后按I(大写)(转载注:貌似小写也可以吧),进入插入模式,输入注释符,比如C++/C#/Java是//,一些配置文件是#,</span></p>
<p><span style="font-size: medium;">然后按ESC键回到命令模式,看到奇迹发生了吧?!</span></p>
<p><span style="font-size: medium;"> 反注释怎么办呢?更简单了,</span></p>
<p><span style="font-size: medium;">同样Ctrl+v进入列选择模式,</span></p>
<p><span style="font-size: medium;">移到光标把注释符选中,</span></p>
<p><span style="font-size: medium;">按下d,OK了吧?!</span></p>
<p>本文转自：<a href="http://hi.baidu.com/hansfly/blog/item/63b063d095584589a0ec9c9d.html">http://hi.baidu.com/hansfly/blog/item/63b063d095584589a0ec9c9d.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/362.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决Linux下Cacti图片中文字变方框的方法</title>
		<link>http://www.killwin.com/articles/340.html</link>
		<comments>http://www.killwin.com/articles/340.html#comments</comments>
		<pubDate>Wed, 09 Feb 2011 09:39:22 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cacti]]></category>

		<guid isPermaLink="false">https://www.killwin.com/?p=340</guid>
		<description><![CDATA[今天安装了cacti监控，发现图片上的文字全部乱码了，如图 然后我 font-list &#124;wc -l 了一下，竟然是0，看来是太精简了，没安装字体，于是在portage里面仔细查看，找到了media-fonts，再找，发现了freefonts，于是 emerge -av freefonts 重新启动一下php cgi进程，刷新一下 问题解决]]></description>
			<content:encoded><![CDATA[<p>今天安装了cacti监控，发现图片上的文字全部乱码了，如图<br />
<a href="/wp-content/uploads/2011/02/未命名.jpg"><img src="/wp-content/uploads/2011/02/未命名.jpg" alt="" title="未命名" width="653" height="265" class="alignnone size-full wp-image-341" /></a></p>
<p>然后我 font-list |wc -l 了一下，竟然是0，看来是太精简了，没安装字体，于是在portage里面仔细查看，找到了media-fonts，再找，发现了freefonts，于是</p>
<p>emerge -av freefonts</p>
<p> 重新启动一下php cgi进程，刷新一下  问题解决<br />
<a href="/wp-content/uploads/2011/02/QQ截图未命名.jpg"><img src="/wp-content/uploads/2011/02/QQ截图未命名.jpg" alt="" title="QQ截图未命名" width="654" height="283" class="alignnone size-full wp-image-342" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/340.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>kill命令杀死父进程的同时杀死子进程的方法</title>
		<link>http://www.killwin.com/articles/327.html</link>
		<comments>http://www.killwin.com/articles/327.html#comments</comments>
		<pubDate>Mon, 15 Nov 2010 03:05:53 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[使用]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=327</guid>
		<description><![CDATA[命令如下 kill -TERM pid 这样就可以在杀死父进程之前通知子进程：“你们老爹快要死了，你们先跳楼去吧”，然后kill掉父进程，世界干净了 PS: 这个命令可以这么使用 kill -TERM $(cat /var/run/php-cgi.pid) 类似上面的例子，从pid文件读取父进程pid，然后杀死，实现全自动杀进程]]></description>
			<content:encoded><![CDATA[<p>命令如下</p>
<blockquote><p>kill -TERM pid</p></blockquote>
<p>这样就可以在杀死父进程之前通知子进程：“你们老爹快要死了，你们先跳楼去吧”，然后kill掉父进程，世界干净了</p>
<p>PS:<br />
这个命令可以这么使用</p>
<blockquote><p>
kill -TERM $(cat /var/run/php-cgi.pid)
</p></blockquote>
<p>类似上面的例子，从pid文件读取父进程pid，然后杀死，实现全自动杀进程</p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/327.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu做单臂路由实现跨网段访问</title>
		<link>http://www.killwin.com/articles/325.html</link>
		<comments>http://www.killwin.com/articles/325.html#comments</comments>
		<pubDate>Tue, 09 Nov 2010 15:51:27 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[网络相关]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=325</guid>
		<description><![CDATA[公司有4条宽带，各条宽带分别独立，这样一点很不爽的地方就是办公室里面传文件速度跟蜗牛一样，而且传文件的时候还影响网速，解决方法有两种，第一种，将所有网段连起来，子网掩码设置255.255.0.0，就可以互相通讯了，可是这样的大网段看着不舒服，解决办法2就是购入专业的三层交换机或者路由器，这显然不现实，因为成本太高，于是我把目光瞄向办公室的一台闲置电脑，里面的系统正好是ubuntu server版，直接拿来用。本来我想装4片网卡实现的，可是这不争气的主板却只有2个pic插槽，加上板载网卡，一共才3个，不够用，于是想起了虚拟网卡加单臂路由，说干就干，开始配置。 首先查看你的系统是否支持802.1Q，必须支持802.1Q才可以让vlan互通。 执行如下命令 lsmod &#124; grep 8021q 看看有没有，没哟的话，执行下面的命令 apt-get install vlan sh -c 'grep -q 8021q /etc/modules &#124;&#124; echo 8021q >> /etc/modules' 为网卡添加虚拟ip 编辑 /etc/network/interfaces 内容大致如下 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.4.254 netmask 255.255.255.0 gateway 192.168.4.1 auto eth0:0 iface eth0:0 inet static address 192.168.1.254 netmask 255.255.255.0 [...]]]></description>
			<content:encoded><![CDATA[<p>公司有4条宽带，各条宽带分别独立，这样一点很不爽的地方就是办公室里面传文件速度跟蜗牛一样，而且传文件的时候还影响网速，解决方法有两种，第一种，将所有网段连起来，子网掩码设置255.255.0.0，就可以互相通讯了，可是这样的大网段看着不舒服，解决办法2就是购入专业的三层交换机或者路由器，这显然不现实，因为成本太高，于是我把目光瞄向办公室的一台闲置电脑，里面的系统正好是ubuntu server版，直接拿来用。本来我想装4片网卡实现的，可是这不争气的主板却只有2个pic插槽，加上板载网卡，一共才3个，不够用，于是想起了虚拟网卡加单臂路由，说干就干，开始配置。<br />
<span id="more-325"></span><br />
首先查看你的系统是否支持802.1Q，必须支持802.1Q才可以让vlan互通。</p>
<p>执行如下命令</p>
<blockquote><p>lsmod | grep 8021q</p></blockquote>
<p>看看有没有，没哟的话，执行下面的命令</p>
<blockquote><p>apt-get install vlan<br />
sh -c 'grep -q 8021q /etc/modules || echo 8021q >> /etc/modules'</p></blockquote>
<p>为网卡添加虚拟ip</p>
<p>编辑 /etc/network/interfaces 内容大致如下</p>
<blockquote><p>
auto lo<br />
iface lo inet loopback</p>
<p>auto eth0<br />
iface eth0 inet static<br />
address 192.168.4.254<br />
netmask 255.255.255.0<br />
gateway 192.168.4.1</p>
<p>auto eth0:0<br />
iface eth0:0 inet static<br />
address 192.168.1.254<br />
netmask 255.255.255.0<br />
gateway 192.168.1.1</p>
<p>auto eth0:1<br />
iface eth0:1 inet static<br />
address 192.168.2.254<br />
netmask 255.255.255.0<br />
gateway 192.168.2.1</p>
<p>auto eth0:2<br />
iface eth0:2 inet static<br />
address 192.168.3.254<br />
netmask 255.255.255.0<br />
gateway 192.168.3.1
</p></blockquote>
<p>保存并重启下网络，ifconfig看下，eth0已经有很多虚拟网卡了</p>
<blockquote><p>
eth0      Link encap:Ethernet  HWaddr 00:e0:4c:c0:7d:9b<br />
          inet addr:192.168.4.254  Bcast:192.168.4.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::2e0:4cff:fec0:7d9b/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:342738 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:336347 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:1000<br />
          RX bytes:390613917 (390.6 MB)  TX bytes:390082459 (390.0 MB)<br />
          Interrupt:20 Base address:0xa000</p>
<p>eth0:0    Link encap:Ethernet  HWaddr 00:e0:4c:c0:7d:9b<br />
          inet addr:192.168.1.254  Bcast:192.168.2.255  Mask:255.255.255.0<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          Interrupt:20 Base address:0xa000</p>
<p>eth0:1    Link encap:Ethernet  HWaddr 00:e0:4c:c0:7d:9b<br />
          inet addr:192.168.2.254  Bcast:192.168.2.255  Mask:255.255.255.0<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          Interrupt:20 Base address:0xa000</p>
<p>eth0:2    Link encap:Ethernet  HWaddr 00:e0:4c:c0:7d:9b<br />
          inet addr:192.168.3.254  Bcast:192.168.3.255  Mask:255.255.255.0<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          Interrupt:20 Base address:0xa000
</p></blockquote>
<p>下面添加vlan</p>
<p>执行如下命令</p>
<blockquote><p>
 vconfig add eth0 0<br />
 vconfig add eth0 1<br />
 vconfig add eth0 2
</p></blockquote>
<p>重启一下网络。</p>
<p>这时vlan之间还不能相互通讯，因为linux默认不允许网卡之间转发，这时，编辑 /etc/sysctl.conf 找到 net.ipv4.ip_forward 取消注释，并让其值等于1,，保存退出，执行 </p>
<blockquote><p>sysctl -p</p></blockquote>
<p>最后一步非常重要，因为我们的默认网关都是 192.168.1.1 192.168.2.1之类的，而路由器的ip是192.168.1.254 192.168.2.254之类的，所以要访问其他网段之前必须让路由器知道访问其他网段要找 192.168.x.254，所以添加静态路由表，这步很简单，不会的童鞋下面留言吧。</p>
<p>ok，所有工作完成，试试看，QQ传输文件的速度已经快了很多了，不过有一点要注意，连接所有网段的交换机必须是支持vlan的，否则dhcp报文会乱窜，等下ip就乱七八糟了，我今天就花了60大洋买了个二手的 TL-SF1008V，虽然功能不是很强，但是这个交换机的vlan功能已经够用了，打卡vlan开关，1-7口分别属于一个vlan，8口是trunk口，所以8口接路由器，其他口连接各个网段</p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/325.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Shell 中进行条件判断</title>
		<link>http://www.killwin.com/articles/276.html</link>
		<comments>http://www.killwin.com/articles/276.html#comments</comments>
		<pubDate>Tue, 11 May 2010 07:41:21 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[使用]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=276</guid>
		<description><![CDATA[一般用法是 if [ 条件 ]; then 执行语句 fi 要注意的是，条件要包含在方括号内，且条件和方括号相连的地方要有空格隔开，不然会出错 下面是转自网上的各种条件的写法 1、比较文件 -b file 若文件存在且是一个块特殊文件，则为真 -c file 若文件存在且是一个字符特殊文件，则为真 -d file 若文件存在且是一个目录，则为真 -e file 若文件存在，则为真 -f file 若文件存在且是一个规则文件，则为真 -g file 若文件存在且设置了SGID位的值，则为真 -h file 若文件存在且为一个符合链接，则为真 -k file 若文件存在且设置了"sticky"位的值 -p file 若文件存在且为一已命名管道，则为真 -r file 若文件存在且可读，则为真 -s file 若文件存在且其大小大于零，则为真 -u file 若文件存在且设置了SUID位，则为真 -w file 若文件存在且可写，则为真 -x file 若文件存在且可执行，则为真 -o file [...]]]></description>
			<content:encoded><![CDATA[<p>一般用法是 </p>
<blockquote><p>if [ 条件 ]; then<br />
    执行语句<br />
fi</p></blockquote>
<p>要注意的是，条件要包含在方括号内，且条件和方括号相连的地方要有空格隔开，不然会出错<br />
下面是转自网上的各种条件的写法</p>
<blockquote><p>1、比较文件<br />
-b file            若文件存在且是一个块特殊文件，则为真<br />
-c file            若文件存在且是一个字符特殊文件，则为真<br />
-d file            若文件存在且是一个目录，则为真<br />
-e file            若文件存在，则为真<br />
-f file            若文件存在且是一个规则文件，则为真<br />
-g file            若文件存在且设置了SGID位的值，则为真<br />
-h file            若文件存在且为一个符合链接，则为真<br />
-k file            若文件存在且设置了"sticky"位的值<br />
-p file            若文件存在且为一已命名管道，则为真<br />
-r file            若文件存在且可读，则为真<br />
-s file            若文件存在且其大小大于零，则为真<br />
-u file            若文件存在且设置了SUID位，则为真<br />
-w file            若文件存在且可写，则为真<br />
-x file            若文件存在且可执行，则为真<br />
-o file            若文件存在且被有效用户ID所拥有，则为真<br />
2、比较字符串<br />
-z string          若string长度为0，则为真<br />
-n string          若string长度不为0，则为真<br />
string1 = string2  若两个字符串相等，则为真<br />
string1 != string2 若两个字符串不相等，则为真<br />
3、比较整数<br />
int1 -eq int2      若int1等于int2，则为真<br />
int1 -ne int2      若int1不等于int2，则为真<br />
int1 -lt int2      若int1小于int2，则为真<br />
int1 -le int2      若int1小于等于int2，则为真<br />
int1 -gt int2      若int1大于int2，则为真<br />
int1 -ge int2      若int1大于等于int2，则为真</p>
<p>!expr              若expr为假则复合表达式为真。expr可以是任何有效的测试表达式<br />
expr1 -a expr2     若expr1和expr2都为真则整式为真<br />
expr1 -o expr2     若expr1和expr2有一个为真则整式为真<br />
注意：作为一个通用的规则，你应该在所有的$变量加上双引号来避免shell发生不正确的变量的替代。例如[ "$XX" -eq 3]中，如果XX为空而没有”“的就变成了[ -eq 3]这样会导致test命令语法错误。加上双引号之后就是["" -eq 3]，这样保证test命令成功运行而得到正确的结果。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/276.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Gnome 下文件、目录对比软件</title>
		<link>http://www.killwin.com/articles/272.html</link>
		<comments>http://www.killwin.com/articles/272.html#comments</comments>
		<pubDate>Sun, 09 May 2010 06:35:38 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[软件]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MELD]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=272</guid>
		<description><![CDATA[软件名字叫MELD，ubuntu下面可以用 apt-get install meld 来安装，非常强大，并且很易用，需要的童鞋可以下载来装一下]]></description>
			<content:encoded><![CDATA[<p>软件名字叫MELD，ubuntu下面可以用 apt-get install meld 来安装，非常强大，并且很易用，需要的童鞋可以下载来装一下</p>
]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/272.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LVM 下增加减少磁盘分区容量</title>
		<link>http://www.killwin.com/articles/238.html</link>
		<comments>http://www.killwin.com/articles/238.html#comments</comments>
		<pubDate>Wed, 24 Mar 2010 07:26:27 +0000</pubDate>
		<dc:creator>LuckyBoy</dc:creator>
				<category><![CDATA[使用]]></category>

		<guid isPermaLink="false">http://www.killwin.com/?p=238</guid>
		<description><![CDATA[以我目前使用的为例子 VG名字是 sp /data 是从 /dev/mapper/vg-data 挂载来的 那么 #umount /data 增加2G空间 # lvextend -L +2G /dev/sp/sp_data # e2fsck -f /dev/mapper/vg-data 如果是ReiserFS，则使用reiserfsck -f /dev/mapper/vg-data # resize2fs /dev/mapper/vg-data 如果是ReiserFS，则使用 resize_reiserfs /dev/mapper/vg-data # mount /dev/mapper/vg-data /data 减少2G空间 # lvresize -L -2G /dev/mapper/vg-data # e2fsck -f /dev/mapper/vg-data # resize2fs /dev/mapper/vg-data # mount /dev/mapper/vg-data /data 如果第一步无法umount，提示设备忙的话，可以按照下面的方法查找使用设备的进程： &#160; server ~ # [...]]]></description>
			<content:encoded><![CDATA[<p>以我目前使用的为例子</p>
<p>VG名字是 sp<br />
/data 是从 /dev/mapper/vg-data 挂载来的<br />
那么</p>
<blockquote><p>#umount /data</p></blockquote>
<p>增加2G空间</p>
<blockquote><p># lvextend -L +2G /dev/sp/sp_data<br />
# e2fsck -f /dev/mapper/vg-data 如果是ReiserFS，则使用reiserfsck -f /dev/mapper/vg-data<br />
# resize2fs /dev/mapper/vg-data 如果是ReiserFS，则使用 resize_reiserfs /dev/mapper/vg-data<br />
# mount /dev/mapper/vg-data /data</p></blockquote>
<p>减少2G空间</p>
<blockquote><p># lvresize -L -2G /dev/mapper/vg-data<br />
# e2fsck -f /dev/mapper/vg-data<br />
# resize2fs /dev/mapper/vg-data<br />
# mount /dev/mapper/vg-data /data</p></blockquote>
<p>如果第一步无法umount，提示设备忙的话，可以按照下面的方法查找使用设备的进程：</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">&nbsp;
server ~ # fuser -m /dev/mapper/vg-data
/dev/mapper/vg-data:  5203c
server ~ # ps aux|grep 5203
mysql     5203  0.4  0.8 174396 33192 ?        Ssl  May01   1:30 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/data/mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock
root     22068  0.0  0.0   1920   660 pts/0    S+   00:39   0:00 grep --colour=auto 5203</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.killwin.com/articles/238.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

