<?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 &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/category/windows/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Wed, 31 May 2023 02:41:54 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[原创] 扩展VirtualBox虚拟机的磁盘空间(vdi文件)</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e6%89%a9%e5%b1%95virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%9a%84%e7%a3%81%e7%9b%98%e7%a9%ba%e9%97%b4vdi%e6%96%87%e4%bb%b6/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e6%89%a9%e5%b1%95virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%9a%84%e7%a3%81%e7%9b%98%e7%a9%ba%e9%97%b4vdi%e6%96%87%e4%bb%b6/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Mon, 18 Oct 2021 18:14:03 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[GParted]]></category>
		<category><![CDATA[vdi]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[扩展空间]]></category>
		<guid isPermaLink="false">https://www.codelast.com/?p=13346</guid>

					<description><![CDATA[<p>宿主机：Ubuntu 16.04 LTS<br />
虚拟机：Windows 10</p>
<p>VirtualBox虚拟机文件有很多种格式，我的是vdi格式，对应的磁盘空间是37GB（Win10系统里只有一个C盘），由于虚拟机里的空间不够用了，想把它扩展成45GB，并且在数据不丢失的情况下仍然保持&#8220;只有一个C盘&#8221;的状态。<br />
下面是操作方法。<br />
<span id="more-13346"></span><br />
<span style="color:#ff0000;">➤</span> 扩大vdi空间<br />
在宿主机的命令行执行命令：</p>
<blockquote>
<div>
		[codelast@ win10.new]$ <span style="color:#0000ff;">sudo VBoxManage modifyhd win10.vdi --resize 46080</span></div>
<div>
		0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%</div>
</blockquote>
<div>
	其中，46080 的单位是MB。这样，vdi 文件对应的虚拟机的磁盘空间就被扩展成了 45GB，但是从 37GB&#160;&#8594; 45GB，多出来的 8GB <span style="color:#ff0000;">仍然是不可用的</span>。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	我们可以进入虚拟机的系统验证这一点。在虚拟机里用快捷键 Win+R 打开运行命令对话框，输入&#160;<span style="color:#0000ff;">diskmgmt.msc</span> 并回车，会打开Windows的&#8220;磁盘管理&#8221;软件，在里面我们会看到：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_01.png" style="width: 750px; height: 569px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	可见那8GB是&#8220;未分配&#8221;状态，如果要把它合并到原先的37GB里，并且不破坏已安装好的Win10的话，需要用GParted软件来合并扩展空间（如果你不需要合并在一起，只需要把新增的8GB创建成另一个分区，那么就简单得多，不需要用本文的方法）。
<p>	首先到<a href="https://gparted.org/" rel="noopener" target="_blank"><span style="background-color:#faebd7;">GParted官网</span></a>下载GParted ISO镜像文件（gparted-xxx.iso）。</p></div>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e6%89%a9%e5%b1%95virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%9a%84%e7%a3%81%e7%9b%98%e7%a9%ba%e9%97%b4vdi%e6%96%87%e4%bb%b6/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<p>宿主机：Ubuntu 16.04 LTS<br />
虚拟机：Windows 10</p>
<p>VirtualBox虚拟机文件有很多种格式，我的是vdi格式，对应的磁盘空间是37GB（Win10系统里只有一个C盘），由于虚拟机里的空间不够用了，想把它扩展成45GB，并且在数据不丢失的情况下仍然保持&ldquo;只有一个C盘&rdquo;的状态。<br />
下面是操作方法。<br />
<span id="more-13346"></span><br />
<span style="color:#ff0000;">➤</span> 扩大vdi空间<br />
在宿主机的命令行执行命令：</p>
<blockquote>
<div>
		[codelast@ win10.new]$ <span style="color:#0000ff;">sudo VBoxManage modifyhd win10.vdi --resize 46080</span></div>
<div>
		0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%</div>
</blockquote>
<div>
	其中，46080 的单位是MB。这样，vdi 文件对应的虚拟机的磁盘空间就被扩展成了 45GB，但是从 37GB&nbsp;&rarr; 45GB，多出来的 8GB <span style="color:#ff0000;">仍然是不可用的</span>。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	我们可以进入虚拟机的系统验证这一点。在虚拟机里用快捷键 Win+R 打开运行命令对话框，输入&nbsp;<span style="color:#0000ff;">diskmgmt.msc</span> 并回车，会打开Windows的&ldquo;磁盘管理&rdquo;软件，在里面我们会看到：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_01.png" style="width: 750px; height: 569px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	可见那8GB是&ldquo;未分配&rdquo;状态，如果要把它合并到原先的37GB里，并且不破坏已安装好的Win10的话，需要用GParted软件来合并扩展空间（如果你不需要合并在一起，只需要把新增的8GB创建成另一个分区，那么就简单得多，不需要用本文的方法）。</p>
<p>	首先到<a href="https://gparted.org/" rel="noopener" target="_blank"><span style="background-color:#faebd7;">GParted官网</span></a>下载GParted ISO镜像文件（gparted-xxx.iso）。<br />
	<span style="color:#ff0000;">➤</span> 把GParted ISO以光盘的形式挂载到虚拟机系统上<br />
	打开VirtualBox，在该虚拟机的&ldquo;存储&rdquo;设置页面上，你会看到一个 *.vdi&nbsp;的虚拟机文件，对应的就是虚拟机里看到的磁盘：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_02.png" style="width: 670px; height: 573px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	点击&ldquo;控制器: SATA&rdquo;右侧的光盘加号按钮，弹出下面的对话框：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_03.png" style="width: 640px; height: 388px;" /></a><br />
	点击左上方的&ldquo;注册&rdquo;按钮选择本地磁盘上的GParted ISO文件，会像上图一样显示在列表中。<br />
	继续点击&ldquo;选择&rdquo;按钮，会看到ISO已经成功挂载了：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_04.png" style="width: 670px; height: 573px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤</span>&nbsp;重启虚拟机进入GParted软件<br />
	在虚拟机的&ldquo;系统&rdquo;设置页面上，把&ldquo;光驱&rdquo;调整成启动顺序的第一项：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_05.png" style="width: 670px; height: 573px;" /></a><br />
	这样开机才能先打开GParted，而不是进入安装过的那个Windows系统。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	设置好后重启虚拟机，可以成功进入GParted：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_06.jpg" style="width: 670px; height: 573px;" /></a><br />
	回车进入列表的第一项。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤</span>&nbsp;使用GParted调整分区大小<br />
	打开GParted，在其界面上可看到 8GB&nbsp;的未分配空间：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_07.png" style="width: 770px; height: 517px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	选中 /dev/sda1&nbsp;那个需要扩大的分区，点击工具栏的&ldquo;Resize/Move&rdquo;按钮，会弹出一个对话框：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_08.png" style="width: 773px; height: 518px;" /></a><br />
	你不需要输入具体的数值，只需要用鼠标拖拽绿色方框的右边，把它拉到最右，就可以把空间扩到最大。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	点击&ldquo;Resize/Move&rdquo;按钮会看到空间已经被扩大了：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_09.png" style="width: 772px; height: 517px;" /></a><br />
	但是注意：现在只是临时状态，必须要点击工具栏上的&ldquo;应用&rdquo;按钮，才能真正让扩大分区的操作开始执行：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_10.png" style="width: 771px; height: 517px;" /></a><br />
	待操作完成后，Windows C盘就成功地从37GB变成了45GB，并且C盘上原来的数据不会丢失。</p>
<p>	<span style="color: rgb(255, 0, 0);">➤</span>&nbsp;验证结果<br />
	在虚拟机设置中，把光驱从启动项中移除（防止再次进入GParted），再重启虚拟机，查看Windows系统的C盘大小，就会发现成功了：<br />
	<a href="https://www.codelast.com/" rel="noopener" target="_blank"><img decoding="async" alt="" src="https://www.codelast.com/wp-content/uploads/2021/10/enlarge_virtualbox_vdi_space_11.png" style="width: 264px; height: 74px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
		<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
<p>
	&nbsp;</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e6%89%a9%e5%b1%95virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%9a%84%e7%a3%81%e7%9b%98%e7%a9%ba%e9%97%b4vdi%e6%96%87%e4%bb%b6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] 去除流氓插件“微度标签页”内置的“亿起发”返利链接跳转</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%8e%bb%e9%99%a4%e6%b5%81%e6%b0%93%e6%8f%92%e4%bb%b6%e5%be%ae%e5%ba%a6%e6%a0%87%e7%ad%be%e9%a1%b5%e5%86%85%e7%bd%ae%e7%9a%84%e4%ba%bf%e8%b5%b7/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%8e%bb%e9%99%a4%e6%b5%81%e6%b0%93%e6%8f%92%e4%bb%b6%e5%be%ae%e5%ba%a6%e6%a0%87%e7%ad%be%e9%a1%b5%e5%86%85%e7%bd%ae%e7%9a%84%e4%ba%bf%e8%b5%b7/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Sat, 19 Apr 2014 14:11:41 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[综合]]></category>
		<category><![CDATA[Chrome插件]]></category>
		<category><![CDATA[yiqifa]]></category>
		<category><![CDATA[亿起发]]></category>
		<category><![CDATA[微度标签页]]></category>
		<category><![CDATA[恶意代码]]></category>
		<category><![CDATA[流氓插件]]></category>
		<category><![CDATA[跳转]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=8120</guid>

					<description><![CDATA[<p>
写这篇文章实在是因为受不了&#8220;微度标签页&#8221;这个流氓插件内置的&#8220;亿起发&#8221;返利链接跳转，不得不愤怒地写此教程告诉大家如何去除它们的流氓行径。</p>
<div>
	作为互联网公司的一员，我对互联网营销相关的技术，虽然谈不上敏感，但还是有一点嗅觉的。</div>
<div>
	最近，我注意到一个现象，那就是我的Chrome浏览器在访问一些购物网站的时候（是我在地址栏里输入的干净网址），会先快速跳转到一个 yiqifa.com 的网址，然后再继续跳转回我要访问的购物网站，于是我立马明白了：我中了流氓公司的招了。</div>
<div>
	网上有一些人也遇到了同样的困扰，但是不明为什么，所以我想我有必要写一篇文章出来，让大家看看某些公司有多么无节操。<br />
	注意：本文的方法无法防止流氓插件&#8220;微度标签页&#8221;的全部流氓行为&#8212;&#8212;因为&#8220;微度&#8221;一旦升级，你修改过的本地插件数据可能就会被覆盖掉。所以，最好的方法就是：卸载它！大家可以换用<a href="https://chrome.google.com/webstore/detail/speed-dial-2/jpfpebmajhhopeonhlcgidhclcccjcik" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Speed Dial 2</span></a>这样的良心插件（云同步功能需要支付$2.99，我觉得完全可以接受，至少它一点流氓行径也没有）。<br />
	如果你非要自虐，继续使用&#8220;微度标签页&#8221;（我已经卸载了，改用Speed Dial 2），那么本文可以在一定程度上帮你去除其强制跳转的恶心行为，请继续往下看。</div>
<div>
<span id="more-8120"></span></div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></p>
<div>
	<span style="background-color:#00ff00;">【1】</span>找出流氓</div>
<div>
	首先，出现跳转&#8220;劫持&#8221;，也有可能是系统中毒之类的原因，但是我确定我的情况一定不是系统中毒&#8212;&#8212;因为我不仅找到了原因，而且解决了，没有任何悬念。</div>
<div>
	不知道大家是否了解&#8220;微度标签页&#8221;这个Chrome插件？这个插件可以把你的Chrome启动页变得比较美观，可以自定义一些常用的链接放在启动页上（而不是你最近访问的页面链接）。刚发现它的时候，我觉得这玩意挺好用的，于是我在它里面定义了一些常用的购物网站链接（包括京东，易迅，苏宁等），需要特别声明的是，我添加的这些网址都是手工输入的，绝对干净，例如京东（www.jd.com），易迅（www.yixun.com）等，直到某一天，有一次我点击&#8220;微度标签页&#8221;上的这些网址的时候，发现了它的流氓跳转现象，于是我在&#8220;微度标签页&#8221;的编辑模式下，查看我添加的那些网站的网址，惊奇地发现它们已经被改成了p.yiqifa.com/xxx 之类的网址！这该有多么无耻才能这样做啊！！要知道，&#8220;微度标签页&#8221;是有云端备份功能的，在登录了之后，用户添加的所有网址，都会被上传到云端（微度的服务器上），也正因为这样，&#8220;微度标签页&#8221;就有机会在云端修改我们的数据，从而当我们在另一台机器上登录&#8220;微度标签页&#8221;之后，这个带yiqifa的网址就会跟着同步下来，从而实现了&#8220;流氓无处不在&#8221;。</div>
<div>
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a>
<div>
		<span style="background-color:#00ff00;">【2】</span>清除流氓</div>
<div>
		找到了无耻之徒后，就要想办法清除掉它了，下面是我根据网上的一些帖子，找到的清除办法：</div>
<div>
		搜索Chrome安装目录下的 <span style="color:#ff0000;">all.js</span> 文件，如果你只找到了一个，那么必然是这货；如果你找到了多个，那么你可以用记事本把所有的 all.js 都打开来看一下，搜索文件内容里是否有&#8220;<span style="color:#ff0000;">yiqifa</span>&#8221;（不含引号），如果有，那么就是这货。</div>
<div>
		找到了 all.js 文件后，用记事本打开它，搜索其中的&#8220;yiqifa&#8221;，会搜索到类似于下面的内容：</div>
<div>
		<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/weidu_yiqifa_links.png" style="width: 808px; height: 576px;" />
<div>
			注意看其中高亮的部分，这就是流氓的无耻之处，以访问1号店（www.yhd.com）为例，当你访问www.yhd.com（即1号店的网址）这个网站时，微度标签页会先把你&#8220;劫持&#8221;跳转到 <span style="color:#0000ff;">p.yiqifa.com/c?s=ceb1fc1e&#38;w=433447&#38;c=139&#38;i=802&#38;l=0&#38;e=&#38;t=http://www.yhd.com</span>这个链接上，然后才跳到1号店的网站上。那么 yiqifa 的这个链接是干什么用的呢？我不确定，但是我估计有几种可能：（1）监测&#8220;微度标签页&#8221;这个Chrome插件带去的点击有多少；（2）让1号店认为，你这个用户是&#8220;亿起发&#8221;带去的，从而在你下单购物了之后，&#8220;亿起发&#8221;能从1号店那里拿到一点分成。</div>
<div>
			我认为纯粹的（1）是没有意义的，因为1号店之类的网站不会关心&#8220;微度标签页&#8221;这样一个插件带给它的点击有多少，分成应该才是关键。<br />
			<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></div></div></div>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%8e%bb%e9%99%a4%e6%b5%81%e6%b0%93%e6%8f%92%e4%bb%b6%e5%be%ae%e5%ba%a6%e6%a0%87%e7%ad%be%e9%a1%b5%e5%86%85%e7%bd%ae%e7%9a%84%e4%ba%bf%e8%b5%b7/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<p>
写这篇文章实在是因为受不了&ldquo;微度标签页&rdquo;这个流氓插件内置的&ldquo;亿起发&rdquo;返利链接跳转，不得不愤怒地写此教程告诉大家如何去除它们的流氓行径。</p>
<div>
	作为互联网公司的一员，我对互联网营销相关的技术，虽然谈不上敏感，但还是有一点嗅觉的。</div>
<div>
	最近，我注意到一个现象，那就是我的Chrome浏览器在访问一些购物网站的时候（是我在地址栏里输入的干净网址），会先快速跳转到一个 yiqifa.com 的网址，然后再继续跳转回我要访问的购物网站，于是我立马明白了：我中了流氓公司的招了。</div>
<div>
	网上有一些人也遇到了同样的困扰，但是不明为什么，所以我想我有必要写一篇文章出来，让大家看看某些公司有多么无节操。<br />
	注意：本文的方法无法防止流氓插件&ldquo;微度标签页&rdquo;的全部流氓行为&mdash;&mdash;因为&ldquo;微度&rdquo;一旦升级，你修改过的本地插件数据可能就会被覆盖掉。所以，最好的方法就是：卸载它！大家可以换用<a href="https://chrome.google.com/webstore/detail/speed-dial-2/jpfpebmajhhopeonhlcgidhclcccjcik" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Speed Dial 2</span></a>这样的良心插件（云同步功能需要支付$2.99，我觉得完全可以接受，至少它一点流氓行径也没有）。<br />
	如果你非要自虐，继续使用&ldquo;微度标签页&rdquo;（我已经卸载了，改用Speed Dial 2），那么本文可以在一定程度上帮你去除其强制跳转的恶心行为，请继续往下看。</div>
<div>
<span id="more-8120"></span></div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></p>
<div>
	<span style="background-color:#00ff00;">【1】</span>找出流氓</div>
<div>
	首先，出现跳转&ldquo;劫持&rdquo;，也有可能是系统中毒之类的原因，但是我确定我的情况一定不是系统中毒&mdash;&mdash;因为我不仅找到了原因，而且解决了，没有任何悬念。</div>
<div>
	不知道大家是否了解&ldquo;微度标签页&rdquo;这个Chrome插件？这个插件可以把你的Chrome启动页变得比较美观，可以自定义一些常用的链接放在启动页上（而不是你最近访问的页面链接）。刚发现它的时候，我觉得这玩意挺好用的，于是我在它里面定义了一些常用的购物网站链接（包括京东，易迅，苏宁等），需要特别声明的是，我添加的这些网址都是手工输入的，绝对干净，例如京东（www.jd.com），易迅（www.yixun.com）等，直到某一天，有一次我点击&ldquo;微度标签页&rdquo;上的这些网址的时候，发现了它的流氓跳转现象，于是我在&ldquo;微度标签页&rdquo;的编辑模式下，查看我添加的那些网站的网址，惊奇地发现它们已经被改成了p.yiqifa.com/xxx 之类的网址！这该有多么无耻才能这样做啊！！要知道，&ldquo;微度标签页&rdquo;是有云端备份功能的，在登录了之后，用户添加的所有网址，都会被上传到云端（微度的服务器上），也正因为这样，&ldquo;微度标签页&rdquo;就有机会在云端修改我们的数据，从而当我们在另一台机器上登录&ldquo;微度标签页&rdquo;之后，这个带yiqifa的网址就会跟着同步下来，从而实现了&ldquo;流氓无处不在&rdquo;。</div>
<div>
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></p>
<div>
		<span style="background-color:#00ff00;">【2】</span>清除流氓</div>
<div>
		找到了无耻之徒后，就要想办法清除掉它了，下面是我根据网上的一些帖子，找到的清除办法：</div>
<div>
		搜索Chrome安装目录下的 <span style="color:#ff0000;">all.js</span> 文件，如果你只找到了一个，那么必然是这货；如果你找到了多个，那么你可以用记事本把所有的 all.js 都打开来看一下，搜索文件内容里是否有&ldquo;<span style="color:#ff0000;">yiqifa</span>&rdquo;（不含引号），如果有，那么就是这货。</div>
<div>
		找到了 all.js 文件后，用记事本打开它，搜索其中的&ldquo;yiqifa&rdquo;，会搜索到类似于下面的内容：</div>
<div>
		<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/weidu_yiqifa_links.png" style="width: 808px; height: 576px;" /></p>
<div>
			注意看其中高亮的部分，这就是流氓的无耻之处，以访问1号店（www.yhd.com）为例，当你访问www.yhd.com（即1号店的网址）这个网站时，微度标签页会先把你&ldquo;劫持&rdquo;跳转到 <span style="color:#0000ff;">p.yiqifa.com/c?s=ceb1fc1e&amp;w=433447&amp;c=139&amp;i=802&amp;l=0&amp;e=&amp;t=http://www.yhd.com</span>这个链接上，然后才跳到1号店的网站上。那么 yiqifa 的这个链接是干什么用的呢？我不确定，但是我估计有几种可能：（1）监测&ldquo;微度标签页&rdquo;这个Chrome插件带去的点击有多少；（2）让1号店认为，你这个用户是&ldquo;亿起发&rdquo;带去的，从而在你下单购物了之后，&ldquo;亿起发&rdquo;能从1号店那里拿到一点分成。</div>
<div>
			我认为纯粹的（1）是没有意义的，因为1号店之类的网站不会关心&ldquo;微度标签页&rdquo;这样一个插件带给它的点击有多少，分成应该才是关键。<br />
			<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></div>
<div>
			说了这么多，如何去除这种跳转？编辑all.js文件，把yiqifa相关的网址给删掉就可以了，例如，把&ldquo;<span style="color:#0000ff;">p.yiqifa.com/c?s=ceb1fc1e&amp;w=433447&amp;c=139&amp;i=802&amp;l=0&amp;e=&amp;t=http://www.yhd.com</span>&rdquo;改成&ldquo;<span style="color:#0000ff;">http://www.yhd.com</span>&rdquo;，它就没有跳转了。</div>
<div>
			特别地，大家从上面的截图可以看出，天猫也是有跳转的（s.click.taobao.com/xxx），大家也可以按这个方法去掉。</div>
<div>
			使用Ubuntu的朋友，可能会发现Chrome的安装目录下找不到all.js文件，那是因为默认安装上的Chrome的插件安装目录不在Chrome的程序安装目录（/opt/google/chrome/）下。插件默认安装目录是在你当前用户的这个目录下：</div>
<blockquote>
<div>
				~/.config/google-chrome/Default/Extensions/</div>
</blockquote>
<div>
			在这个目录下一定能够搜索到all.js文件。</div>
<div>
			</p>
<div>
				<span style="background-color:#00ff00;">【3】</span>讨伐流氓</div>
<div>
				首先，卡饭论坛上早就有用户反映过微度的这个流氓行为：<a href="http://bbs.kafan.cn/thread-1604908-1-1.html" target="_blank" rel="noopener noreferrer">http://bbs.kafan.cn/thread-1604908-1-1.html</a></div>
<div>
				其次，我为什么认为&ldquo;微度标签页&rdquo;和&ldquo;亿起发&rdquo;的这种行为是无耻至极的流氓行为？如下：</div>
<div>
				第一，用户没有点击&ldquo;微度&rdquo;或&ldquo;亿起发&rdquo;为1号店所做的任何广告，仅仅是在地址栏输入干净的网址，就被强行跳转，这种行为就像是你有一辆车，你本来指望这辆车能为你带来出行的方便，但是结果有一天你开车出门的时候，本来你明确指定了直接去家乐福的，结果你上了车，发现方向盘根本不听使唤，这辆车竟然自动驾驶了，先把你带去了另一家批发商那里，然后再把你带去家乐福，你能接受吗？！</div>
<div>
				第二，&ldquo;微度标签页&rdquo;为了赚钱，在用户没有同意的情况下，擅自把用户添加的干净网站（例如www.yhd.com）在云端修改为带&ldquo;亿起发&rdquo;的营销网址，非常霸道无耻以及恶心（用这三个词来形容它都算便宜的了）。</div>
<div>
				大家可以看看在&ldquo;微度标签页&rdquo;里添加一个它已经预定义好的购物网址是什么样的，例如：</div>
<div style="text-align: center;">
				<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/weidu_add_a_pre_defined_site.png" style="width: 500px; height: 324px;" /><br />
				&nbsp;</div>
<div>
				<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
				如果你添加了这个快捷方式，然后再回到你添加的网站图标那里，进入编辑模式：</div>
<div style="text-align: center;">
				<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/edit_an_existing_site_1.png" style="width: 282px; height: 167px;" /></div>
<div>
				会发现它的网址根本不是<span style="color:#0000ff;">http://www.suning.com</span>，而是这个：<span style="color:#0000ff;">http://c.duomai.com/track.php?site_id=89202&amp;aid=495&amp;euid=&amp;t=http://www.suning.com</span> ，如下图所示：<br />
				<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/edit_an_existing_site_2.png" style="width: 773px; height: 180px;" /></div>
<div>
				<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
				这说明&ldquo;微度标签页&rdquo;帮你预定义好的一堆购物网站几乎都是带跳转的，&ldquo;微度标签页&rdquo;能从中赚到钱。但是，我认为这种情况要区别对待，首先，这个快捷方式是用户主动添加的，用户并没有要求自己输入一个（干净）的网址，这就跟点击一个互联网广告创意一样，是用户&ldquo;意图不明确&rdquo;的action，此时用户并没有要求&ldquo;要干净无跳转的访问&rdquo;，而是要求&ldquo;带我去这个购物网站&rdquo;就行了。所以，这种情况不应该blame，因为这是正常的网络营销行为，毕竟互联网广告是现在互联网生态系统的生存基础，完全消除了所有互联网广告的话，我们就没有Google之类的免费服务可用了。</div>
<div>
				但是必须记住，我认为对用户明确访问意图的劫持，是不可容忍、完全不能接受的，而&ldquo;微度标签页&rdquo;就在干这样的事情，请问你们的节操在哪里？！</div>
<div>
				</p>
<p style="font-size: 16px; margin: 5px 0px; clear: both; font-family: sans-serif;">
					<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
					<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
					转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
					感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
					<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
</p></div>
</p></div>
</p></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%8e%bb%e9%99%a4%e6%b5%81%e6%b0%93%e6%8f%92%e4%bb%b6%e5%be%ae%e5%ba%a6%e6%a0%87%e7%ad%be%e9%a1%b5%e5%86%85%e7%bd%ae%e7%9a%84%e4%ba%bf%e8%b5%b7/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] Emacs文章合集</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs%e6%96%87%e7%ab%a0%e5%90%88%e9%9b%86/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs%e6%96%87%e7%ab%a0%e5%90%88%e9%9b%86/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Fri, 28 Mar 2014 16:55:39 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[tree mode]]></category>
		<category><![CDATA[tree view]]></category>
		<category><![CDATA[使用]]></category>
		<category><![CDATA[总结]]></category>
		<category><![CDATA[树形]]></category>
		<category><![CDATA[树状]]></category>
		<category><![CDATA[资源管理器]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=7988</guid>

					<description><![CDATA[<p>转载请注明出处：<strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;"><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 0, 0);">http://www.codelast.com/</span></a></span></strong></p>
<p>文章越来越多，越来越不好查询了，只能一点点归类。</p>
<p><span style="background-color:#00ff00;">➤&#160;</span><a href="http://www.codelast.com/?p=4802" rel="noopener noreferrer" target="_blank">Emacs on Windows初步实践</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span><a href="http://www.codelast.com/?p=7980" rel="noopener noreferrer" target="_blank">在Emacs中使用树形&#8220;资源管理器&#8221;&#8212;&#8212;emacs-nav</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span><a href="http://www.codelast.com/?p=7971" rel="noopener noreferrer" target="_blank">在Emacs中使用树形&#8220;资源管理器&#8221;&#8212;&#8212;Sr Speedbar</a><br />
<span id="more-7988"></span><br />
<span style="background-color: rgb(0, 255, 0);">➤&#160;</span>配置Emacs自动完成/自动补全：<a href="http://www.codelast.com/?p=4945" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第6条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span><a href="http://www.codelast.com/?p=159" rel="noopener noreferrer" target="_blank">Emacs解除read-only的buffer锁定</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span>在Emacs中显示UTF-8编码的文件内容/显示中文：<a href="http://www.codelast.com/?p=4048" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第13条<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤&#160;</span>在Xshell终端里启用Emacs的Meta key：<a href="http://www.codelast.com/?p=4048" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第14条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span>使Emacs不要生成临时文件：<a href="http://www.codelast.com/?p=3645" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第1条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span>为Emacs自定义&#8220;跳到指定行&#8221;的快捷键 &#38; &#8220;替换字符串&#8221;的快捷键：<a href="http://www.codelast.com/?p=3645" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第19条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span>CEDET的安装及基本配置：<a href="http://www.codelast.com/?p=151" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第39条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span>Emacs启动时报错&#8220;Wrong type argument: stringp&#8221;的解决办法：<a href="http://www.codelast.com/?p=151" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第54条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&#160;</span><a href="http://www.codelast.com/?p=8337" rel="noopener noreferrer" target="_blank">解决找不到emacsclient命令的问题 / Solve the emacsclient: command not found problem</a><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs%e6%96%87%e7%ab%a0%e5%90%88%e9%9b%86/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>转载请注明出处：<strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;"><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 0, 0);">http://www.codelast.com/</span></a></span></strong></p>
<p>文章越来越多，越来越不好查询了，只能一点点归类。</p>
<p><span style="background-color:#00ff00;">➤&nbsp;</span><a href="http://www.codelast.com/?p=4802" rel="noopener noreferrer" target="_blank">Emacs on Windows初步实践</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span><a href="http://www.codelast.com/?p=7980" rel="noopener noreferrer" target="_blank">在Emacs中使用树形&ldquo;资源管理器&rdquo;&mdash;&mdash;emacs-nav</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span><a href="http://www.codelast.com/?p=7971" rel="noopener noreferrer" target="_blank">在Emacs中使用树形&ldquo;资源管理器&rdquo;&mdash;&mdash;Sr Speedbar</a><br />
<span id="more-7988"></span><br />
<span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>配置Emacs自动完成/自动补全：<a href="http://www.codelast.com/?p=4945" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第6条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span><a href="http://www.codelast.com/?p=159" rel="noopener noreferrer" target="_blank">Emacs解除read-only的buffer锁定</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>在Emacs中显示UTF-8编码的文件内容/显示中文：<a href="http://www.codelast.com/?p=4048" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第13条<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>在Xshell终端里启用Emacs的Meta key：<a href="http://www.codelast.com/?p=4048" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第14条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>使Emacs不要生成临时文件：<a href="http://www.codelast.com/?p=3645" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第1条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>为Emacs自定义&ldquo;跳到指定行&rdquo;的快捷键 &amp; &ldquo;替换字符串&rdquo;的快捷键：<a href="http://www.codelast.com/?p=3645" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第19条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>CEDET的安装及基本配置：<a href="http://www.codelast.com/?p=151" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第39条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>Emacs启动时报错&ldquo;Wrong type argument: stringp&rdquo;的解决办法：<a href="http://www.codelast.com/?p=151" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>第54条</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span><a href="http://www.codelast.com/?p=8337" rel="noopener noreferrer" target="_blank">解决找不到emacsclient命令的问题 / Solve the emacsclient: command not found problem</a><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span><a href="https://www.codelast.com/?p=13891" rel="noopener" target="_blank">设置Emacs打开一个文件时的&quot;文件太大&quot;警告阈值</a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>批量注释多行：先按 CTRL+@ 开始区域选择，再按上下左右键选中要注释的多行内容，最后按 Alt+; 即可批量注释掉选中的行</p>
<p><span style="background-color: rgb(0, 255, 0);">➤&nbsp;</span>To be added...</p>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs%e6%96%87%e7%ab%a0%e5%90%88%e9%9b%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] 在Emacs中使用树形“资源管理器”——Sr Speedbar</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%9c%a8emacs%e4%b8%ad%e4%bd%bf%e7%94%a8%e6%a0%91%e5%bd%a2%e8%b5%84%e6%ba%90%e7%ae%a1%e7%90%86%e5%99%a8-sr-speedbar/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%9c%a8emacs%e4%b8%ad%e4%bd%bf%e7%94%a8%e6%a0%91%e5%bd%a2%e8%b5%84%e6%ba%90%e7%ae%a1%e7%90%86%e5%99%a8-sr-speedbar/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Fri, 28 Mar 2014 16:29:54 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[resource manager]]></category>
		<category><![CDATA[Sr Speedbar]]></category>
		<category><![CDATA[tree mode]]></category>
		<category><![CDATA[tree view]]></category>
		<category><![CDATA[树形]]></category>
		<category><![CDATA[树状]]></category>
		<category><![CDATA[资源管理器]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=7971</guid>

					<description><![CDATA[<p>
<span style="background-color:#00ff00;">『1』</span>下载<br />
使用<a href="http://www.emacswiki.org/emacs/SrSpeedbar" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Sr Speedbar</span></a>可以在Emacs中&#8220;造&#8221;出一个树形资源管理器。在<a href="http://www.emacswiki.org/emacs/sr-speedbar.el" target="_top" rel="noopener noreferrer"><span style="background-color:#ffa07a;">这个</span></a>页面下载到&#160;sr-speedbar.el（若链接已失效，请自行搜索）。</p>
<p><span style="background-color:#00ff00;">『2』</span>创建一个Emacs的load path<br />
我在我放置Emacs插件的总目录 ~/.emacs.d/ 下创建了一个&#8220;extra&#8221;目录，用于放置其他我自己下载的插件，于是我把上面下载的 sr-speedbar.el&#160;也放到这个extra目录下了。<br />
<span id="more-7971"></span><br />
<span style="background-color:#00ff00;">『3』</span>配置Emacs<br />
修改 ~/.emacs 文件，添加如下两行：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(add-to-list &#39;load-path &#34;~/.emacs.d/extra/&#34;)
(require &#39;sr-speedbar)
</pre>
<p>其中，第一句是将上面创建的extra目录加入到load-path中，这样Emacs启动时就会从extra目录加载插件。<br />
第二句是加载 Sr Speedbar 插件。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">『4』</span>使用<br />
非常简单。进入Emacs，输入：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M - x sr-speedbar-
</pre>
<p>然后按TAB进行自动补全，即可显示 Sr Speedbar 的全部命令。或参考官方网页获取全部命令。<br />
最主要的命令就是&#160;sr-speedbar-open 了，执行之后，会在窗口右边打开一个树形结构的资源管理器，把光标移动到其中，在哪一项上按回车，就可以打开哪一个文件/目录。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%9c%a8emacs%e4%b8%ad%e4%bd%bf%e7%94%a8%e6%a0%91%e5%bd%a2%e8%b5%84%e6%ba%90%e7%ae%a1%e7%90%86%e5%99%a8-sr-speedbar/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
<span style="background-color:#00ff00;">『1』</span>下载<br />
使用<a href="http://www.emacswiki.org/emacs/SrSpeedbar" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Sr Speedbar</span></a>可以在Emacs中&ldquo;造&rdquo;出一个树形资源管理器。在<a href="http://www.emacswiki.org/emacs/sr-speedbar.el" target="_top" rel="noopener noreferrer"><span style="background-color:#ffa07a;">这个</span></a>页面下载到&nbsp;sr-speedbar.el（若链接已失效，请自行搜索）。</p>
<p><span style="background-color:#00ff00;">『2』</span>创建一个Emacs的load path<br />
我在我放置Emacs插件的总目录 ~/.emacs.d/ 下创建了一个&ldquo;extra&rdquo;目录，用于放置其他我自己下载的插件，于是我把上面下载的 sr-speedbar.el&nbsp;也放到这个extra目录下了。<br />
<span id="more-7971"></span><br />
<span style="background-color:#00ff00;">『3』</span>配置Emacs<br />
修改 ~/.emacs 文件，添加如下两行：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(add-to-list &#39;load-path &quot;~/.emacs.d/extra/&quot;)
(require &#39;sr-speedbar)
</pre>
<p>其中，第一句是将上面创建的extra目录加入到load-path中，这样Emacs启动时就会从extra目录加载插件。<br />
第二句是加载 Sr Speedbar 插件。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">『4』</span>使用<br />
非常简单。进入Emacs，输入：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M - x sr-speedbar-
</pre>
<p>然后按TAB进行自动补全，即可显示 Sr Speedbar 的全部命令。或参考官方网页获取全部命令。<br />
最主要的命令就是&nbsp;sr-speedbar-open 了，执行之后，会在窗口右边打开一个树形结构的资源管理器，把光标移动到其中，在哪一项上按回车，就可以打开哪一个文件/目录。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
使用截图如下所示：</p>
<div style="text-align: center;">
	<img decoding="async" alt="emacs sr speedbar screenshot" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/emacs-sr-speedbar-screenshot.png" style="width: 579px; height: 189px;" /></div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">『5』</span>感受<br />
树形资源管理窗口显示在右边，不如左边方便（因人而异），而且某些目录下的文件（非隐藏的）竟然无法显示&mdash;&mdash;只显示子目录，也不知道Sr Speedbar抽了什么风。所以整体感觉不好。<br />
如上图所示，本来&ldquo;article&rdquo;目录下有三个 .txt 文件，一个子目录&ldquo;test-directory&rdquo;，但是它只显示了&ldquo;test-directory&rdquo;，没有显示三个 .txt 文件。</p>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%9c%a8emacs%e4%b8%ad%e4%bd%bf%e7%94%a8%e6%a0%91%e5%bd%a2%e8%b5%84%e6%ba%90%e7%ae%a1%e7%90%86%e5%99%a8-sr-speedbar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] 如何在Ubuntu下的VirtualBox虚拟机（Windows XP）里挂载/使用U盘</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu%e4%b8%8b%e7%9a%84virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%ef%bc%88windows-xp%ef%bc%89%e9%87%8c%e6%8c%82%e8%bd%bd%e4%bd%bf%e7%94%a8u%e7%9b%98/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu%e4%b8%8b%e7%9a%84virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%ef%bc%88windows-xp%ef%bc%89%e9%87%8c%e6%8c%82%e8%bd%bd%e4%bd%bf%e7%94%a8u%e7%9b%98/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Sun, 23 Mar 2014 08:20:13 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[U盘]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[优盘]]></category>
		<category><![CDATA[使用]]></category>
		<category><![CDATA[找不到U盘]]></category>
		<category><![CDATA[挂载]]></category>
		<category><![CDATA[虚拟机]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=7952</guid>

					<description><![CDATA[<p>
在Ubuntu下安装了VirtualBox之后，如果你的虚拟机安装的是Windows XP系统，那么，你会发现，当你插上U盘时，无论你怎么折腾，虚拟机（XP）里都是没有任何反应的，既不提示找到新硬件，也看不到U盘的分区。<br />
不像VMware，默认安装之后对U盘的支持很好，根本不需要用户去配置什么东西。从这一点上，我觉得VirtualBox太龌龊了，小而美归小而美，但是你不能把最常用的功能放在基础支持列表之外，还要用户去配置才能用，不是么？</p>
<p>下面就教你如何能让VirtualBox的虚拟机（XP）找到U盘并挂载上。宿主机系统是Ubuntu。实话说，网上的很多文章写得实在让人很无语，要么简略得太夸张，要么连中文都写得不通顺（负点责任行吗），我实在是看不下去了，所以在研究出来怎么做之后，我决定要把这么简单的一件事情写成教程，帮助有需要的人。<br />
<span id="more-7952"></span><br />
<span style="background-color:#00ff00;">『1』</span>关于Guest Additions<br />
VirtualBox带有一个叫Guest Additions的东西，可以在VirtualBox的菜单里为虚拟机安装上（一点击，在XP中就会弹出软件安装界面）。后面的步骤是否依赖Guest Additions，我<span style="color:#0000ff;">不确定</span>，因此，建议你安装上。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">『2』</span>U盘的支持在哪里<br />
你一定想不到，默认安装的VirtualBox，竟然是没有USB设备支持功能的！你必须要去它的官网下载另一个&#8220;扩展包&#8221;（Oracle VM VirtualBox Extension Pack），才能让VirtualBox支持！如前所述，我觉得这一点非常让人无语。<br />
下载地址在VirtualBox官网可以找到。在我写这篇文章的时候，我下载的版本是&#160;<strong>VirtualBox 4.3.8 Oracle VM VirtualBox Extension Pack</strong>，文件名为&#160;Oracle_VM_VirtualBox_Extension_Pack-4.3.8-92456.vbox-extpack，双击它进行安装（前提是你已经安装过了VirtualBox软件，否则双击它是没用的）。<br />
双击时，会弹出类似于下面的对话框：</p>
<div style="text-align: center;">
	<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/virtualbox_extension_pack_install.jpg" style="width: 439px; height: 245px;" /></div>
<p>点击&#8220;安装&#8221;，毫无疑问。</p>
<p><span style="background-color:#00ff00;">『3』</span>添加用户组<br />
在Ubuntu命令行下，执行如下命令：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sudo adduser your_user_name vboxusers
</pre>
<p>其中，your_user_name 是你用来运行VirtualBox的Linux用户名，你要根据实际情况更改。</p>
<p><span style="background-color:#00ff00;">『4』</span>重启宿主机<br />
是的，重启宿主机。貌似注销也行，但是不要去猜和尝试了，重启宿主机是一定有效的。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu%e4%b8%8b%e7%9a%84virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%ef%bc%88windows-xp%ef%bc%89%e9%87%8c%e6%8c%82%e8%bd%bd%e4%bd%bf%e7%94%a8u%e7%9b%98/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
在Ubuntu下安装了VirtualBox之后，如果你的虚拟机安装的是Windows XP系统，那么，你会发现，当你插上U盘时，无论你怎么折腾，虚拟机（XP）里都是没有任何反应的，既不提示找到新硬件，也看不到U盘的分区。<br />
不像VMware，默认安装之后对U盘的支持很好，根本不需要用户去配置什么东西。从这一点上，我觉得VirtualBox太龌龊了，小而美归小而美，但是你不能把最常用的功能放在基础支持列表之外，还要用户去配置才能用，不是么？</p>
<p>下面就教你如何能让VirtualBox的虚拟机（XP）找到U盘并挂载上。宿主机系统是Ubuntu。实话说，网上的很多文章写得实在让人很无语，要么简略得太夸张，要么连中文都写得不通顺（负点责任行吗），我实在是看不下去了，所以在研究出来怎么做之后，我决定要把这么简单的一件事情写成教程，帮助有需要的人。<br />
<span id="more-7952"></span><br />
<span style="background-color:#00ff00;">『1』</span>关于Guest Additions<br />
VirtualBox带有一个叫Guest Additions的东西，可以在VirtualBox的菜单里为虚拟机安装上（一点击，在XP中就会弹出软件安装界面）。后面的步骤是否依赖Guest Additions，我<span style="color:#0000ff;">不确定</span>，因此，建议你安装上。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">『2』</span>U盘的支持在哪里<br />
你一定想不到，默认安装的VirtualBox，竟然是没有USB设备支持功能的！你必须要去它的官网下载另一个&ldquo;扩展包&rdquo;（Oracle VM VirtualBox Extension Pack），才能让VirtualBox支持！如前所述，我觉得这一点非常让人无语。<br />
下载地址在VirtualBox官网可以找到。在我写这篇文章的时候，我下载的版本是&nbsp;<strong>VirtualBox 4.3.8 Oracle VM VirtualBox Extension Pack</strong>，文件名为&nbsp;Oracle_VM_VirtualBox_Extension_Pack-4.3.8-92456.vbox-extpack，双击它进行安装（前提是你已经安装过了VirtualBox软件，否则双击它是没用的）。<br />
双击时，会弹出类似于下面的对话框：</p>
<div style="text-align: center;">
	<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/virtualbox_extension_pack_install.jpg" style="width: 439px; height: 245px;" /></div>
<p>点击&ldquo;安装&rdquo;，毫无疑问。</p>
<p><span style="background-color:#00ff00;">『3』</span>添加用户组<br />
在Ubuntu命令行下，执行如下命令：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sudo adduser your_user_name vboxusers
</pre>
<p>其中，your_user_name 是你用来运行VirtualBox的Linux用户名，你要根据实际情况更改。</p>
<p><span style="background-color:#00ff00;">『4』</span>重启宿主机<br />
是的，重启宿主机。貌似注销也行，但是不要去猜和尝试了，重启宿主机是一定有效的。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">『5』</span>挂载U盘<br />
重启宿主机后，先插上U盘，再启动虚拟机（XP），点击此虚拟机的VirtualBox菜单：<span style="color:#0000ff;">设备</span>&rarr;<span style="color:#0000ff;">分配USB设备</span>，在列出的USB设备列表中找到你的U盘名字，点击。然后虚拟机（XP）里应该就会出现找到新硬件的提示了。<br />
如若不行，你可能需要在VirtualBox的全局设置中的&ldquo;<span style="color:#0000ff;">USB设备</span>&rdquo;设置里，将&ldquo;<span style="color:#0000ff;">启用USB2.0（EHCI）控制器</span>&rdquo;选中，再重启虚拟机试试。</p>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushShell.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu%e4%b8%8b%e7%9a%84virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%ef%bc%88windows-xp%ef%bc%89%e9%87%8c%e6%8c%82%e8%bd%bd%e4%bd%bf%e7%94%a8u%e7%9b%98/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创]一些未归类的命令、操作方法或问题总结（5）</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Thu, 10 Oct 2013 02:27:37 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[综合]]></category>
		<category><![CDATA[写Thrift文件]]></category>
		<category><![CDATA[读取Thrift文件]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=7048</guid>

					<description><![CDATA[<p><span style="font-family: 文泉驿等宽微米黑;">下面是一些未归类的命令及操作方法，专门记在此文中，以便将来查询。由于文章较长，请用Ctrl+F查询关键字来定位到你需要的内容。</span><br />
<span id="more-7048"></span><br />
<span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（1）</span>Eclipse C++项目设置 头文件/include 路径<br />
在一个项目上点击右键&#8594;Properties&#8594;C/C++ General&#8594;Paths and Symbols&#8594;Includes&#8594;在&#8220;GNU C&#8221;和&#8220;GNU C++&#8221;中添加头文件路径。<br />
基本要添加的路径可用如下命令获取：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
echo &#34;&#34; &#124; g++ -v -x c++ -E -
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">路径没有设置好的话，项目中会看到很多无法识别的类。</span></p>
<p><span style="background-color:#00ff00;">（2）</span>SecureCRT全屏切换的快捷键<br />
如果你不小心按错了键使SecureCRT进入全屏模式的话，可能会发现找不到按钮可以让它切换回正常模式。 请按 Alt + Enter 切换到正常模式。</p>
<p><span style="background-color:#00ff00;">（3）</span>Visual Studio的启动程序在哪个目录下<br />
在你安装目录下的&#160;<span style="color:#0000ff;">Common7\IDE\devenv.exe</span></p>
<p><span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（4）</span>Win7下运行Visual Studio时提示&#8220;</span>要运行Visual Studio 2005 SP1，建议使用管理员权限<span style="font-family: 文泉驿等宽微米黑;">&#8221;的问题<br />
右键点击上面提到的&#8220;</span><span style="color:#0000ff;">devenv.exe</span>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: 文泉驿等宽微米黑;">下面是一些未归类的命令及操作方法，专门记在此文中，以便将来查询。由于文章较长，请用Ctrl+F查询关键字来定位到你需要的内容。</span><br />
<span id="more-7048"></span><br />
<span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（1）</span>Eclipse C++项目设置 头文件/include 路径<br />
在一个项目上点击右键&rarr;Properties&rarr;C/C++ General&rarr;Paths and Symbols&rarr;Includes&rarr;在&ldquo;GNU C&rdquo;和&ldquo;GNU C++&rdquo;中添加头文件路径。<br />
基本要添加的路径可用如下命令获取：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
echo &quot;&quot; | g++ -v -x c++ -E -
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">路径没有设置好的话，项目中会看到很多无法识别的类。</p>
<p><span style="background-color:#00ff00;">（2）</span></span>SecureCRT全屏切换的快捷键<br />
如果你不小心按错了键使SecureCRT进入全屏模式的话，可能会发现找不到按钮可以让它切换回正常模式。 请按 Alt + Enter 切换到正常模式。</p>
<p><span style="background-color:#00ff00;">（3）</span>Visual Studio的启动程序在哪个目录下<br />
在你安装目录下的&nbsp;<span style="color:#0000ff;">Common7\IDE\devenv.exe</span></p>
<p><span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（4）</span>Win7下运行Visual Studio时提示&ldquo;</span>要运行Visual Studio 2005 SP1，建议使用管理员权限<span style="font-family: 文泉驿等宽微米黑;">&rdquo;的问题<br />
右键点击上面提到的&ldquo;</span><span style="color:#0000ff;">devenv.exe</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;，点击&ldquo;属性&rdquo;&rarr;&ldquo;兼容性&rdquo;&rarr;选中&ldquo;以兼容模式运行这个程序&rdquo;&rarr;选择&ldquo;Windows Server 2003 (Service Pack 1)&rdquo;，然后重新启动Visual Studio程序，就会发现提示已经消失了。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑;"> <span style="background-color:#00ff00;">（5）</span>让Total Commander在<span style="color:#b22222;">快速搜索</span>的时候，只显示符合条件的文件（其他的文件隐藏起来）<br />
Total Commander菜单的&ldquo;配置&rdquo;&rarr;&ldquo;选项&rdquo;&rarr;&ldquo;快速搜索&rdquo;&rarr;&ldquo;快速搜索(当前文件夹)&rdquo;中选择&ldquo;字母(显示快速搜索框)&rdquo;&rarr;&ldquo;文件名精确匹配&rdquo;两个复选框都不要选中，然后回到Total Commander的文件浏览器中，随便按几个按键让它开始快速搜索，会发现在下方出现了一个&ldquo;搜索&rdquo;小对话框，右边有一个按钮，上面写着&ldquo;<span style="color:#800080;">Ctrl+S</span>&rdquo;，<span style="color:#0000ff;">你需要确保它是按下的状态</span>，这样就可以筛选掉不符合快速搜索条件的文件了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（6）</span><span style="font-family: 文泉驿等宽微米黑;">让VS 2012创建项目时，提示&ldquo;</span>未能正确加载Visual C++ Language Manager Package...<span style="font-family: 文泉驿等宽微米黑;">&rdquo;的解决办法<br />
下载<a href="http://www.microsoft.com/en-us/download/details.aspx?id=36020" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个</span></a>patch并安装即可解决。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（7）</span><span style="font-family: 文泉驿等宽微米黑;">在PowerPoint中输入上标、下标的快捷键<br />
上标：选中要置为上标的数字，按<span style="color:#ff0000;">Ctrl</span>+<span style="color:#ff0000;">Shift</span>+<span style="color:#ff0000;">=</span></span><br />
<span style="font-family: 文泉驿等宽微米黑;">下标：选中要置为下标的数字，按<span style="color:#ff0000;">Ctrl</span>+<span style="color:#ff0000;">=</span></span><br />
<span style="font-family: 文泉驿等宽微米黑;">再按一次相同的快捷键则取消效果。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（8）</span><span style="font-family: 文泉驿等宽微米黑;">用Linux find命令查找所有包含指定字符串内容的文件</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
find /home/codelast/ -name &quot;*&quot; | xargs grep &quot;abc&quot;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">表示查找 /home/codelast/ 目录下，所有内容里包含字符串&ldquo;abc&rdquo;的文件。这种方法，若包含子目录，则无法递归查找下去。</span></p>
<p>另一种方法：用grep命令实现：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
grep -n -r &quot;abc&quot; ./
</pre>
<p>表示查找当前目录（./）下，含有字符串&ldquo;abc&rdquo;的所有文件。-n表示打印出行号，-r表示递归查找，也就是说目录中若包含子目录，会一级级查找下去。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（9）</span><span style="font-family: 文泉驿等宽微米黑;">VIM跳到第一行、最后一行的快捷键<br />
跳到第一行/首行：<span style="color:#0000ff;">gg</span> 或 <span style="color:#0000ff;">:0</span><br />
跳到最后一行/末行：<span style="color:#0000ff;">Shift+G</span> 或 <span style="color:#0000ff;">:$</span></span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（10）</span><span style="font-family: 文泉驿等宽微米黑;">用sed命令批量删除一堆文本文件中的指定字符串</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sed -i &quot;s/abcde//g&quot; file*
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">表示将当前目录下的所有file*文件中的&ldquo;abcde&rdquo;字符串删除（替换为空字符串就等于是删除了）。</span><br />
如果要删除匹配的行呢？像下面这样：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sed -i &quot;/emails/d&quot; file*
</pre>
<p>表示删除所有file*文件中，含有&ldquo;emails&rdquo;字符串的所有行。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（11）</span><span style="font-family: 文泉驿等宽微米黑;">Emacs刷新缓冲区(buffer)的快捷键<br />
例如，在Emacs中打开的文件被其他程序修改了，需要在Emacs中体现出来，可以这样：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M-x revert-buffer
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（12）</span><span style="font-family: 文泉驿等宽微米黑;">Linux shell命令：统计一个目录下（包括子目录）的文件/目录个数<br />
统计一个目录下（包括子目录）的文件个数：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ls -lR dir_to_scan | grep &quot;^-&quot; | wc -l
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">统计一个目录下（包括子目录）的目录个数：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ls -lR dir_to_scan | grep &quot;^d&quot; | wc -l
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">以上命令中，<span style="color:#b22222;">dir_to_scan</span>即为要搜索的目录。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（13）</span><span style="font-family: 文泉驿等宽微米黑;">grep查询制表符\t<br />
用grep查询一个文本文件中的制表符，如果直接这样写是无效的：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
grep &quot;\t&quot; file.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">就算file.txt中有制表符，也匹配不到。<br />
应该这样：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
grep -P &quot;\t&quot; file.txt
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（14）</span><span style="font-family: 文泉驿等宽微米黑;">lftp的基本用法<br />
登录远程FTP服务器：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
lftp 用户名@服务器地址:服务器端口
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后会让你输入密码登录。<br />
如果嫌麻烦的话可以直接把密码写在命令中：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
lftp 用户名:密码@服务器地址:服务器端口 
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">但是显然，这样会被shell history记录下来，不太安全。</p>
<p>上传一个本地文件到FTP服务器上：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
put /home/codelast/local_file.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">这样会把本地的文件上传到你所在的FTP目录下。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（15）</span><span style="font-family: 文泉驿等宽微米黑;">JAVA中，&quot;UTF-8&quot;这个字符串常量定义在哪？<br />
程序中会经常使用到&quot;UTF-8&quot;这个字符串常量，如果老是写这个字符串的话，显然很二，所以，要么自己定义一个字符串常量，要么用哪里已经定义好的。请看<a href="http://stackoverflow.com/questions/6698354/where-to-get-utf-8-string-literal-in-java" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个</span></a>链接。<br />
我习惯于使用</span><span style="color:#0000ff;">org.apache.commons.codec.CharEncoding.UTF_8</span>这个字符串常量，它依赖于Apache的commons-codec，jar包名形如commons-codec-1.6.jar（版本不同则不是这个名字）。<br />
另外还有一个常用的选择就是使用Guava库：</p>
<pre class="brush:java;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
com.google.common.base.Charsets.UTF_8.name()
</pre>
<p>同样将得到&ldquo;UTF-8&rdquo;。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（16）</span><span style="font-family: 文泉驿等宽微米黑;">rsync over ssh的用法<br />
直接看命令：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rsync -avz -e ssh 用户名@服务器地址:远程文件路径 本地路径
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">例如：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rsync -avz -e ssh user@codelast.com:/abc/file.gz /home/codelast/
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">则会将远程服务器上的 /abc/file.gz 文件同步到本地的 /home/codelast/ 目录下。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（17）</span><span style="font-family: 文泉驿等宽微米黑;">使用rsync从client向server推送文件时，发生&nbsp;</span><span style="color:#0000ff;">auth failed on module xxx from unknown (192.168.1.26): missing secret for user &quot;rsync&quot;</span> 错误（从rsync server的日志中可以看到）的解决办法<br />
<span style="font-family: 文泉驿等宽微米黑;">请注意，如果你的rsync server端用到了一个密码文件（例如</span>rsyncd.secrets），它的文件权限必须为600或400（不允许other用户读写）：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
chmod 600 rsyncd.secrets
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">否则就会发生上面的错误。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（18）</span><span style="font-family: 文泉驿等宽微米黑;">吃掉shell命令的错误提示<br />
这是个非常简单的老问题了，例如，你 ls 一个不存在的文件，就会输出错误提示&ldquo;</span>ls: xxx: No such file or directory<span style="font-family: 文泉驿等宽微米黑;">&rdquo;，如果在shell脚本中执行这个命令，不想让它输出错误提示的话，可以这样：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ls xxx &gt;/dev/null 2&gt;&amp;1
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（19）</span><span style="font-family: 文泉驿等宽微米黑;">Eclipse CDT打开一个.cpp文件时，默认显示是代码折叠的问题<br />
代码折叠，意味着函数什么的只显示一行，括号中的具体内容不显示，这样可能会导致很多人不习惯，可以在配置中改掉：<br />
<span style="color:#0000ff;">Window&rarr;Preference&rarr;C/C++&rarr;Editor&rarr;Folding</span>，去掉&ldquo;<span style="color:#b22222;">Enable folding when opening a new editor</span>&rdquo;选项上的勾即可。重新打开代码文件，就没有代码折叠的问题了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（20）</span><span style="font-family: 文泉驿等宽微米黑;">用&ldquo;msmtp 邮件地址&rdquo;发送邮件时提示&ldquo;</span><span style="color:#b22222;">Fmsmtp: GNU SASL: Base 64 coding error in SASL library</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;错误的解决办法<br />
在命令行用msmtp发送邮件的方法是：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
msmtp abc＠gmail.com
（输入一些内容，任意行数，任意字数，完成之后，按 Ctrl+D 键，邮件会立即发送）
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">其中，abc@gmai.com是要邮件接收地址。<br />
但是可能你还没输入任何内容，只是执行了&ldquo;msmtp 邮件地址&rdquo;这个命令，就提示了类似于下面的错误：</span></p>
<blockquote>
<div>
		<span style="color:#b22222;">Fmsmtp: GNU SASL: Base 64 coding error in SASL library</span></div>
<div>
		<span style="color:#b22222;">msmtp: could not send mail (account default from /root/.msmtprc)</span></div>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">此时可以尝试把</span>.msmtprc配置文件中的&ldquo;auth login&rdquo;改为&ldquo;<span style="color:#0000ff;">auth plain</span>&rdquo;，即有可能解决问题。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（21）</span><span style="font-family: 文泉驿等宽微米黑;">awk求文件中某一列的和<br />
假设要求文件file.txt中第3列的和，则：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
awk -F&quot;\t&quot; &#39;{(total+=$3)};END{print total}&#39; file.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">上面指定了3列的分隔符为\t</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（22）</span><span style="font-family: 文泉驿等宽微米黑;">强制Chrome访问指定网站时使用https<br />
例如访问Google时强制Chrome使用https，怎么做？在Chrome的浏览器栏输入：</span></p>
<blockquote>
<p>
		Chrome://net-internals/</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">在左上角的下拉框里选择&ldquo;<span style="color:#ff0000;">HSTS</span>&rdquo;，在下面的&ldquo;</span><span style="color:#0000ff;">Domain:</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;输入框里填上&ldquo;google.com&rdquo;，然后再勾上&ldquo;</span><span style="color:#0000ff;">Include subdomains for STS</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;（表示对所有google.com的子域名都有效），再点击&ldquo;<span style="color:#0000ff;">Add</span>&rdquo;，然后重新打开浏览器，再访问Google，就会发现真的强制使用https了。</span></p>
<div style="text-align: center;">
	<span style="font-family: 文泉驿等宽微米黑;"><img decoding="async" alt="Chrome force use https" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/chrome_force_use_https.png" style="width: 367px; height: 379px;" /></span></div>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（23）</span><span style="font-family: 文泉驿等宽微米黑;">解决无法使用screen命令时提示的错误：</span><span style="color:#ff0000;">Cannot open your terminal &#39;/dev/pts/0&#39; - please check.</span><br />
<span style="font-family: 文泉驿等宽微米黑;">只需要先执行一个命令即可：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
script /dev/null
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后再执行screen命令，OK了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（24）</span><span style="font-family: 文泉驿等宽微米黑;">修复CentOS 5下的bash注入漏洞<br />
近日（2014年9月），一个引人注目的bash漏洞浮出水面，具体解读可看<a href="http://coolshell.cn/articles/11973.html" rel="noopener noreferrer" target="_blank"><span style="background-color:#00ff00;">这里</span></a>。在CentOS下测试你的系统是否有漏洞：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
env x=&#39;() { :;}; echo vulnerable&#39; bash -c &quot;echo this is a test&quot;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">若输出下面的结果则说明你的bash有严重漏洞：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
vulnerable
this is a test
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">修复方法很简单：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
yum update bash -y
/sbin/ldconfig
rpm -qa bash
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">之后再用上面的测试方法进行测试，若只输出&ldquo;</span>this is a test<span style="font-family: 文泉驿等宽微米黑;">&rdquo;则说明漏洞已完全修复！</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（25）</span><span style="font-family: 文泉驿等宽微米黑;">awk取最后一列、倒数第二列<br />
用awk分割后，取最后一列以及倒数第二列的方法：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
[codelast@ temp]$ cat a.txt 
/usr/bin/1.txt
/usr/bin/2.txt
/usr/bin/3.txt
[codelast@ temp]$ cat a.txt | awk -F &quot;/&quot; &#39;{print $(NF-1)&quot;/&quot;$NF}&#39;
bin/1.txt
bin/2.txt
bin/3.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">可见$NF表示最后一列，并且可用它减去任意数字得到其前面的列。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（26）</span><span style="font-family: 文泉驿等宽微米黑;">查看Ruby gem的安装路径</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
gem environment 
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">在输出结果中有类似于下面的这一段，即为其安装路径：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
  - GEM PATHS:
     - /usr/lib64/ruby/gems/2.1.0
     - /root/.gem/ruby/2.1.0
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（27）</span><span style="font-family: 文泉驿等宽微米黑;">如何查看本地的Ruby doc/本地Ruby doc server的开启</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
[codelast@ ~]$ gem server --daemon
Server started at http://0.0.0.0:8808
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后就可以用浏览器访问&nbsp;</span>http://0.0.0.0:8808 来查看安装过的gem的Ruby doc了。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（28）</span><span style="font-family: 文泉驿等宽微米黑;">Ubuntu下的Thunderbird，在新邮件到达时不显示通知<br />
默认情况下，有新邮件到达时，Thunderbird会在Ubuntu的右上角显示一个弹出的小窗口通知，如果邮件多的话，这个窗口就会频繁弹出，非常令人不悦，因此可以修改Thunderbird的配置，让它不显示：<br />
<span style="color:#0000ff;">编辑&rarr;首选项&rarr;常规&rarr;新消息到达时&rarr;去掉&ldquo;显示警告&rdquo;前的勾</span></span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（29）</span><span style="font-family: 文泉驿等宽微米黑;">T如何清空Chrome的Secure Shell插件中的known_hosts记录？<br />
在Secure Shell的主界面里，用快捷键&ldquo;Ctrl+Shift+J&rdquo;打开JavaScript控制台工具，执行如下命令：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
&gt; term_.command.removeAllKnownHosts()
true
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">回车之后就搞定了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（30）</span><span style="font-family: 文泉驿等宽微米黑;">screen强制接管一个会话（session）<br />
当用 screen -r 无法 attach 一个session的时候，可以用下面的命令，踢掉原来的用户，强制attach到指定的session上：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
screen -D -r &lt;session_id&gt;
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（31）</span><span style="font-family: 文泉驿等宽微米黑;">如何防止Google表单把输入的&ldquo;true&rdquo;自动转化为大写的&ldquo;TRUE&rdquo;<br />
这个特性不是Google表单的bug，但是确实很恼人。其实只要在输入的时候，在&ldquo;true&rdquo;（不含引号）前面加一个单引号就可以输入小写的true了，就像这样：<br />
<span style="color:#ff0000;">&#39;true</span></span></p>
<p><span style="background-color:#00ff00;">（32）</span>Zookeeper server以指定的配置文件启动</p>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
./zkServer.sh start zoo.cfg
</pre>
</div>
<div>
	则启动时，会用同目录下的 zoo.cfg 作为配置文件。</p>
<p>	<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（33）</span><span style="font-family: 文泉驿等宽微米黑;">读取本地磁盘上的Thrift文件，以及把Thrfit对象写到本地文件<br />
	一言不合直接看代码：</span></p>
<pre class="brush:java;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
// 待读取的Thrift格式文件的路径
String filePath = &quot;/home/codelast/my-thrift-file&quot;;

// 读取成byte数组
byte[] bytes = Files.readAllBytes(new File(filePath).toPath());

// 反序列化器
TDeserializer deserializer = new TDeserializer();

// 文件中存储的Thrift对象的格式
MyThrift myThriftObject = new MyThrift();

// 反序列化，执行之后文件中存储的数据就被保存到了 myThriftObject 这个对象中
deserializer.deserialize(myThriftObject, bytes);
</pre>
<p>
	以及写文件：</p>
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'DejaVu Sans Mono';font-size:12.0pt;">
<span style="color:#cc7832;">private void </span><span style="color:#ffc66d;">writeThriftObject2File</span>(MyThrift thriftObj<span style="color:#cc7832;">, </span>String outputFilePath) <span style="color:#cc7832;">throws </span>IOException<span style="color:#cc7832;">, </span>TException {
  BufferedOutputStream bufferedOut = <span style="color:#cc7832;">new </span>BufferedOutputStream(<span style="color:#cc7832;">new </span>FileOutputStream(outputFilePath)<span style="color:#cc7832;">, </span><span style="color:#6897bb;">2048</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">  </span>TBinaryProtocol binaryOut = <span style="color:#cc7832;">new </span>TBinaryProtocol(<span style="color:#cc7832;">new </span>TIOStreamTransport(bufferedOut))<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">  </span>thriftObj.write(binaryOut)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">  </span>bufferedOut.flush()<span style="color:#cc7832;">;
</span>}</pre>
<p>	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（34）</span><span style="font-family: 文泉驿等宽微米黑;">tmux从小屏幕换到大屏幕之后显示不全屏的问题<br />
	如果你在一台分辨率小的电脑上创建了一个tmux session，然后在一台分辨率高的电脑上attach这个session，会发现attach上之后，tmux并不是全屏显示，而是小分辨率那部分形成了一个框框，在屏幕的其他部分都是无用的区域，这看起来非常难受，事实上，可以在attach的时候，加一个&nbsp;<span style="color:#0000ff;">-d&nbsp;</span>参数解决这个问题：</span></p>
<blockquote>
<p>
			<span style="font-family: 文泉驿等宽微米黑;">tmux attach -d</span></p>
</blockquote>
<p>	<span style="font-family: 文泉驿等宽微米黑;">如果要 attach 到指定序号的session上，这样做：</span></p>
<blockquote>
<p>
			<span style="font-family: 文泉驿等宽微米黑;">tmux attach -d -t 3</span></p>
</blockquote>
<p>	<span style="font-family: 文泉驿等宽微米黑;">其中 3 是session的序号。<br />
	注意：这个操作会detach其他的tmux客户端。</span></p>
<p>	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
		<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
</div>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushShell.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushJava.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创]VC++连接/操作MySQL数据库(通过MySQL C API)</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9bvc%e8%bf%9e%e6%8e%a5%e6%93%8d%e4%bd%9cmysql%e6%95%b0%e6%8d%ae%e5%ba%93%e9%80%9a%e8%bf%87mysql-c-api/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9bvc%e8%bf%9e%e6%8e%a5%e6%93%8d%e4%bd%9cmysql%e6%95%b0%e6%8d%ae%e5%ba%93%e9%80%9a%e8%bf%87mysql-c-api/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Sat, 04 May 2013 16:58:05 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[ADO]]></category>
		<category><![CDATA[C++连接MySQL]]></category>
		<category><![CDATA[MySQL C API]]></category>
		<category><![CDATA[MySQL C++ Connector]]></category>
		<category><![CDATA[VC连接MySQL]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=5904</guid>

					<description><![CDATA[<p>
这是一篇非常基础的文章。想必每个刚开始学写程序的人，都很有可能会遇到这样的问题：如何用Visual C++编写一个可以操作（读写数据）MySQL的程序？<br />
由于一直在Linux下工作，我很久没写Windows程序了，但是最近急于写一个操作MySQL的Windows程序来用，于是又重新拿起了VC++，写了一个MFC应用程序，临阵磨枪，不亮也光嘛。<br />
在写这个程序的过程中，遇到的有些问题觉得挺扯蛋的，于是干脆就把整个过程给记下来了，整理成这篇文章，知识共享。<br />
开发环境：Visual Studio 2005，Win 7 32位<br />
<span id="more-5904"></span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">【1】</span>在开发VC++程序时，怎样访问MySQL<br />
方法很多，我只就我了解过的来说一说。<br />
<span style="background-color:#ee82ee;">①</span>ADO<br />
为了开发方便，你可以通过ADO来连接MySQL，这也是很多教程提到的方法，写起程序来确实简单，但它有一个问题：你需要先安装MySQL ODBC Driver，并在OS里配置一个数据源，否则程序写好了也是不能连接MySQL的。因此，你在一台计算机上配置好了之后，把你写的程序拷贝到另一台计算机上，又要在OS里重新安装MySQL ODBC Driver并配置数据源，这得有多蛋疼啊？！我觉得这是减轻了编码的工作，却增加了部署的工作，因此，不考虑这种方法，放弃ADO。<br />
<!--more--><br />
不过，这里还是要提一下用ADO访问MySQL的代码有多么简单:<br />
在你的VC++项目中初始化ADO（例如在stdafx.h中）：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
#import &#34;msado15.dll&#34; no_namespace rename(&#34;EOF&#34;,&#34;adoEOF&#34;)
</pre>
<p>其中，msado15.dll是在Windows系统盘里的一个文件，你可以搜索到。可以把它拷贝到工程项目下，就无需写完整路径了。<br />
然后，在操作数据库之前（一般是在项目的App类中），还要初始化一次：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
if (!AfxOleInit()) {
    AfxMessageBox(&#34;初始化失败！&#34;);
    return FALSE;
}
</pre>
<p>无需其他特殊的设置，接着就可以开始写访问MySQL的程序了，关于读写MySQL的示例代码，这里就不附上了。<br />
没错，就这么简单，你无需在项目中链接到任何MySQL的lib，也无需去找MySQL相关的头文件。ADO确实很适合想要在代码编写上省事的人。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
而下面所说的几种方法都是在开发阶段麻烦，但在部署阶段简单（拷贝相关文件到目标机器上即可用，无需配置数据源）。所以，你可以根据实际情况做出取舍。<br />
<span style="background-color:#dda0dd;">②</span>使用MySQL C API<br />
<a href="http://dev.mysql.com/doc/refman/5.0/en/c-api.html" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">MySQL C API</span></a>是什么？官方说明如下：</p>
<blockquote>
<p>
		The C API provides low-level access to the MySQL client/server protocol and enables C programs to access database contents.</p></blockquote>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9bvc%e8%bf%9e%e6%8e%a5%e6%93%8d%e4%bd%9cmysql%e6%95%b0%e6%8d%ae%e5%ba%93%e9%80%9a%e8%bf%87mysql-c-api/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<p>
这是一篇非常基础的文章。想必每个刚开始学写程序的人，都很有可能会遇到这样的问题：如何用Visual C++编写一个可以操作（读写数据）MySQL的程序？<br />
由于一直在Linux下工作，我很久没写Windows程序了，但是最近急于写一个操作MySQL的Windows程序来用，于是又重新拿起了VC++，写了一个MFC应用程序，临阵磨枪，不亮也光嘛。<br />
在写这个程序的过程中，遇到的有些问题觉得挺扯蛋的，于是干脆就把整个过程给记下来了，整理成这篇文章，知识共享。<br />
开发环境：Visual Studio 2005，Win 7 32位<br />
<span id="more-5904"></span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">【1】</span>在开发VC++程序时，怎样访问MySQL<br />
方法很多，我只就我了解过的来说一说。<br />
<span style="background-color:#ee82ee;">①</span>ADO<br />
为了开发方便，你可以通过ADO来连接MySQL，这也是很多教程提到的方法，写起程序来确实简单，但它有一个问题：你需要先安装MySQL ODBC Driver，并在OS里配置一个数据源，否则程序写好了也是不能连接MySQL的。因此，你在一台计算机上配置好了之后，把你写的程序拷贝到另一台计算机上，又要在OS里重新安装MySQL ODBC Driver并配置数据源，这得有多蛋疼啊？！我觉得这是减轻了编码的工作，却增加了部署的工作，因此，不考虑这种方法，放弃ADO。<br />
<!--more--><br />
不过，这里还是要提一下用ADO访问MySQL的代码有多么简单:<br />
在你的VC++项目中初始化ADO（例如在stdafx.h中）：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
#import &quot;msado15.dll&quot; no_namespace rename(&quot;EOF&quot;,&quot;adoEOF&quot;)
</pre>
<p>其中，msado15.dll是在Windows系统盘里的一个文件，你可以搜索到。可以把它拷贝到工程项目下，就无需写完整路径了。<br />
然后，在操作数据库之前（一般是在项目的App类中），还要初始化一次：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
if (!AfxOleInit()) {
    AfxMessageBox(&quot;初始化失败！&quot;);
    return FALSE;
}
</pre>
<p>无需其他特殊的设置，接着就可以开始写访问MySQL的程序了，关于读写MySQL的示例代码，这里就不附上了。<br />
没错，就这么简单，你无需在项目中链接到任何MySQL的lib，也无需去找MySQL相关的头文件。ADO确实很适合想要在代码编写上省事的人。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
而下面所说的几种方法都是在开发阶段麻烦，但在部署阶段简单（拷贝相关文件到目标机器上即可用，无需配置数据源）。所以，你可以根据实际情况做出取舍。<br />
<span style="background-color:#dda0dd;">②</span>使用MySQL C API<br />
<a href="http://dev.mysql.com/doc/refman/5.0/en/c-api.html" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">MySQL C API</span></a>是什么？官方说明如下：</p>
<blockquote>
<p>
		The C API provides low-level access to the MySQL client/server protocol and enables C programs to access database contents.</p>
</blockquote>
<p>你可以通过它来访问MySQL。我最终用的就是这种方法。<br />
<span style="background-color:#dda0dd;">③</span>使用MySQL C++ Connector<br />
<a href="http://dev.mysql.com/doc/refman/5.6/en/connector-cpp.html" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">MySQL C++ Connector</span></a>是什么？官方说明如下：</p>
<blockquote>
<p>
		MySQL Connector/C++ is a MySQL database connector for C++. It lets you develop C++ applications that connect to the MySQL Server.</p>
</blockquote>
<p>那么，它与MySQL的C API有什么区别呢？为什么要使用它？官方说明如下：</p>
<blockquote>
<div>
		MySQL Connector/C++ offers the following benefits for C++ users compared to the MySQL C API (MySQL client library):</div>
<div>
		Convenience of pure C++; no C function calls required</div>
<div>
		Supports JDBC 4.0, an industry standard API</div>
<div>
		Supports the object-oriented programming paradigm</div>
<div>
		Reduces development time</div>
<div>
		Licensed under the GPL with the FLOSS License Exception</div>
<div>
		Available under a commercial license upon request</div>
</blockquote>
<div>
	可见其优点多多。但有一点要注意：如果使用MySQL C++ Connector，在开发阶段比MySQL C API要做更多的工作（下载、配置各种依赖库，等等），如果你想稍微简单一点，就使用MySQL C API；如果你不嫌麻烦，就使用MySQL C++ Connector，它的优点正如上面所说，这里就不复述了。<br />
	MySQL C++ Connector的下载链接在<a href="http://dev.mysql.com/downloads/connector/cpp/" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">这里</span></a>。你可以根据你的平台下载相应的版本，例如&ldquo;<span style="color:#0000ff;">Windows (x86, 32-bit), ZIP Archive</span>&rdquo;，解压出来会看到 include 和 lib 这两个目录，里面的文件都是我们需要的。</div>
<p>你可以参考MySQL官方的<a href="http://dev.mysql.com/doc/refman/5.6/en/connector-cpp-apps-windows-visual-studio.html" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">这篇文章</span></a>。它比较详细地描述了如何创建一个VC++工程并使用MySQL C++ Connector的方法。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
这里不得不提醒你的是，前面已经说了，比起使用MySQL C API，用MySQL C++ Connector来开发程序要做更多的工作，体现在：MySQL C++ Connector依赖于MySQL库、<a href="http://www.boost.org/" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Boost</span></a>，因此你还要先有MySQL的开发包、Boost库。Boost是个麻烦的东西，因为它很大，编译出lib很耗时间，很耗CPU资源，如果你和我一样，用的是一台老爷机，那么你会感觉到编译出Boost lib的过程异常痛苦。另外，在撮合了MySQL C++ Connector、Boost、MySQL的一个项目中，如果你的项目参数设置不对，会出现各种奇怪的问题，下面我列举一二：<br />
<span style="background-color: rgb(221, 160, 221);">㈠</span><span style="color: rgb(178, 34, 34);">LINK : warning LNK4098: 默认库&ldquo;MSVCRT&rdquo;与其他库的使用冲突；请使用 /NODEFAULTLIB:library</span><br />
解决办法是修改VC++项目属性：<br />
<span style="color: rgb(0, 0, 255);">项目&rarr;编辑项目属性&rarr;链接器&rarr;输入&rarr;&ldquo;忽略特定库&rdquo;里填上&ldquo;MSVCRT.lib&rdquo;（不含引号）</span>。</p>
<p><span style="background-color: rgb(221, 160, 221);">㈡</span><span style="color: rgb(178, 34, 34);">msvcprt.lib(MSVCP80.dll) : error LNK2005: &quot;public: __thiscall std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;(class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;)&quot; (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) 已经在 XXX.obj 中定义</span><br />
解决办法是修改VC++项目属性：<br />
<span style="color: rgb(0, 0, 255);">项目&rarr;编辑项目属性&rarr;C/C++&rarr;代码生成&rarr;运行时库&rarr;修改为&ldquo;</span><span style="color: rgb(0, 128, 0);">多线程调试 DLL (/MDd)</span><span style="color: rgb(0, 0, 255);">&rdquo;或&ldquo;</span><span style="color: rgb(0, 128, 0);">多线程 DLL (/MD)</span><span style="color: rgb(0, 0, 255);">&rdquo;</span><br />
同时，因为此项修改，可能会导致另一个编译错误：<br />
<span style="color: rgb(178, 34, 34);">fatal error C1189: #error : &nbsp;Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]</span><br />
如果看到这个错误提示，那么就要再次修改项目属性：<br />
<span style="color: rgb(0, 0, 255);">项目&rarr;编辑项目属性&rarr;配置属性&rarr;常规&rarr;MFC的使用&rarr;修改为&ldquo;</span><span style="color: rgb(0, 128, 0);">在共享 DLL 中使用 MFC</span><span style="color: rgb(0, 0, 255);">&rdquo;</span><br />
然后就解决了此问题。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
这可能只是各种编译问题中的一小部分，除非你运气好，没遇到这些问题，或者你愿意花很多时间来搞定它，否则你一定不想在时间紧张的时候看到这些烦人的错误。</p>
<p><span style="background-color:#00ff00;">【2】</span>头文件，lib的目录结构<br />
综上所述，我使用的是MySQL C API，那么我需要拿到相关的头文件和lib文件。我是先下载到&nbsp;mysql-installer-community-5.6.11.0.msi 这个MySQL的安装包，然后（无需安装）用<a href="http://legroom.net/software/uniextract" target="_blank" rel="noopener noreferrer"><span style="background-color:#ffa07a;">Universal Extractor</span></a>把它解压出来，得到&nbsp;mysql-5.6.11-win32.msi 文件，再次使用Universal Extractor解压，最终会拿到include和lib两个目录，就是我们所需要的。然后就把它们都放到项目目录下，我是像下面这样组织目录结构的：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:、;collapse:false;">
├─include
│  └─mysql
│      └─server
│          │  big_endian.h
│          │  (后面省略)
│          └─mysql
│              │  client_authentication.h
│              │  (后面省略)
│              └─psi
│                      mysql_file.h
│                      (后面省略)
│                      
├─lib
│  └─mysql
│      └─server
│          │  libmysql.dll
│          │  libmysql.lib
│          │  mysqlclient.lib
│          │  
│          ├─debug
│          │      mysqlclient.lib
│          │      
│          └─plugin
│                  adt_null.dll
│                  auth.dll
│                  auth_test_plugin.dll
│                  libdaemon_example.dll
│                  mypluglib.dll
│                  qa_auth_client.dll
│                  qa_auth_interface.dll
│                  qa_auth_server.dll
│                  semisync_master.dll
│                  semisync_slave.dll
│                  validate_password.dll
</pre>
<p>其中，include下的是头文件，lib下的是库文件，它们下面的boost、connector、server分别是Boost、MySQL C++ Connector、MySQL的文件。<br />
有了这样的目录结构，VC++项目怎么设置？<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">【3】</span>Visual C++项目设置<br />
打开项目属性设置对话框，依次设置如下（无论是对Debug，还是Release，都这样设置）：<br />
<span style="background-color:#dda0dd;">①</span>&ldquo;配置属性&rdquo;&rarr;&ldquo;常规&rdquo;&rarr;&ldquo;MFC的使用&rdquo;&rarr;&ldquo;在静态库中使用MFC&rdquo;（这一项不一定非要这样设置）。<br />
<span style="background-color:#dda0dd;">②</span>&ldquo;配置属性&rdquo;&rarr;&ldquo;C/C++&rdquo;&rarr;&ldquo;常规&rdquo;&rarr;&ldquo;附加包含目录&rdquo;，把上面提到的include目录添加进去。对应到上面所说的层级结构，它应该是 <span style="color:#0000ff;">XXX\include\mysql\server</span> 这样的目录。如下图所示(后面的步骤也类似，不再图示)：</p>
<div style="text-align: center;">
	<img decoding="async" alt="VC++ project properties" src="http://www.codelast.com/wp-content/uploads/2013/05/project_properties.png" style="width: 243px; height: 200px;" /><br />
	&nbsp;</div>
<div style="text-align: center;">
	<img decoding="async" alt="VC++ add include directory" src="http://www.codelast.com/wp-content/uploads/2013/05/add_include_directory.png" style="width: 558px; height: 232px;" /></div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color:#dda0dd;">③</span>&ldquo;配置属性&rdquo;&rarr;&ldquo;链接器&rdquo;&rarr;&ldquo;常规&rdquo;&rarr;&ldquo;附加库目录&rdquo;，把上面提到的lib目录添加进去。对应到上面所说的层级结构，它应该是 <span style="color:#0000ff;">XXX\lib\mysql\server</span> 这样的目录。<br />
<span style="background-color:#dda0dd;">④</span>&ldquo;配置属性&rdquo;&rarr;&ldquo;链接器&rdquo;&rarr;&ldquo;输入&rdquo;&rarr;&ldquo;附加依赖项&rdquo;，填入&ldquo;<span style="color:#0000ff;">libmysql.lib</span>&rdquo;（不包含引号）。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">【4】</span>程序编写<br />
我添加了一个类DataAccess，所有的数据库操作都通过这个类完成。这个类大概是长这个样子的（由于是截取下来的代码片段，所以如果有错误导致无法编译，还请见谅）：<br />
头文件：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
/**
 * DataAccess.h
 *
 * @author Darran Zhang @ codelast.com
 */

#pragma once

#include &quot;stdafx.h&quot;
#include &lt;string&gt;
#include &lt;winsock.h&gt;
#include &quot;mysql.h&quot;

class CDataAccess
{
public:
	CDataAccess(void);
	~CDataAccess(void);

private:
	MYSQL* m_pSQL;  
	MYSQL_RES* m_pSQLResultSet;

protected:
	BOOL m_bIsConnect;		// 数据库是否已连接

public:
	BOOL ConnectDB(const std::string &amp;strHost, const int nPort, const std::string &amp;strDBName, const std::string &amp;strUserName, const std::string &amp;strPassword);
	BOOL ExecuteQuery(std::string &amp;strSQL);
};
</pre>
<p>其中，如果没有包含 winsock.h 这个文件的话，编译时会报错：</p>
<blockquote>
<p>
		mysql_com.h(XXX) : error C2146: syntax error : missing &#39;;&#39; before identifier &#39;fd&#39;</p>
</blockquote>
<p>m_pSQL 和&nbsp;<span style="font-size: 14px;">m_pSQLResultSet 这两个指针的类型是在MySQL C API中定义的。</span><br />
ConnectDB()函数用于连接MySQL，ExecuteQuery()函数用于执行一句SQL。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
实现文件：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
/**
 * DataAccess.cpp
 *
 * @author Darran Zhang @ codelast.com
 */

#include &quot;DataAccess.h&quot;

using namespace std;

CDataAccess::CDataAccess(void)
{
  m_pSQL = NULL;
  m_pSQLResultSet = NULL;
  m_bIsConnect = FALSE;
}

CDataAccess::~CDataAccess(void)
{
  if(m_pSQL) {
    mysql_close(m_pSQL);
  }

  m_pSQL = NULL;
  m_pSQLResultSet = NULL;
}

BOOL CDataAccess::ConnectDB(const string &amp;strHost, const int nPort, const string &amp;strDBName, const string &amp;strUserName, const string &amp;strPassword)
{
  if (m_bIsConnect) {
    MessageBox(AfxGetMainWnd()-&gt;m_hWnd, _T(&quot;数据库已连接&quot;), _T(&quot;提示&quot;), MB_ICONWARNING | MB_OK);
    return TRUE;
  }

  mysql_library_init(0, NULL, NULL);  // 初始化MySQL C API库 
  if( (m_pSQL = mysql_init(NULL)) == NULL) {
    MessageBox(AfxGetMainWnd()-&gt;m_hWnd, _T(&quot;初始化MySQL连接失败&quot;), _T(&quot;错误&quot;), MB_ICONERROR | MB_OK);
    return FALSE;
  }
  mysql_options(m_pSQL, MYSQL_SET_CHARSET_NAME, &quot;gb2312&quot;);

  if (NULL == mysql_real_connect(m_pSQL, strHost.c_str(), strUserName.c_str(), strPassword.c_str(), strDBName.c_str(), nPort, NULL, 0)) {
      MessageBox(AfxGetMainWnd()-&gt;m_hWnd, _T(&quot;连接MySQL失败&quot;), _T(&quot;错误&quot;), MB_ICONERROR | MB_OK);
      return FALSE;
  }

  m_bIsConnect = TRUE;
  return m_bIsConnect;  // 返回连接是否成功的标志
}

BOOL CDataAccess::ExecuteQuery(string &amp;strSQL)
{
  if (!m_bIsConnect) {
    MessageBox(AfxGetMainWnd()-&gt;m_hWnd, _T(&quot;尚未连接MySQL&quot;), _T(&quot;错误&quot;), MB_ICONERROR | MB_OK);
    return FALSE;
  }

  size_t nReturnValue = mysql_real_query(m_pSQL, strSQL.c_str(), strSQL.length());
  return (0 == nReturnValue) ? TRUE : FALSE;
}
</pre>
<p>这个类的使用也很简单，构造一个DataAccess类对象来调用其方法即可。<br />
注意：有一句代码&nbsp;mysql_options(m_pSQL, MYSQL_SET_CHARSET_NAME, &quot;gb2312&quot;) 的作用是设置连接的字符集，我记得我测试的时候，使用gbk字符集的话，向数据库中插入的中文是乱码，所以在这里我将它设置为gb2312，经测试就没有问题了。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
上面的代码片段甚至于没有演示如何取出一个SQL查询得到的记录集，因此在这里补充一下。<br />
假设你有一张名为&ldquo;student&rdquo;的MySQL表，有两列：ID（主键），name（字符串）。现在要用程序取出该表里的所有记录，可以像下面那样做：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
string strSQL = &quot;SELECT * FROM student&quot;;
if(mysql_query(m_pSQL, strSQL.c_str())) {
	MessageBox(AfxGetMainWnd()-&gt;m_hWnd, _T(&quot;查询数据库失败&quot;), _T(&quot;错误&quot;), MB_ICONERROR | MB_OK);
	return FALSE;
}

m_pSQLResultSet = mysql_store_result(m_pSQL);
MYSQL_ROW pSQLRow = NULL;

while (pSQLRow = mysql_fetch_row(m_pSQLResultSet)) {   // 循环读出每一行 
	for (int i = 0; i &lt;= 1; i++) { // 循环读出每一列 
		string strFieldValue = pSQLRow[i];
		if (0 == i) {	// 第1列 
			long nId = atol(strFieldValue.c_str());
		} else if (1 == i) {	// 第2列 
			string name = strFieldValue;
		}
	}
}

mysql_free_result(m_pSQLResultSet);   // 释放资源 
return TRUE;
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
上面的代码还不完整，只是演示了怎么读取SQL查询的结果集。但是有了上面的一系列铺垫，你应该可以写出自己的程序来用了。</p>
<p>
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushCpp.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9bvc%e8%bf%9e%e6%8e%a5%e6%93%8d%e4%bd%9cmysql%e6%95%b0%e6%8d%ae%e5%ba%93%e9%80%9a%e8%bf%87mysql-c-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] SVN和Git的一些用法总结</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-linux%e5%91%bd%e4%bb%a4%e8%a1%8c%e4%b8%8b%e4%bd%bf%e7%94%a8svn%e5%92%8cgit%e7%9a%84%e4%b8%80%e4%ba%9b%e7%94%a8%e6%b3%95%e6%80%bb%e7%bb%93/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-linux%e5%91%bd%e4%bb%a4%e8%a1%8c%e4%b8%8b%e4%bd%bf%e7%94%a8svn%e5%92%8cgit%e7%9a%84%e4%b8%80%e4%ba%9b%e7%94%a8%e6%b3%95%e6%80%bb%e7%bb%93/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Wed, 10 Apr 2013 03:19:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[Git命令行]]></category>
		<category><![CDATA[Linux SVN]]></category>
		<category><![CDATA[SVN命令行]]></category>
		<category><![CDATA[TortoiseGit]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[版本控制]]></category>
		<category><![CDATA[用法]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=5719</guid>

					<description><![CDATA[<p>
	&#160;</p>
<p>以下都是比较基础的操作，高手们请绕道，不必浪费时间来看了。</p>
<h3>
	<span style="background-color:#ee82ee;">（A）</span>SVN</h3>
<p><span style="background-color:#00ff00;">➤</span> 查看日志<br />
提交的时候一般会写上注释，如果要查看提交日志，用以下命令：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn log -l 4
</pre>
<p>其中，-l 4表示只查看最近4条日志（也可以没有这样的参数，就表示查看所有日志）。但是你通常会很抓狂地发现，最近的几条日志中，竟然没有你才刚刚提交的那一次的日志！这是怎么回事？日志丢了吗？<br />
其实，是因为你要很用以下命令，更新本地的版本库，才能看到最近提交的日志：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn up
</pre>
<p>这事如果你没注意到，那么可能会浪费你很多时间。问Google也不好找答案，因为这个问题不太好描述，所以不好搜索答案。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&#160;查看指定的版本修改了哪些文件</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn diff --summarize -c 566
</pre>
<p>其中，566是你指定的版本。<br />
<span id="more-5719"></span><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&#160;查看某个文件在指定的版本修改了什么内容</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn diff Test.java -c 566 &#62; codelast.diff
</pre>
<p>其中，Test.java是你要检查的文件，566是你指定的版本，最后diff被输出到了codelast.diff文件中。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&#160;提交</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn ci -m &#34;Your comment&#34;
</pre>
<p>其中，<span style="color:#0000ff;">Your comment</span> 就是你填写的注释，如果你想换行写，也是可以的，只要你不写后面的那个引号，你可以写一行就回车一次，最后写完了，再加上后面的引号，然后再回车，就执行提交动作了。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&#160;检出指定版本的版本库</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn co https://xxx -r 566
</pre>
<p>其中，https://xxx 是你的版本库地址，566是你要检出的版本号。版本库将被检出到当前路径下。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-linux%e5%91%bd%e4%bb%a4%e8%a1%8c%e4%b8%8b%e4%bd%bf%e7%94%a8svn%e5%92%8cgit%e7%9a%84%e4%b8%80%e4%ba%9b%e7%94%a8%e6%b3%95%e6%80%bb%e7%bb%93/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
	&nbsp;</p>
<p>以下都是比较基础的操作，高手们请绕道，不必浪费时间来看了。</p>
<h3>
	<span style="background-color:#ee82ee;">（A）</span>SVN</h3>
<p><span style="background-color:#00ff00;">➤</span> 查看日志<br />
提交的时候一般会写上注释，如果要查看提交日志，用以下命令：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn log -l 4
</pre>
<p>其中，-l 4表示只查看最近4条日志（也可以没有这样的参数，就表示查看所有日志）。但是你通常会很抓狂地发现，最近的几条日志中，竟然没有你才刚刚提交的那一次的日志！这是怎么回事？日志丢了吗？<br />
其实，是因为你要很用以下命令，更新本地的版本库，才能看到最近提交的日志：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn up
</pre>
<p>这事如果你没注意到，那么可能会浪费你很多时间。问Google也不好找答案，因为这个问题不太好描述，所以不好搜索答案。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;查看指定的版本修改了哪些文件</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn diff --summarize -c 566
</pre>
<p>其中，566是你指定的版本。<br />
<span id="more-5719"></span><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;查看某个文件在指定的版本修改了什么内容</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn diff Test.java -c 566 &gt; codelast.diff
</pre>
<p>其中，Test.java是你要检查的文件，566是你指定的版本，最后diff被输出到了codelast.diff文件中。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;提交</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn ci -m &quot;Your comment&quot;
</pre>
<p>其中，<span style="color:#0000ff;">Your comment</span> 就是你填写的注释，如果你想换行写，也是可以的，只要你不写后面的那个引号，你可以写一行就回车一次，最后写完了，再加上后面的引号，然后再回车，就执行提交动作了。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;检出指定版本的版本库</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn co https://xxx -r 566
</pre>
<p>其中，https://xxx 是你的版本库地址，566是你要检出的版本号。版本库将被检出到当前路径下。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;将指定version的trunk上的代码拷贝到tags的指定目录下</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn cp https://svn.codelast.com/trunk/my-project@1333 https://svn.codelast.com/tags/my-project-r1333
</pre>
<p>如上命令将trunk下的 my-project&nbsp;项目的 1333 版本拷贝到了tags下的 my-project-r1333 中。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;将branches上的指定版本合并（merge）到trunk上<br />
有时候我们会在一个分支（branches）上开发，等开发完成的时候，需要把我们已经提交到branches上的代码合并到trunk上，假设你本地的工作目录是在branches上（刚开发完branches上的一个版本，提交了代码），那么可以像下面这样做：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn switch trunk-url-of-your-project
svn merge branch-url-of-your-project
</pre>
<p>其中，第一条命令是将本地工作目录切换到trunk上。执行完这条命令后，你本地的工作目录里的文件就会变成与trunk里的文件一致。<br />
第二条命令是将branches上的文件合并到本地。执行完这条命令行，你本地的工作目录里的文件就会变成与branches合并的结果。但是请注意，由于本地的工作目录已经是trunk了（用svn info可查看），所以这一更新，就导致本地有若干文件变成&ldquo;已修改，但未提交&rdquo;的状态。因此，你需要把本地因merge被修改过的文件提交一次，就可以使得trunk上的文件变成与branches合并后的版本：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn ci -m &quot;Merge branch to trunk&quot;
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
关于svn merge的更详细说明，可参考<a href="http://www.subversion.org.cn/svnbook/1.4/svn.ref.svn.c.merge.html" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文档</span></a>。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: Ubuntu;">为文件添加上可执行权限</span><br />
假设你有一个脚本文件checkin到代码库中了，但是你在commit之前，却忘了给它添加可执行权限，那么，当checkout出来这份代码时，就会得到一个没有x权限的脚本，还需要手工再为它添加上x权限，非常麻烦。所以，要为该文件添加上x权限：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn propset svn:executable on your-script.sh
</pre>
<p>然后再 svn ci 提交修改即可（尽管你没有修改文件内容，只是修改了文件的权限，也是会被标记为已修改的，需要将此修改提交到代码库中）。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: Ubuntu;">checkout单个文件到本地</span><br />
如果用 <span style="color:#0000ff;">svn checkout 单个文件的URL</span> 来检出一个文件到本地的话，会得到如下的错误提示：</p>
<blockquote>
<p>
		svn: E200007: URL &#39;https://xxx&#39; refers to a file, not a directory</p>
</blockquote>
<p>那么，如何checkout单个文件呢？答案是用<span style="color:#ff0000;">svn export</span>命令即可。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;Review Board提交svn的diff文件时，提示<span style="font-family: 文泉驿等宽微米黑;">&ldquo;</span><span style="color:#0000ff;">The file &#39;https://svn.codelast.com/abc.txt&#39; (r1030) could not be found in the repository</span>&rdquo;错误的解决办法<br />
我遇到的这例错误，是因为我在一个项目中新添加了一个文件abc.txt，于是用 svn add abc.txt 添加它，然后 svn diff &gt; today.diff 生成了项目的diff文件，然后把该diff文件提交到Review Board中，想要生成一个新的review，结果就遇到了上面的错误提示。<br />
这个错误提示乍一看非常搞笑：因为abc.txt是新添加的文件，它当然不会在repository中存在啊！这不是废话么？<br />
同时我注意到，当我执行 svn add abc.txt时，命令行提示：</p>
<blockquote>
<p>
		A &nbsp;(bin) &nbsp;abc.txt</p>
</blockquote>
<p>虽然abc.txt是一个纯文本文件，但是svn貌似把它认作了一个binary文件，于是我Google到了<a href="http://stackoverflow.com/questions/2634043/svn-diff-file-marked-as-binary-type" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个链接</span></a>，按照里面的说法，我在 svn add abc.txt 之后进行了如下操作：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn propset svn:mime-type &#39;text/plain&#39; abc.txt
</pre>
<p>然后再生成项目的diff文件，再提交到Review Board上，问题搞定！</p>
<h3>
	<span style="background-color:#ee82ee;">（B）</span>Git</h3>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;提交修改到远程的git repository的基本流程（前提是你当前目录已经处于git版本控制之下）<br />
添加当前目录下所有文件到&ldquo;即将提交的列表&rdquo;（当然也可以指定某些指定的文件，将 . 换成指定的文件即可）：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git add .
</pre>
<p>将修改提交到本地：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git commit -m &quot;对本次修改的注释写在这里&quot;
</pre>
<p>提交到远程的git repository：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git push
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">删除远程git repository中的文件<br />
假设要删除当前目录下的abc.txt文件（指远程git repository中的），则：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git rm abc.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后提交到本地：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git commit -m &quot;delete a file&quot;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后提交到远程的repository：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git push
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">TortoiseGit提交代码前弹出错误提示&ldquo;</span>username and email must be set...<span style="font-family: 文泉驿等宽微米黑;">&rdquo;的解决办法<br />
Git Commit（提交）的时候，如果Tortoise弹出一个错误对话框，提示你必须先设置用户名和Email，那么你理所当然地按它的指引点击&ldquo;Yes&rdquo;去设置，奇葩的是，在我的Win7上，TortoiseGit settings&rarr;Git页面中的&ldquo;Name&rdquo;和&ldquo;Email&rdquo;竟然无法输入文字（仿佛输入框是只读的一样）！就算我找到了<a href="http://choorucode.com/2012/12/04/how-to-set-user-name-and-email-in-tortoisegit/" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这篇</span></a>教程，也无济于事。<br />
后来我又找到了<a href="http://choorucode.com/2012/12/04/how-to-set-user-name-and-email-in-git/" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这篇</span></a>教程，尝试用命令行去设置，果然OK了：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
d:\git\bin&gt;git.exe config --global user.name &quot;你的用户名&quot;
d:\git\bin&gt;git.exe config --global user.email &quot;你的Email&quot;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">执行这两条命令之后，再回到TortoiseGit的settings&rarr;Git页面，就看到Name和Email已经设置好了。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">解决每次 git pull 的时候都提示输入密码的烦人问题<br />
执行以下命令永久保存密码：</span></p>
<blockquote>
<p>
		git config --global credential.helper store</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">如果不想永久保存密码，可以在指定的时间内保存密码：</span></p>
<blockquote>
<p>
		git config --global credential.helper &quot;cache --timeout=360000&quot;</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">其中，timeout值表示缓存密码多少时间（单位是毫秒还是秒，我不记得了），把它设置为一个非常大的值即可，然后你再git pull的时候，按提示输入密码之后，下一次就不会再提示输入密码了（在timeout时间之内）。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">Windows下的TortoiseGit每次push的时候都提示要输入密码的问题<br />
可以通过修改TortoiseGit的配置来解决：<br />
在设置界面中，&ldquo;Git&rdquo;设置子项中，点击&ldquo;编辑本地.git/config&rdquo;，会打开一个文本文件，在最后加上如下内容并保存：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
[credential]
	helper = store
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后再push一次并输入密码，TortoiseGit就可以记住你的密码啦。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">提交代码到远程的branch</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git push -u origin local_branch_name:remove_branch_name
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">会把本地的 local_branch_name 这个分支提交到远程的 remote_branch_name 这个分支上，如果远程没有这个分支，就会被创建。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">删除远程的branch</span><br />
<span style="font-family: 文泉驿等宽微米黑;">前面用 git push 命令把本地的分支推送到远程的分支上，命令是很形象的，但是让人非常费解的就是，要删除远程的branch，同样可以用这个push命令：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git push -u origin :remote_branch_name
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">表示删除远程的 remote_branch_name 这个分支。这个让人费解的命令，可以参考<a href="http://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">Git手册</span></a>中的说明来理解。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">修改已提交的信息<br />
修改最近一次提交的信息很简单：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git commit --amend
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">在弹出的编辑界面中修改并保存，再用 git log 看一下，提交的信息是不是已经变了？<br />
但如果要编辑的信息，不是最近一次提交呢？这就需要用到 git rebase 命令了。步骤如下：<br />
用 git log 命令查看到你要修改的那一次提交的版本，然后找到比它更旧的再前一个版本的版本号，</span><span style="font-family: 文泉驿等宽微米黑;">例如&nbsp;</span>f0d1fad，然后：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git rebase -i f0d1fad
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">在弹出的编辑界面中，会看到类似于下面的信息：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
pick a3d4def 修改了一处实现
pick d0ea224 添加了配置文件
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">假设我们要修改的提交信息，是第二行那一次提交，则把它前面的&ldquo;pick&rdquo;改为&ldquo;<span style="color:#0000ff;">edit</span>&rdquo;或&ldquo;<span style="color:#0000ff;">e</span>&rdquo;（就是<span style="color:#0000ff;">edit</span>的缩写），然后保存。<br />
此时，再用 git log 查看一下，最近的一次提交竟然变成了你刚修改的那次提交？没错，然后我们就可以像前面的方法一样，用 git commit --amend 来修改最近一次的提交信息了。<br />
修改完信息之后，还要把 git log 的信息顺序改回来，通过如下命令完成最后一个操作：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git rebase --continue
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">配置命令别名<br />
例如，git status这个超级常用的命令实在太长了，git st 就很好，可以像下面这样配置，使得执行 git st 的时候，等同于 git status：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git config --global alias.st status
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">查看文件差异<br />
修改了一个文件（该文件已经加入版本控制中了），还没有把它 git add 到暂存区，则用以下命令就可以看到修改了什么：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git diff
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">如果已经把该文件 git add 到了暂存区，再使用 git diff 命令，将没有任何输出。此时，应使用以下两个命令中的任何一个，可以查看到修改的内容（其实显示的就是暂存区里和上一次提前之间的差异）：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git diff --cached
git diff --staged
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">将一个文件移除出版本控制，但是并不将它从本地磁盘上删除<br />
<span style="color:#0000ff;">git rm your_file</span> 会将文件 your_file 从本地以及版本控制系统中都删除掉，但是如果我只想把此文件移除出版本控制系统，但并不想把它从本地磁盘上删除，则可以这样做：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git rm --cached your_file
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;用meld及git-diffall来比较两个版本之间的文件差异<br />
<span style="font-family: 文泉驿等宽微米黑;"><a href="http://meldmerge.org/" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">Meld</span></a>是一款超级强大的图形化diff比较工具，比你用diff命令查看两个文件的差异要直观得多，那么，如何让git与Meld整合到一起呢？需要用到一个叫git-diffall的第三方脚本，下面会说到。</span></p>
<div>
	安装meld：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sudo apt-get install meld
</pre>
</div>
<div>
	下载git-diffall：<a href="https://github.com/thenigan/git-diffall" rel="noopener noreferrer" target="_blank">https://github.com/thenigan/git-diffall</a></div>
<div>
	解压，把其中的脚本拷贝到 /usr/bin 目录下：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sudo cp git-diffall /usr/bin
</pre>
</div>
<div>
	然后配置git的difftool：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git config --global diff.tool meld
git config --global alias.diffall git-diffall</pre>
</div>
<div>
	现在回到一个项目的目录下，比较一个文件的当前工作版本与master中的版本的差异：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git difftool ..master src/test/MyClass.java
</pre>
</div>
<div>
	最后一个参数也可以是一个目录，这样就会比较一个目录的差异（太赏心悦目了）。</div>
<div>
	每次执行此命令的时候，都会让用户确认是否加载meld，直接回车即可。</div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">撤消修改的几种情况<br />
在SVN中，修改了一个文件之后，还没有提交的话，我们可以用 <span style="color:#0000ff;">svn revert your_file</span> 命令，来撤消我们对文件 your_file 所做的修改，使之恢复到没修改之前的状态。但是在Git中，等价的命令是什么呢？在很少使用git之前，我也有这个问题，于是我到Google上一搜&ldquo;</span>svn revert git<span style="font-family: 文泉驿等宽微米黑;">&rdquo;，搜出来很多人都在问这个问题，其实要理解好这个问题，需要先理解好git有工作区、暂存区（stage）的概念，而SVN没有暂存区的概念，所以，当你刚从SVN转到Git时，会很困惑为什么Git撤消修改那么麻烦。其实这才是Git强大之处啊。</span><br />
<span style="font-size: 16px; line-height: 30px;"><span style="background-color:#ffa500;">①</span></span><span style="font-family: 文泉驿等宽微米黑;">修改了一个文件，还没有将它添加到暂存区，此时，要撤消所做的修改：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout -- your_file&nbsp;</pre>
<p><span style="font-size: 16px; line-height: 30px;"><span style="background-color:#ffa500;">②</span></span><span style="font-family: 文泉驿等宽微米黑;">修改了一个文件，并且已经通过 <span style="color:#0000ff;">git add your_file</span> 把它添加到了暂存区，则想把这个文件复原，先要把它从暂存区&ldquo;弄出来&rdquo;：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git reset HEAD your_file
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">现在，你再用 <span style="color:#0000ff;">git status</span> 命令查看的话，会发现它已经被从暂存区&ldquo;拿出来&rdquo;了，变成了没有 git add 的状态，但是，它仍然是我们修改过内容的，要继续撤消我们修改的内容的话，继续像上面一样，用 <span style="color:#0000ff;">git checkout -- your_file</span> 命令，即可将你所做的修改完全复原了。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">查看每个版本修改的文件<br />
<span style="color:#0000ff;">git log</span> 可以查看提交日志，再加一个参数就可以看到每个版本修改的文件都有哪些了：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git log --name-status
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">一次git add所有modified的文件到暂存区</span><br />
如果你修改了100个文件，那么一个个地 git add 它们到暂存区无异于自虐，此时你需要的是批量add：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git add -i
</pre>
<p>然后就进入了交互式界面：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
  1: status	  2: update	  3: revert	  4: add untracked
  5: patch	  6: diff	  7: quit	  8: help
</pre>
<p>选择2，回车，会列出所有将要被 add 的文件，输入星号（*）并回车（表示选择所有文件），然后又会回到上面的菜单界面，选择7回车退出，这时再用 git status 看一下，是不是所有修改过的文件都添加到了暂存区里了？</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">利用Bitbucket在两地同步私有代码</span><br />
<span style="color:#b22222;">(当前，2019.11，GitHub已经可以创建private的repo，写这一条的时候GitHub还不行)</span><br />
与Github不同，Bitbucket可以创建private的代码仓库，这对个人而言非常有用。例如，你在台式机A上写的代码，当你出差到其他城市后，还想在你带的笔记本（记为B）上继续写，那么这时候怎么办？有一个傻傻的办法就是连上电脑A（如果可以的话），然后把整个项目打一个tar包，传到B上，但如果你的整个项目目录非常大，压缩之后仍有几百M，那么你可能需要耗费大量时间来传输。更为可取的一个办法就是利用类似于Bitbucket这样的服务，来同步代码，使得只需要更新少量数据就OK了。<br />
<span style="font-family: 文泉驿等宽微米黑;">下面是步骤：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git remote add origin https://codelast@bitbucket.org/codelast/my-repo.git
</pre>
<div>
	在A处，将代码push到Bitbucket上：</div>
<div>
<pre class="brush:as3;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git push -u origin my-branch:my-branch
</pre>
</div>
<div>
	这表示将my-branch这个branch的代码push到Bitbucket上的同名branch下（如果Bitbucket上没有这个branch，将被创建）。</div>
<div>
	在B处：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout master
git fetch
</pre>
</div>
<div>
	这会将Bitbucket上的最新修改下载到本地&mdash;&mdash;但是并没有merge到本地的任何一个branch上。</div>
<div>
	在B处，创建同名的branch并切换过去：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout -b my-branch
git merge origin/my-branch
</pre>
</div>
<div>
	这会将刚才从远程仓库（origin/my-branch）下载回来的最新的代码，merge到当前的branch上，因此，本地的my-branch仓库马上就会变成最新的代码了。</div>
<div>
	看到的提示信息形如：</div>
<div>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
Updating e8b4538..6bc7bcd
Fast-forward
 src/java/com/codelast/Demo.java        |  11 +++++++
 ......
</pre>
</div>
<div>
	至此，B的my-branch这个branch上的代码就与A的代码同步了。</div>
<div>
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></div>
<div>
	上面从git fetch开始的步骤，也可以换一种方法实现：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout -b my-branch
git pull
</pre>
</div>
<div>
	这里的git pull在效果上相当于git fetch ＋ git merge的组合。但是第一次运行这个命令的时候，会看到类似于下面的提示：</div>
<div>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

    git pull &lt;remote&gt; &lt;branch&gt;

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/&lt;branch&gt; my-branch
</pre>
</div>
<div>
	这说明本地的branch没有和remote的branch关联上，所以git pull不知道&ldquo;从哪里pull&rdquo;。根据最后一次的提示，需要执行以下命令：</div>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git branch --set-upstream-to=origin/my-branch my-branch
</pre>
</div>
<div>
	会得到提示：</div>
<div>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
Branch my-branch set up to track remote branch my-branch from origin.
</pre>
</div>
<div>
	则现在再执行git pull命令，就可以把remote的branch下载下来并且merge到本地的branch中了。</div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">查看当前版本比上一个版本修改了什么内容</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git diff HEAD^ HEAD
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">其中，HEAD代表当前版本，后面带一个 ^ 号表示其之前一个版本。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">Git子命令的自动完成／自动补全<br />
在Ubuntu下用 apt-get install git 安装好Git后，Git的子命令就已经能自动完成了，例如你输入 git ad，然后按 TAB，会发现它被补全成了 git add，但是在Arch Linux ARM下，这个功能却没有，我们可以参考<a href="http://code-worrier.com/blog/autocomplete-git/" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个</span></a>链接中的教程自己做。</span><br />
基本思想就是获取github上的一个 git-completion.bash 脚本，然后把它添加到开机自动执行的脚本中：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.sh
chmod +x ~/.git-completion.sh
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后编辑 /etc/profile 文件，在最后添加如下代码：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
if [ -f ~/.git-completion.sh ]; then
    . ~/.git-completion.sh
fi
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">重启系统，搞定，Git已经可以自动完成子命令了。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">检出指定版本的某个文件</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout &lt;commit_id&gt; &lt;your_file_path&gt;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">例如：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout 3493c0ec MyClass.java
</pre>
<p>那么检出的文件放到哪了呢？当然是放到这个文件原来的路径，也就是覆盖了本地的相同文件。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">删除远程已经不存在、本地还存在的远程（remote branch）分支记录<br />
这是什么意思？拿GitLab来举个例子：</span></p>
<ul>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">我在GitLab上提交了一个Merge Request，并且在提交的时候设置了：如果上游接受这个reqeust，则自动删除对应的远程branch</span></li>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">上游接受了这个request，于是我的那个远程branch被GitLab自动删除了</span></li>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">我于是删除了本地的对应branch</span></li>
</ul>
<p><span style="font-family: 文泉驿等宽微米黑;">现在看似和这一次commit相关的清理工作已经做完了，但实际上还没有。用&nbsp;</span><span style="color:#0000ff;">git branch -a</span> 命令，会看到类似于下面的信息：</p>
<blockquote>
<div>
		* master</div>
<div>
		&nbsp; remotes/origin/HEAD -&gt; origin/master</div>
<div>
		<span style="color:#b22222;">&nbsp; remotes/origin/gitlab-test</span></div>
</blockquote>
<div>
	其中，<span style="color:#b22222;">remotes/origin/gitlab-test</span> 就是远程已经删除掉的那个分支的信息，如果你想把这个也清掉，可以用下面的命令：</div>
<blockquote>
<div>
		git remote prune origin</div>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">会打印出一条信息：</span></p>
<blockquote>
<p>
		* [pruned] origin/gitlab-test</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">然后再试试 <span style="color:#0000ff;">git branch -a</span>，就会发现那个branch的信息已经删除掉了。</span></p>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">fork出来的项目和主干保持同步<br />
假设你在GitLab上fork了一个项目，那么接下来你fork出来的项目就和原项目（称之为主干）无关了，主干更新了代码，你fork出来的项目并不会自动更新代码。<br />
而我们每次开发一个新功能之前，为了防止大量代码冲突，都应该在最新版的代码基础上来开发，因此，让我们fork出来的代码与主干保持一致是有必要的。方法如下：</span></p>
<ul>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">把主干的远程仓库地址添加到你当前项目中</span></li>
</ul>
<blockquote>
<p>
		git remote add upstream git@gitlab.codelast.com:test-repo/test-project.git</p>
</blockquote>
<ul>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">把主干的最新代码检出到本地</span></li>
</ul>
<blockquote>
<p>
		git fetch upstream</p>
</blockquote>
<ul>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">合并主干的最新代码到本地的master分支上（本地的master分支，其对应的远程分支，就是我们前面fork出来的那个项目的master分支）</span></li>
</ul>
<blockquote>
<div>
		git checkout master</div>
<div>
		git merge upstream/master</div>
</blockquote>
<ul>
<li>
		如果merge的时候有冲突(conflict)，那么你需要解决完所有冲突，然后 git add -u 把解决完冲突的文件添加到待commit的区域，然后 git commit 把修改提交到本地</li>
<li>
		<span style="font-family: 文泉驿等宽微米黑;">现在，你本地的master分支已经是比主干更新（或者至少和它一样）的代码了，可以推送到远程你fork出来的那个项目了</span></li>
</ul>
<blockquote>
<p>
		<span style="font-family: 文泉驿等宽微米黑;">git push -u origin master</span></p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">至此，你fork出来的那个项目，其master分支已经和主干完全同步啦。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">生成指定 commit 的 patch</span></p>
<blockquote>
<p>
		git format-patch -1 {commit-id}</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">即会在当前目录下生成一个 .patch 文件。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">设置 commit 信息里的 Email</span></p>
<blockquote>
<p>
		git config user.email abc@gmail.com</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">此命令不修改已经提交的commit里的Email，仅对未来的commit生效。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;使用 git rebase -i 合并本地的多次commit<br />
<span style="font-family: 文泉驿等宽微米黑;">当你在一个branch上开发时，在本地可能会多次提交代码，最后才会push到远程代码服务器上。在本地的多次提交，为了让它们看起来&ldquo;整齐&rdquo;，通常会把它们合并成一个commit再push到远程。合并的过程可以使用 git rebase -i 命令完成。下面就举例说明。<br />
假设你有如下几个commit，从上到下，依次为 时间最新</span>&rarr;<span style="font-family: 文泉驿等宽微米黑;">时间最旧：</span></p>
<blockquote>
<p>
		commit ddddd<br />
		commit ccccc<br />
		commit bbbbb<br />
		commit aaaaa (origin/master, origin/HEAD, master)</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">这里面的 commit id 全部都是虚构的（aaaaa～ddddd），只是为了拿来演示。其中，aaaaa这个commit已经push到远程服务器了，它同时也是这四次commit里面时间最老的那个commit。其他几次commit（bbbbb，ccccc，ddddd）全都是在本地的commit，还没有push到远程服务器。为了把这3个本地的commit合并成一个，我们可以执行：</span></p>
<blockquote>
<p>
		<span style="font-family: 文泉驿等宽微米黑;">git rebase -i aaaaa</span></p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">即：找到所有要合并的commit中，时间最旧的那个commit（即bbbbb）的前一次commit（即aaaaa），再执行 <span style="color:#0000ff;">git rebase -i (找到的commit_id)</span> 命令。<br />
之后Git会自动打开你预先配置好的文本编辑器，进入文本编辑界面：</span></p>
<blockquote>
<div>
		pick ddddd temp</div>
<div>
		pick ccccc temp</div>
<div>
		pick bbbbb temp</div>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">这里面会列出所有待合并的commit的commit_id以及它们的commit message（在这里全都是&quot;temp&quot;，commit的时候随便填的）。我们需要做的是：把时间最新的那个commit（即ddddd）前面的&quot;pick&quot;保持不变，把其他所有commit（即ccccc、bbbbb）前面的&quot;pick&quot;改为&quot;s&quot;，也就是像下面这样：</span></p>
<blockquote>
<div>
		pick ddddd temp</div>
<div>
		s ccccc temp</div>
<div>
		s bbbbb temp</div>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">保存该文件（我配置的Git文本编辑器是VIM，所以在这里用 ESC&nbsp;</span>&rarr; :x<span style="font-family: 文泉驿等宽微米黑;">），马上会进入另一个文本编辑界面：</span></p>
<blockquote>
<div>
		# This is a combination of 3 commits.</div>
<div>
		# This is the 1st commit message:</div>
<div>
		&nbsp;</div>
<div>
		temp</div>
<div>
		&nbsp;</div>
<div>
		# This is the commit message #2:</div>
<div>
		&nbsp;</div>
<div>
		temp</div>
<div>
		&nbsp;</div>
<div>
		# This is the commit message #3:</div>
<div>
		&nbsp;</div>
<div>
		temp<br />
		<span style="color:#a52a2a;">（后面内容很长，全都是#号开头的注释，这里省略）</span></div>
</blockquote>
<div>
	把从第1行开始，到&quot;temp&quot;（含）的所有行全部删除掉，再添加一行新的非注释行，里面写上commit message（即：把3个commit合并成一个以后，这一个commit的message），再保存文件（我用的是VIM，所以这里的操作是 ESC&nbsp;&rarr; :x）。</div>
<p><span style="font-family: 文泉驿等宽微米黑;">此时，合并完成！之后就可以把合并成的那一个commit push到远程服务器上了。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">git status不显示未追踪的文件（</span>Untracked files）</p>
<blockquote>
<p>
		<span style="font-family: 文泉驿等宽微米黑;">git status -uno</span></p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">这里的</span>&quot;-uno&quot;等价于&quot;--untracked-files=no&quot;</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;<span style="font-family: 文泉驿等宽微米黑;">To be added...</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a></p>
<h3>
	<span style="background-color: rgb(238, 130, 238);">（C）</span>git-svn</h3>
<p><a href="http://git-scm.com/book/zh/v1/Git-%E4%B8%8E%E5%85%B6%E4%BB%96%E7%B3%BB%E7%BB%9F-Git-%E4%B8%8E-Subversion" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">git-svn</span></a>是Subversion 双向桥接工具，用于：Git作为本地的版本控制工具，SVN作为远程的仓库。<br />
有人可能会有疑问：为什么会出现git-svn这个东西？这是由于Git实在是比SVN要好用太多太多了，所以有时候，尽管我们不得不使用远程的SVN仓库来和大家同步工作（例如，你公司的代码库就是SVN的），但是在本地，我们仍然可以使用Git来做版本控制，这就是git-svn工具的作用。</p>
<p><span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;初始化<br />
用SVN作为版本控制工具时，我们检出一个项目，用的是 svn co http://xxx 这样的方法，但是用git-svn时，我们应该这样做：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git svn clone http://xxx
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;只查看SVN log<br />
git log 命令会列出你的所有git commit日志，但是如果只想看SVN的commit日志，就需要用：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git svn log
</pre>
<p>但是这样输出的信息可能太杂乱了，可以用如下命令，让一次提交只显示一行信息：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git svn log --oneline
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">➤</span>&nbsp;本地已经commit了几个版本到git版本库中，但是只想提交一个较旧的版本到远端SVN库中<br />
假设远端repo使用的是SVN，本地使用git-svn来管理，在开发过程中，本地的<span style="color:#ff0000;">my-branch</span>中已经提交了A&rarr;B&rarr;C三个版本，版本A是时间最早的一次提交，版本C是时间最新的一次提交，现在想把版本A上的修改提交到远端SVN repo中，而版本B和版本C暂时不想提交到SVN repo中。但是我们知道，<span style="color:#0000ff;">git-svn dcommit</span>命令会将当前版本的修改全部提交到SVN repo中去，因此，不能在当前版本C中进行此操作，一个可用的方法如下：<br />
切换到工作的branch：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout my-branch
</pre>
<p>在当前branch基础上，再创建一个新的branch，并切换过去：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout -b my-branch-to-commit
</pre>
<p>这时，my-branch-to-commit这个分支上也有版本A、B、C了。假设版本A的commit id为d939ac4，则将此分支的HEAD指向版本A：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git reset --hard d939ac4
</pre>
<p>这时，my-branch-to-commit这个分支上，最新的版本就是版本A了，于是，我们可以把它提交到远端的SVN repo中去了：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git svn dcommit
</pre>
<p>于是我们完成了&ldquo;提交版本A到SVN&rdquo;的任务，但是，我们还要在版本B、版本C的基础上继续开发，所以，下面，我们要把这两个版本&ldquo;找回来&rdquo;。<br />
先切换回master分支：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout master
</pre>
<p>更新到最新的SVN版本：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git svn rebase
</pre>
<p>这时，master分支上已经是版本A的代码了。<br />
再创建一个新的工作分支my-branch-to-continue：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git checkout -b my-branch-to-continue
</pre>
<p>这时，git cherry-pick命令就大显神威了，它可以挑选指定版本的修改，并应用到当前分支上，所以，我们需要做的是，把my-branch这个分支中的版本B、版本C的修改cherry-pick过来，应用到my-branch-to-continue分支上。<br />
假设版本B的commit id为c37d531，版本C的commit id为822dbbd，则：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git cherry-pick c37d531
git cherry-pick 822dbbd
</pre>
<p>这会生成两个新的commit。<br />
现在，在my-branch-to-continue这个分支上，我们的状态就是：版本A已经是提交到了SVN，版本B、版本C已经提交到了本地git repo中。<br />
现在可以把my-branch这个分支删掉了，因为它已经没用了：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
git branch -D my-branch
</pre>
<p>大功告成。</p>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushShell.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushAS3.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-linux%e5%91%bd%e4%bb%a4%e8%a1%8c%e4%b8%8b%e4%bd%bf%e7%94%a8svn%e5%92%8cgit%e7%9a%84%e4%b8%80%e4%ba%9b%e7%94%a8%e6%b3%95%e6%80%bb%e7%bb%93/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] Emacs on Windows初步实践</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs-on-windows%e5%88%9d%e6%ad%a5%e5%ae%9e%e8%b7%b5/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs-on-windows%e5%88%9d%e6%ad%a5%e5%ae%9e%e8%b7%b5/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Thu, 02 Aug 2012 07:23:14 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[emacs]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=4802</guid>

					<description><![CDATA[<p>
Emacs是个好东西，最近我在Windows下也用起了Emacs，是因为有很多特定类型文件的语法高亮显示很好用，例如<a href="http://www.codelast.com/?p=4550" rel="noopener noreferrer" target="_blank">Apache Pig文件</a>，Thrift文件在Emacs中都有了现成的语法高亮支持，等等，如果你用Notepad++等文本编辑器就必须自己编写语法高亮规则了（会累死你）。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
下面记录一下Emacs Windows版从安装到基础配置的过程。<br />
<span id="more-4802"></span><br />
<span style="background-color: rgb(0, 255, 0); ">（1）</span>下载，安装<br />
下载：在<a href="http://ftp.gnu.org/gnu/emacs/windows/" rel="noopener noreferrer" target="_blank"><span style="color:#0000ff;">这个</span></a>链接中，找最新版的下载，例如我下载的是emacs-24.1-bin-i386.zip。<br />
安装：其实把压缩包解压出来就可以了，谁都会。解压出来之后，运行一次bin目录下的addpm.exe &#8212;&#8212;它的作用是添加启动菜单和修改注册表。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（2）</span>配置主目录<br />
这是Windows版的Emacs比Linux版的Emacs要麻烦的地方之一。<br />
我们需要手工修改注册表。定位到注册表的&#160;<span style="color:#0000ff;">HKEY_LOCAL_MACHINE/SOFTWARE/GNU/Emacs</span> 处，如果没有则手工一级级添加。新建一个&#8220;字符串值&#8221;，名为&#8220;<span style="color:#b22222;">HOME</span>&#8221;（不含引号），值为你的Emacs安装目录，例如&#8220;C:/emacs&#8221;。这样就设置好了Emacs的主目录。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（3）</span>运行Emacs<br />
运行bin目录下的 runemacs.exe 可启动Emacs。<br />
启动后，点击&#8220;Options&#8221;菜单，修改一个简单的设置，然后点击&#8220;<span style="color:#0000ff;">Save Options</span>&#8221;，Emacs就会在安装目录下生成&#160;.emacs.d 目录以及&#160;.emacs 文件。如果没有在安装目录下生成（例如，我在64位Win7下使用32位的Emacs就遇到了这样的问题），那么请检查是否生成在了这个目录下：<br />
<span style="color:#0000ff;">C:\Users\</span><span style="color:#b22222;">用户名</span><span style="color:#0000ff;">\AppData\Roaming\</span><br />
如果有，那么就把这个目录当作配置文件目录就行了。<br />
我们知道&#160;.emacs 文件是最重要的Emacs配置文件之一，我们可以在里面定义Emacs的快捷键等。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（4）</span>配置Pig语法高亮以及Thfirt文件语法高亮支持<br />
如果你使用<a href="http://www.codelast.com/?p=4550" rel="noopener noreferrer" target="_blank">Apache Pig</a>或<a href="http://thrift.apache.org/" rel="noopener noreferrer" target="_blank">Apache Thrift</a>，那么你一定需要Emacs的语法高亮支持。为了给大家提供方便，我直接在这里提供语法高亮定义文件的压缩包，点击<a href="http://www.codelast.com/wp-content/uploads/2012/08/pig_and_thrift_emacs_highlight.zip" rel="noopener noreferrer" target="_blank">此处</a>下载。如果你要查看原版出处，请分别点击<a href="https://github.com/cloudera/piglatin-mode" rel="noopener noreferrer" target="_blank"><span style="color:#b22222;">这个链接</span></a>（Pig）和<a href="https://gist.github.com/770490" rel="noopener noreferrer" target="_blank"><span style="color:#b22222;">这个链接</span></a>（Thrift）。<br />
将此压缩包解压到Emacs安装目录下，生成两个文件：.piglatin.el&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs-on-windows%e5%88%9d%e6%ad%a5%e5%ae%9e%e8%b7%b5/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
Emacs是个好东西，最近我在Windows下也用起了Emacs，是因为有很多特定类型文件的语法高亮显示很好用，例如<a href="http://www.codelast.com/?p=4550" rel="noopener noreferrer" target="_blank">Apache Pig文件</a>，Thrift文件在Emacs中都有了现成的语法高亮支持，等等，如果你用Notepad++等文本编辑器就必须自己编写语法高亮规则了（会累死你）。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
下面记录一下Emacs Windows版从安装到基础配置的过程。<br />
<span id="more-4802"></span><br />
<span style="background-color: rgb(0, 255, 0); ">（1）</span>下载，安装<br />
下载：在<a href="http://ftp.gnu.org/gnu/emacs/windows/" rel="noopener noreferrer" target="_blank"><span style="color:#0000ff;">这个</span></a>链接中，找最新版的下载，例如我下载的是emacs-24.1-bin-i386.zip。<br />
安装：其实把压缩包解压出来就可以了，谁都会。解压出来之后，运行一次bin目录下的addpm.exe &mdash;&mdash;它的作用是添加启动菜单和修改注册表。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（2）</span>配置主目录<br />
这是Windows版的Emacs比Linux版的Emacs要麻烦的地方之一。<br />
我们需要手工修改注册表。定位到注册表的&nbsp;<span style="color:#0000ff;">HKEY_LOCAL_MACHINE/SOFTWARE/GNU/Emacs</span> 处，如果没有则手工一级级添加。新建一个&ldquo;字符串值&rdquo;，名为&ldquo;<span style="color:#b22222;">HOME</span>&rdquo;（不含引号），值为你的Emacs安装目录，例如&ldquo;C:/emacs&rdquo;。这样就设置好了Emacs的主目录。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（3）</span>运行Emacs<br />
运行bin目录下的 runemacs.exe 可启动Emacs。<br />
启动后，点击&ldquo;Options&rdquo;菜单，修改一个简单的设置，然后点击&ldquo;<span style="color:#0000ff;">Save Options</span>&rdquo;，Emacs就会在安装目录下生成&nbsp;.emacs.d 目录以及&nbsp;.emacs 文件。如果没有在安装目录下生成（例如，我在64位Win7下使用32位的Emacs就遇到了这样的问题），那么请检查是否生成在了这个目录下：<br />
<span style="color:#0000ff;">C:\Users\</span><span style="color:#b22222;">用户名</span><span style="color:#0000ff;">\AppData\Roaming\</span><br />
如果有，那么就把这个目录当作配置文件目录就行了。<br />
我们知道&nbsp;.emacs 文件是最重要的Emacs配置文件之一，我们可以在里面定义Emacs的快捷键等。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（4）</span>配置Pig语法高亮以及Thfirt文件语法高亮支持<br />
如果你使用<a href="http://www.codelast.com/?p=4550" rel="noopener noreferrer" target="_blank">Apache Pig</a>或<a href="http://thrift.apache.org/" rel="noopener noreferrer" target="_blank">Apache Thrift</a>，那么你一定需要Emacs的语法高亮支持。为了给大家提供方便，我直接在这里提供语法高亮定义文件的压缩包，点击<a href="http://www.codelast.com/wp-content/uploads/2012/08/pig_and_thrift_emacs_highlight.zip" rel="noopener noreferrer" target="_blank">此处</a>下载。如果你要查看原版出处，请分别点击<a href="https://github.com/cloudera/piglatin-mode" rel="noopener noreferrer" target="_blank"><span style="color:#b22222;">这个链接</span></a>（Pig）和<a href="https://gist.github.com/770490" rel="noopener noreferrer" target="_blank"><span style="color:#b22222;">这个链接</span></a>（Thrift）。<br />
将此压缩包解压到Emacs安装目录下，生成两个文件：.piglatin.el 和&nbsp;.thrift-mode.el 。然后修改 .emacs 文件，添加如下两行：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(load-file &quot;~/.piglatin.el&quot;)
(load-file &quot;~/.thrift-mode.el&quot;)
</pre>
<p>重启Emacs，打开一个Pig文件或Thrift文件，会发现已经有语法高亮了：</p>
<div style="text-align: center; ">
	<a href="http://www.codelast.com" rel="noopener noreferrer" style="text-align: center; " target="_blank"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/08/thrift_highlight_emacs_on_windows.png" style="width: 400px; height: 296px; " /></a></div>
<p><span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">（5）</span>如何配置Emacs的背景色（theme）？<br />
初次打开Emacs，会发现背景色白花花的一片，这与我们在Linux下常用的黑色背景色相差太大了，一点也不geek，所以当然要改掉它。<br />
点击菜单&ldquo;<span style="color:#0000ff;">Options</span>&rdquo;&rarr;&ldquo;<span style="color:#0000ff;">Customize Emacs</span>&rdquo;&rarr;&ldquo;<span style="color:#0000ff;">Custom Themes</span>&rdquo;，会打开一个新的buffer，在里面你可以用键盘操作来设置风格：</p>
<div style="text-align: center; ">
	<a href="http://www.codelast.com" rel="noopener noreferrer" target="_blank"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/08/emacs_on_windows_custom_themes.jpg" style="width: 500px; height: 336px; " /></a></div>
<p>按键盘的方向键，将光标移动到要选择的选项上，按Enter键选中它，然后再把光标移动到&ldquo;Save Theme Settings&rdquo;按钮上，按Enter键保存此设置。<br />
最后再按 Ctrl+x，k，Enter（先按Ctrl+x，再按k键，再按回车键）来关闭这个设置theme的buffer即可。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（6）</span>复制、粘贴文本<br />
如果只通过键盘命令来操作，恐怕不是那么容易操作的事情：<br />
首先你要将文本复制到缓冲区，在Emacs中要先选中一段文本，才能开始复制。标记选中文本的起始点是通过按组合键<span style="color: rgb(0, 0, 255); ">Ctrl+Shift+非小键盘的2</span>（即<span style="color: rgb(0, 0, 255); ">Ctrl+@</span>）来实现的，然后，将光标移动到要复制文本的结束点，会发现选中的区域变色了，这时，再按组合键<span style="color: rgb(0, 0, 255); ">Meta+w</span>来完成复制操作。<br />
这里有一个概念，什么是Meta键？请参考<a href="http://en.wikipedia.org/wiki/Meta_key" rel="noopener noreferrer" target="_blank">这个</a>Wiki链接。简言之，现代键盘上已经没有Meta键了，你可以通过<span style="color: rgb(0, 0, 255); ">按下，再放开Ecs</span>键来模拟Meta键，所以上面所说的&nbsp;<span style="color: rgb(0, 0, 255); ">Meta+w</span>&nbsp;组合键的操作就是：<span style="color: rgb(0, 0, 255); ">按下Ecs键，放开Ecs键，按下w键</span>（极麻烦，是吧？）。<br />
复制好文本之后，将光标移动到要粘贴的地方，按下 <span style="color:#0000ff;">Ctrl+y</span> 组合键即可粘贴，这个操作倒是相当简单。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（7）</span>输入TAB<br />
在编辑器中输入TAB，在很多配置情况下，也不是直接按TAB键就可以的。你可以用这种方法输入TAB：先按<span style="color:#0000ff;">Ctrl+q</span>组合键，再按<span style="color:#0000ff;">TAB</span>键，就可以成功插入一个制表符了。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（8）</span>配置auto-complete（自动完成/自动补全）<br />
这里所说的自动完成，只是指使用<a href="http://cx4a.org/software/auto-complete/" rel="noopener noreferrer" target="_blank"><span style="background-color:#add8e6;">这个</span></a>Emacs插件实现的，如果你要让Emacs能自动补全标准库里的C++函数，那么在Windows下怎么做我还没试（Linux可参考<a href="http://www.codelast.com/?p=4945" rel="noopener noreferrer" target="_blank"><span style="background-color:#add8e6;">这篇文章</span></a>的第【6】项）。<br />
先下载链接里的自动完成插件压缩包，解压到某目录下，例如，我解压到了&nbsp;F:\auto-complete-1.3.1 目录下。<br />
在Widnows命令行中切换到Emacs的bin目录，执行如下命令（执行过程中会询问你安装路径）：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
emacs -batch -l F:\auto-complete-1.3.1\etc\install.el
Install to: C:\Users\XXX\AppData\Roaming\.emacs.d\auto-complete
</pre>
<p>其中，<span style="color:#0000ff;">C:\Users\XXX\AppData\Roaming\.emacs.d\</span> 是你用于存放Emacs配置文件的目录，在Windows 7下通常是这个目录（XXX是指你的用户名），<span style="color:#0000ff;">.emacs</span>配置文件位于&nbsp;<span style="color:#0000ff;">C:\Users\XXX\AppData\Roaming\</span> 目录下。auto-complete是我自己创建的子目录。<br />
最后一步，将如下配置添加到Emacs配置文件.emacs中：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(add-to-list &#39;load-path &quot;c:/Users/XXX/AppData/Roaming/.emacs.d/auto-complete&quot;)
(require &#39;auto-complete-config)
(add-to-list &#39;ac-dictionary-directories &quot;c:/Users/XXX/AppData/Roaming/.emacs.d/auto-complete/ac-dict&quot;)
(ac-config-default)
</pre>
<p>这里要注意，上面的路径里用的是<span style="color:#ff0000;">/</span>，而不是Windows下的<span style="color:#0000ff;">\</span>，如果你用<span style="color:#0000ff;">\</span>，会在重新打开Emacs之后提示错误。<br />
再打开Emacs试试，就有自动完成功能了。</p>
<p><span style="background-color: rgb(0, 255, 0);">（9）</span>让Emacs打开一个非XML后缀的文件时以XML语法高亮<br />
在Emacs中执行命令：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M-x nxml-mode
</pre>
<p>即可让Emacs以XML语法来高亮当前文件（无论当前文件是什么格式的）。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">（10）</span>批量注释一段代码<br />
先mark任意一段代码，然后用以下命令来注释mark的所有代码：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M-x comment-region
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">（11）</span>切换只读模式/正常模式</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
C-x C-q
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">（12）</span><span style="font-family: Ubuntu;">显示行号<br />
如果Emacs默认没有显示行号，可通过在.emacs配置文件中添加下面一句话来显示：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(setq column-number-mode t)
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">（13）</span><span style="font-family: Ubuntu;">配置PHP语法高亮<br />
Emacs默认是没有PHP语法高亮的，可通过加载扩展来实现。首先下载<a href="http://sourceforge.net/projects/php-mode/" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此Emacs扩展</span></a>，将压缩包中的&nbsp;</span><span style="color:#0000ff;">php-mode.el</span> 放到你的.emacs配置文件同一目录下，将其重命名为 <span style="color:#0000ff;">.php-mode.el</span>（当然你也可以不这样做）。然后在.emacs配置文件中，添加一句：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(load-file &quot;~/.php-mode.el&quot;)
</pre>
<p><span style="font-family: Ubuntu;">再重新用Emacs打开一个PHP文件，就会发现已经有语法高亮了。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">（14）</span><span style="font-family: Ubuntu;">给选中区域的每一行第一列添加同样的字符串<br />
假设有三行：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
1111
2222
3333
</pre>
<p><span style="font-family: Ubuntu;">要给每一行的行首添加上&ldquo;abc&rdquo;，除了一行行地去写之外，有没有更简单的办法（想像一下有100行要处理的情景）？<br />
方法是：先选中这些行（注意：选中的区域要使得光标移动到第2行的行首处，即最后一个要插入字符串的行是无须完全选中的），然后使用命令：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M-x string-rectangle
</pre>
<p><span style="font-family: Ubuntu;">回车，输入你要在行首插入的字符串&ldquo;abc&rdquo;，再回车，效果立现：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
abc1111
abc2222
abc3333
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">（15）</span><span style="font-family: Ubuntu;">如何配置Emacs，使得输入TAB时，用空格替代<br />
默认情况下，在Emacs中按一下TAB，就是输入TAB，如果我们想让它输入的是空格（并且可以指定按一下TAB输入几个空格），可以在.emacs中这样配置：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
(add-hook &#39;sh-mode-hook
  &#39;(lambda () (setq sh-basic-offset 2)))
</pre>
<p><span style="font-family: Ubuntu;">注意：上面的配置设置了按一下TAB输入2个空格，并且它<span style="color:#0000ff;">只对shell脚本生效</span>！这是因为不同类型的文件对应的配置是不同的，sh-mode-hook使得只对shell生效。</span></p>
<p>
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-emacs-on-windows%e5%88%9d%e6%ad%a5%e5%ae%9e%e8%b7%b5/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>[原创]摄像头娘来了</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e6%91%84%e5%83%8f%e5%a4%b4%e5%a8%98%e6%9d%a5%e4%ba%86/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e6%91%84%e5%83%8f%e5%a4%b4%e5%a8%98%e6%9d%a5%e4%ba%86/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Fri, 27 Jan 2012 18:07:31 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[综合]]></category>
		<category><![CDATA[motion detection]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[t.qq.com/cameragirl]]></category>
		<category><![CDATA[VC++发微博]]></category>
		<category><![CDATA[VC++运动检测]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[内存泄漏]]></category>
		<category><![CDATA[微博]]></category>
		<category><![CDATA[微博API]]></category>
		<category><![CDATA[摄像头娘]]></category>
		<category><![CDATA[物联网]]></category>
		<category><![CDATA[萌娘]]></category>
		<category><![CDATA[运动检测]]></category>
		<category><![CDATA[饮水机娘]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=4341</guid>

					<description><![CDATA[<p>
被标题吸引进来的各位，抱歉，这还是一篇技术文章<img decoding="async" alt="crying" height="24" src="http://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/ckeditor/plugins/smiley/images/14.gif" title="crying" width="24" /><br />
本文的主角是一个摄像头及其配套程序，我毫无创意地模仿网上的流行说法，称之为&#8220;<span style="color:#ff0000;">摄像头娘</span>&#8221;。她会自己发微博，<span style="color:#0000ff;">记得follow她哦</span>：<strong><a href="http://t.qq.com/cameragirl" target="_blank" rel="noopener noreferrer"><span style="color:#ff0000;"><span style="background-color:#99ff99;">t.qq.com/cameragirl</span></span></a></strong></p>
<p>前段时间浙大有个博士做了个&#8220;<span style="color:#800080;">饮水机娘</span>&#8221;，也就是他实验室里的饮水机没水或者水加热开了的时候，都会自动发一条微博。这个与&#8220;物联网&#8221;扯上了关系的东西，让我原来以为那位博士是改造了饮水机，加上了温度及水位传感器，配合单片机，将饮水机的状态采集到PC中去，再写一个PC上的软件将触发的事件发送到微博上，后来看了相关的介绍，才知道没那么复杂，其实他没有改造饮水机，而是用一个摄像头对准饮水机的状态指示灯，根据指示灯的情况，来判断饮水机的状态。</p>
<p>于是我也就萌生了做一个&#8220;摄像头娘&#8221;的念头。<br />
我构想中的&#8220;摄像头娘&#8221;是这样的：当有物体在她面前运动的时候，她能感受得到，并且会为这个过客拍一张照片，然后发到微博上。<br />
下面是<span style="color:#ff0000;">实际效果截图</span>：<br />
<span id="more-4341"></span></p>
<div style="text-align: center; ">
	<a href="http://t.qq.com/cameragirl" target="_blank" rel="noopener noreferrer"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/01/weibo_snapshot.png" style="width: 542px; height: 330px; " /></a></div>
<p>好吧，说得傻一点就是：一个有运动检测（motion detection）功能的程序，当检测到摄像头前有物体在运动时，就将画面拍一张照片，发到微博上。<br />
确实，没啥创意，但是还是有一定实用性的。例如，你可以在家里放置一个&#8220;她&#8221;为你看家，假设你运气不好，有不速之客闯进了你家里，那么，只要他进入了&#8220;摄像头娘&#8221;的视角，就会马上被检测到，然后被拍上来，发到微博上，后面的事，哼哼，你就有第一手证据了。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
我是用<span style="color:#0000ff;">VC++ 2005</span>开发的这个软件，运行于Win7上，其实它很简单，功能主要分为两部分：运动检测（motion detection）&#38; 发微博，下面分别陈述。<br />
<span style="background-color:#afeeee;">【1】</span>运动检测 / motion detection<br />
从头自己写？那得多笨才能这样做啊！而且我也不是干视频处理这一行的，一时半会写不出来这玩意。<br />
久闻<a href="http://opencv.willowgarage.com/wiki/" target="_blank" rel="noopener noreferrer"><span style="background-color:#faebd7;">OpenCV</span></a>的大名，我知道它可以帮我实现想要的功能，所以毫不犹豫地选择了它。<br />
我以前也从未使用过OpenCV，从下载它的开发包开始，到参照网上的demo写出一个可用的motion detection程序，只花了半天多时间，由此可见OpenCV的强大。<br />
关于OpenCV的介绍，这里只摘取其官网的一句话：</p>
<blockquote>
<p>
		OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.</p></blockquote>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e6%91%84%e5%83%8f%e5%a4%b4%e5%a8%98%e6%9d%a5%e4%ba%86/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<p>
被标题吸引进来的各位，抱歉，这还是一篇技术文章<img decoding="async" alt="crying" height="24" src="http://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/ckeditor/plugins/smiley/images/14.gif" title="crying" width="24" /><br />
本文的主角是一个摄像头及其配套程序，我毫无创意地模仿网上的流行说法，称之为&ldquo;<span style="color:#ff0000;">摄像头娘</span>&rdquo;。她会自己发微博，<span style="color:#0000ff;">记得follow她哦</span>：<strong><a href="http://t.qq.com/cameragirl" target="_blank" rel="noopener noreferrer"><span style="color:#ff0000;"><span style="background-color:#99ff99;">t.qq.com/cameragirl</span></span></a></strong></p>
<p>前段时间浙大有个博士做了个&ldquo;<span style="color:#800080;">饮水机娘</span>&rdquo;，也就是他实验室里的饮水机没水或者水加热开了的时候，都会自动发一条微博。这个与&ldquo;物联网&rdquo;扯上了关系的东西，让我原来以为那位博士是改造了饮水机，加上了温度及水位传感器，配合单片机，将饮水机的状态采集到PC中去，再写一个PC上的软件将触发的事件发送到微博上，后来看了相关的介绍，才知道没那么复杂，其实他没有改造饮水机，而是用一个摄像头对准饮水机的状态指示灯，根据指示灯的情况，来判断饮水机的状态。</p>
<p>于是我也就萌生了做一个&ldquo;摄像头娘&rdquo;的念头。<br />
我构想中的&ldquo;摄像头娘&rdquo;是这样的：当有物体在她面前运动的时候，她能感受得到，并且会为这个过客拍一张照片，然后发到微博上。<br />
下面是<span style="color:#ff0000;">实际效果截图</span>：<br />
<span id="more-4341"></span></p>
<div style="text-align: center; ">
	<a href="http://t.qq.com/cameragirl" target="_blank" rel="noopener noreferrer"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/01/weibo_snapshot.png" style="width: 542px; height: 330px; " /></a></div>
<p>好吧，说得傻一点就是：一个有运动检测（motion detection）功能的程序，当检测到摄像头前有物体在运动时，就将画面拍一张照片，发到微博上。<br />
确实，没啥创意，但是还是有一定实用性的。例如，你可以在家里放置一个&ldquo;她&rdquo;为你看家，假设你运气不好，有不速之客闯进了你家里，那么，只要他进入了&ldquo;摄像头娘&rdquo;的视角，就会马上被检测到，然后被拍上来，发到微博上，后面的事，哼哼，你就有第一手证据了。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
我是用<span style="color:#0000ff;">VC++ 2005</span>开发的这个软件，运行于Win7上，其实它很简单，功能主要分为两部分：运动检测（motion detection）&amp; 发微博，下面分别陈述。<br />
<span style="background-color:#afeeee;">【1】</span>运动检测 / motion detection<br />
从头自己写？那得多笨才能这样做啊！而且我也不是干视频处理这一行的，一时半会写不出来这玩意。<br />
久闻<a href="http://opencv.willowgarage.com/wiki/" target="_blank" rel="noopener noreferrer"><span style="background-color:#faebd7;">OpenCV</span></a>的大名，我知道它可以帮我实现想要的功能，所以毫不犹豫地选择了它。<br />
我以前也从未使用过OpenCV，从下载它的开发包开始，到参照网上的demo写出一个可用的motion detection程序，只花了半天多时间，由此可见OpenCV的强大。<br />
关于OpenCV的介绍，这里只摘取其官网的一句话：</p>
<blockquote>
<p>
		OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.</p>
</blockquote>
<p>没错，大名鼎鼎的机器视觉开发库。<br />
我使用的版本是2.3.1，下载回来之后会看到，它里面已经没有VC++2005的lib了，只有2008及2010的（2005确实太老了），但是试验之后会发现，在VC++ 2005中用2008的lib完全没问题。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
运动检测的基本原理是：<span style="color:#0000cd;">获取摄像头的视频流&rarr;在很短的时间内连续抓取两帧图像&rarr;计算两幅图像的差值&rarr;计算直方图&rarr;判断某些指标是否超过了阈值&rarr;触发动作</span>。我没有图像处理的编码经验，所以也只能解释到这个业余的水平了。<br />
这种功能的代码在网上比比皆是，不过，很多都有陷阱：内存泄漏。基本上来说，都是错误使用cvCloneImage函数造成的。此函数如果放在一个循环中，会导致一次吃掉几M内存（对分辨率不高的图像来说），就算使用了cvReleaseImage函数来释放内存，似乎也没用&mdash;&mdash;应该是对OpenCV的熟悉度不足造成的，用法不对。网上一搜索，就会发现无数人都遇到了这样的问题，那些一篇又一篇的转载文章几乎都是说用同一种方法：以cvCopy来代替cvCloneImage实现同样的功能。<br />
我就是用这种方法解决了内存泄漏问题的，不过，在换成cvCopy之后还有许多其他的问题，一言难尽，看我下面的代码就知道正确的做法了。总之一句话：通过不断Google是可以搞定的这些问题的。<br />
下面，就来看看motion detection的核心代码吧（使用的OpenCV库文件为&nbsp;<span style="color:#008080;">opencv_core231.lib</span>，<span style="color:#008080;">opencv_highgui231.lib</span>，<span style="color:#008080;">opencv_imgproc231.lib</span>）：</p>
<pre class="brush:cpp;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
/**
 * Author: Darran Zhang @ codelast.com
 * Date: 2012-01-27
 */

CvCapture* pCapture = cvCreateCameraCapture(0);  // 初始化摄像头 

if(NULL == pCapture) {
  MessageBox(_T(&quot;检测不到摄像头！&quot;), _T(&quot;错误&quot;), MB_ICONERROR);
  return;
}

string strCameraWindowName = &quot;摄像头&quot;;   // 窗口标题 
string strDiffWindowName = &quot;图像差值&quot;;   // 窗口标题 
cvNamedWindow(strCameraWindowName.c_str(), CV_WINDOW_AUTOSIZE); // 创建一个窗口，第二个参数使得用户不能手动改变窗口大小 
cvNamedWindow(strDiffWindowName.c_str(), CV_WINDOW_AUTOSIZE);

IplImage *pFrame = cvQueryFrame(pCapture);      // 随意获取一帧，这是为了通过这一帧取到其宽、高、像素位深、通道数，否则就无法正确创建其他帧图像 
IplImage *pFrameA = NULL;                       // 其中一帧 
IplImage *pFrameB = cvCreateImage(cvSize(pFrame-&gt;width, pFrame-&gt;height), pFrame-&gt;depth, pFrame-&gt;nChannels);     // 其中一帧 
IplImage *pFrameSub = cvCloneImage(pFrameB);    // A、B帧相减之后的帧 

int nDims = 256;     // 划分HIST的个数，越高越精确 
float hRangesArr[] = {0, 255};
float* hRanges = hRangesArr;

IplImage *pGrayscaleImage = NULL;  // 灰度图 
CvHistogram *pHist = cvCreateHist(1, &amp;nDims, CV_HIST_ARRAY, &amp;hRanges, 1);   // 创建直方图 
float fMaxValue = 0.0;

time_t ts = 0;   // 记录时间戳，用于防止在1秒内多次触发运动检测事件 

m_bActive = true;
while(m_bActive)
{
  pFrameA = cvQueryFrame(pCapture);  // 注意：cvQueryFrame返回的指针总是指向同一块内存 
  if(!pFrameA) {
    m_stcSD.strLatestErrMsg = _T(&quot;无法抓取视频帧&quot;);
    SendStatDataUpdateMsg();

    break;
  }

  cvAbsDiff(pFrameB, pFrameA, pFrameSub); // 计算两幅图像之差 
  cvCopy(pFrameA, pFrameB);               // 拷贝图像，第一个参数为源，第二个参数为目标 

  /* 显示摄像头图像 */
  cvMoveWindow(strCameraWindowName.c_str(), 150, 50);   // 设定窗口位置(x，y坐标) 
  cvShowImage(strCameraWindowName.c_str(), pFrameB);    // 显示图像，第2个参数指定了要显示的图像 

  /* 显示差值图像 */
  cvMoveWindow(strDiffWindowName.c_str(), 150, 400);
  cvShowImage(strDiffWindowName.c_str(), pFrameSub);

  /* 转换图像并计算直方图 */
  pGrayscaleImage = cvCreateImage(cvGetSize(pFrameSub), IPL_DEPTH_8U, 1);   // 创建灰度图 
  cvCvtColor(pFrameSub, pGrayscaleImage, CV_BGR2GRAY);                      // 将彩色图像转换为灰阶图像 
  cvCalcHist(&amp;pGrayscaleImage, pHist, 0, 0);                                // 计算直方图 

  /* 判断阈值是否超限，若超限则触发动作 */
  fMaxValue = 0.0;
  cvGetMinMaxHistValue(pHist, 0, &amp;fMaxValue, 0, 0);  // 找最大值，保存到fMaxValue中，第2个参数是最小值，不过我们不用 
  cvConvertScale(pHist-&gt;bins, pHist-&gt;bins, (fMaxValue ? (255.0 / fMaxValue) : 0.0), 0); // 缩放 bin 到区间 [0, 255] 

  double dRealtimeVal = cvGetReal1D(pHist-&gt;bins, 10);
  if (dRealtimeVal &gt; m_dDetectThreshold) {    // 判断是否大于预先设定的阈值 
    CTime ct = CTime::GetCurrentTime();
    time_t tsRef = ct.GetTime();
    if (tsRef - ts &gt;= 1) {
	  //TODO: 在此触发动作 
      ts = tsRef;
    }
  }

  cvReleaseImage(&amp;pGrayscaleImage);   // 释放内存 
  pGrayscaleImage = NULL;

  cvWaitKey(10);   // 等待若干毫秒 
}

cvReleaseCapture(&amp;pCapture);   // 停止捕获并释放摄像头资源 
cvReleaseHist(&amp;pHist);
cvReleaseImage(&amp;pFrameB);
cvReleaseImage(&amp;pFrameSub);

pCapture = NULL;
pHist = NULL;
pFrameB = NULL;
pFrameSub = NULL;
pFrame = NULL;
pFrameA = NULL;

cvDestroyWindow(strCameraWindowName.c_str());    // 销毁窗口 
cvDestroyWindow(strDiffWindowName.c_str());
</pre>
<p><span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
其中有几处要特别注意的代码：<br />
（1）<span style="color:#b22222;">IplImage *pFrameB = cvCreateImage(cvSize(pFrame-&gt;width, pFrame-&gt;height), pFrame-&gt;depth, pFrame-&gt;nChannels);</span><br />
创建B帧图像的时候，后面的参数都是通过pFrame来获取的，如果这几个参数你随意填写，那么就会导致程序编译可通过，运行时崩溃。所以我前面先抓取了一帧，再通过这一帧来获取B帧图像的参数，这样就完全符合了。<br />
（2）cvQueryFrame函数返回的指针总是指向同一块内存&mdash;&mdash;如果你不知道这一点，并且B帧图像是通过cvQueryFrame获取的，那么可能你调试了半天，却发现A帧、B帧的内容始终相同，二者相减得到的结果永远不变，motion detection就不起作用了。所以我把B帧图像用cvCreateImage来创建，A帧用cvQueryFrame来获取，这样就没有问题了。<br />
（3）由于两帧的检测时间较短，所以可能在多个瞬间触发多次动作，为此我根据时间戳做了一些简单的处理，来防止同一秒内触发多次动作。<br />
（4）其他的代码，各位看看就明白了，也无需过多的解释。</p>
<p><span style="background-color:#afeeee;">【2】</span>发微博<br />
我选择的是腾讯微博。<br />
不得不承认，腾讯微博对C++开发者的支持不足，下载回来的开发包里，仅仅同音的错别字就有一堆（可见开发API的同学用的是拼音输入法）。另外，还有各种各样的问题，例如，API Example是无法编译的&mdash;&mdash;原因是ApiType.cpp 和 ApiType.h没有被添加进工程中，导致找不到 CApiType 类定义。再看看它的代码中，编写风格非常随意，让人看了非常难受，总之就一句话，这API你就凑合着用吧！<br />
在动手写程序发微博之前，需要先在腾讯的网页上申请成为开发者，否则你的程序是无法用微博API来发微博的。申请的过程非常简单，当然你必须先有一个QQ号，登录后，在<a href="http://open.t.qq.com/develop.php" target="_blank" rel="noopener noreferrer"><span style="color:#ff0000;">这个页面</span></a>申请。申请之后，你需要在腾讯的网页上点击创建一个<strong><span style="color:#b22222;">客户端应用</span></strong>&mdash;&mdash;尽管这个时候，你还连程序都没有开始写，但是这是先决条件，不这样做的话，你就算写好了程序也用不了，所以我就把这个过程先全部做好了，再开始写程序的事。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
创建客户端应用的页面如下图所示：</p>
<div style="text-align: center; ">
	<a href="http://www.codelast.com" target="_blank" rel="noopener noreferrer"><img decoding="async" alt="create a client app" src="http://www.codelast.com/wp-content/uploads/2012/01/create_client_app.png" style="width: 581px; height: 277px; " /></a></div>
<p>点击之后只需要填写少许内容就可以创建一个客户端应用了。<br />
创建应用之后，你可以看到你所创建的应用的<span style="color:#ff0000;">App Key</span>（一串数字）和<span style="color:#ff0000;">App Secret</span>（数字和字母的混合），这两个字符串在你写程序发微博的时候会用到：</p>
<div style="text-align: center; ">
	<a href="http://www.codelast.com" target="_blank" rel="noopener noreferrer"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/01/app_info.png" style="width: 350px; height: 280px; " /></a></div>
<p><span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
在获取了以上所需的信息后，用API发微博的过程大致可以描述为：<span style="color:#0000cd;">通过App Key和App Secret跳转到腾讯的页面去获取oauth_verifier&rarr;用户人工输入oauth_verifier&rarr;通过oauth_verifier获取Access Key和Access Secret&rarr;授权通过，可以发微博了</span>。<br />
这个过程的demo，在腾讯微博的API Example中很详细地作了演示，不过，它的编码风格非常不规范，乱就一个字，会耽误开发者的时间。<br />
正因为腾讯微博API Example已经有了例子，所以我在这里就不把发微博相关的代码全部放上来了，只是提醒大家注意以下几点：<br />
（1）你的VC++工程中，只需要引入腾讯微博API中的一个库文件：QWBlogAPI.lib。<br />
（2）你的VC++工程需要以下头文件：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
JsonParser.h
UtilString.h
WeiboApi.h
WeiboParam.h
XmlParser.h
weibo.h
</pre>
<p>（3）你的程序运行时，需要以下dll：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
curllib.dll
libeay32.dll
openldap.dll
QWBlogAPI.dll
ssleay32.dll
</pre>
<p>这些文件在腾讯微博开发包中都能找到。<br />
（4）发普通微博，option是用<span style="color:#0000ff;">TXWB_T_ADD</span>；发带图片的微博，option是用<span style="color:#0000ff;">TXWB_T_ADD_PIC</span>。图片作为参数添加到CWeiboParam对象中时，是需要特殊处理的（详见API Example）。<br />
（5）微博发不出去时，一定要检查发送内容中的&ldquo;content&rdquo;的字符串是什么编码的！别以为字符串里有内容就是对的，我在这上面折腾了不少时间，就是没注意这个问题。可以用API Example中的<span style="color:#a52a2a;">Unicode2Mbcs</span>函数来转换一个CString到合适的字符串，很管用。<br />
（6）oauth_verifier的值，是在腾讯网页的地址中获取到的，而不是在网页正文中。你跳转到类似于如下的网址后（其实就是腾讯首页）：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
http://www.qq.com/?oauth_token=XXX&oauth_verifier=XXX&openid=&openkey=
</pre>
<p>就可以肉眼识别出其值了。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(175, 238, 238); ">【3】</span>软件UI<br />
UI很简单，但是调起来烦人。就截几幅图吧：</p>
<div style="text-align: center; ">
	<a href="http://www.codelast.com" target="_blank" rel="noopener noreferrer"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/01/cameragirl_ui_1.png" style="width: 438px; height: 324px; " /></a><br />
	&nbsp;</div>
<div style="text-align: center; ">
	<a href="http://www.codelast.com" target="_blank" rel="noopener noreferrer"><img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/01/cameragirl_ui_2.png" style="width: 405px; height: 313px; " /></a></div>
<p><span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
好了，先暂时到这吧，在折腾的道路上...</p>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushCpp.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e6%91%84%e5%83%8f%e5%a4%b4%e5%a8%98%e6%9d%a5%e4%ba%86/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>[原创]一些未归类的命令、操作方法或问题总结（4）</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%884/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%884/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Tue, 27 Dec 2011 07:42:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[综合]]></category>
		<category><![CDATA[shell while read line]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=4048</guid>

					<description><![CDATA[<p>下面是一些未归类的命令及操作方法，专门记在此文中，以便将来查询。由于文章较长，请用Ctrl+F查询关键字来定位到你需要的内容。</p>
<p><span style="background-color:#00ff00;">（1）</span>用shell对某个数据文件的第二列求和</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">cat&#160;a.txt&#160;&#124;&#160;awk&#160;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;{print&#160;$2}&#39;</span>&#160;&#124;&#160;awk&#160;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;BEGIN{sum=0}{sum+=$1}END{print&#160;sum}&#39;</span></code></pre>
</section>
<p>其中，a.txt即为数据文件。</p>
<p><span style="background-color:#00ff00;">（2）</span>echo输出制表符(tab，\t)<br />
要用echo语句输出制表符\t到文件中，需要加 -e 参数：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">A=<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#34;mine&#34;</span>;
B=<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#34;yours&#34;</span>;
<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&#160;-e&#160;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#34;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$A</span>\t<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$B</span>&#34;</span>&#160;&#62;&#160;1.txt
</code></pre>
</section>
<p>如果不加 -e 参数，则输出文件中会有一个 \t 字符串，而不是一个制表符。<br />
<span id="more-4048"></span><br />
<span style="background-color:#00ff00;">（3）</span>在Xshell中鼠标选中文字时自动换行的问题<br />
如果你用Xshell，并且遇到了&#8220;用鼠标选中一段文字时自动换行&#8221;的问题，那么你有可能是使用了网易的&#8220;有道词典&#8221;导致的。当你不小心按了某组合快捷键的时候，就有可能触发有道词典的某个功能，从而导致你在Xshell中选中文字时自动换行。这个现象非常令人讨厌，使用别的词典软件都没有这个问题。<br />
退出有道词典就可以解决这个问题了。<br />
我想知道的是：网易的有道词典开发人员中没有使用Xshell的？</p>
<p><span style="background-color:#00ff00;">（4）</span>一个在shell中向一批手机号发送报警短信的例子<br />
假设你要在shell中向一批手机号发送报警短信，可以如下例操作：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">PHONES=(136XXXXXXXX&#160;137XXXXXXXX&#160;138XXXXXXXX)

<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">for</span>&#160;PHONE_NUMBER&#160;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">in</span>&#160;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">${PHONES[*]}</span>
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">do</span>
&#160;&#160;&#160;&#160;<span class="hljs-comment" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(128, 128, 128); word-wrap: inherit !important; word-break: inherit !important;">#<span class="hljs-doctag" style="font-size: inherit; color: inherit; line-height: inherit; margin: 0px; padding: 0px; word-wrap: inherit !important; word-break: inherit !important;">TODO:</span>send&#160;SMS&#160;message&#160;to&#160;$PHONE_NUMBER</span>

&#160;&#160;&#160;&#160;sleep&#160;2
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">done</span></code></pre>
</section>
<p><span style="color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%884/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>下面是一些未归类的命令及操作方法，专门记在此文中，以便将来查询。由于文章较长，请用Ctrl+F查询关键字来定位到你需要的内容。</p>
<p><span style="background-color:#00ff00;">（1）</span>用shell对某个数据文件的第二列求和</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">cat&nbsp;a.txt&nbsp;|&nbsp;awk&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;{print&nbsp;$2}&#39;</span>&nbsp;|&nbsp;awk&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;BEGIN{sum=0}{sum+=$1}END{print&nbsp;sum}&#39;</span></code></pre>
</section>
<p>其中，a.txt即为数据文件。</p>
<p><span style="background-color:#00ff00;">（2）</span>echo输出制表符(tab，\t)<br />
要用echo语句输出制表符\t到文件中，需要加 -e 参数：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">A=<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;mine&quot;</span>;
B=<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;yours&quot;</span>;
<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;-e&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$A</span>\t<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$B</span>&quot;</span>&nbsp;&gt;&nbsp;1.txt
</code></pre>
</section>
<p>如果不加 -e 参数，则输出文件中会有一个 \t 字符串，而不是一个制表符。<br />
<span id="more-4048"></span><br />
<span style="background-color:#00ff00;">（3）</span>在Xshell中鼠标选中文字时自动换行的问题<br />
如果你用Xshell，并且遇到了&ldquo;用鼠标选中一段文字时自动换行&rdquo;的问题，那么你有可能是使用了网易的&ldquo;有道词典&rdquo;导致的。当你不小心按了某组合快捷键的时候，就有可能触发有道词典的某个功能，从而导致你在Xshell中选中文字时自动换行。这个现象非常令人讨厌，使用别的词典软件都没有这个问题。<br />
退出有道词典就可以解决这个问题了。<br />
我想知道的是：网易的有道词典开发人员中没有使用Xshell的？</p>
<p><span style="background-color:#00ff00;">（4）</span>一个在shell中向一批手机号发送报警短信的例子<br />
假设你要在shell中向一批手机号发送报警短信，可以如下例操作：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">PHONES=(136XXXXXXXX&nbsp;137XXXXXXXX&nbsp;138XXXXXXXX)

<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">for</span>&nbsp;PHONE_NUMBER&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">in</span>&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">${PHONES[*]}</span>
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">do</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-comment" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(128, 128, 128); word-wrap: inherit !important; word-break: inherit !important;">#<span class="hljs-doctag" style="font-size: inherit; color: inherit; line-height: inherit; margin: 0px; padding: 0px; word-wrap: inherit !important; word-break: inherit !important;">TODO:</span>send&nbsp;SMS&nbsp;message&nbsp;to&nbsp;$PHONE_NUMBER</span>

&nbsp;&nbsp;&nbsp;&nbsp;sleep&nbsp;2
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">done</span></code></pre>
</section>
<p><span style="color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
其中，&ldquo;TODO&rdquo;的那部分是调用你的短信发送接口（通常是一个URL），这里无法举例。</p>
<p><span style="background-color:#00ff00;">（5）</span>去掉WordPress的Auto SyntaxHighlighter插件右上角的问号<br />
使用Auto SyntaxHighlighter插件的人都知道，3.0.83版本的这个插件会在高亮语法块的右上角生成一个小问号，颜色特别难看，要去掉它的话，需要修改其源码。按网上的说法，修改&nbsp;<span style="color:#0000ff;">wp-content/plugins/auto-syntaxhighlighter/SyntaxHighlighter/src/styles/shCore.css</span> 文件，找到：</p>
<blockquote>
<div>
		.syntaxhighlighter .toolbar {</div>
<div>
		&nbsp; position: absolute !important;</div>
<div>
		&nbsp; right: 1px !important;</div>
<div>
		&nbsp; top: 1px !important;</div>
<div>
		&nbsp; width: 11px !important;</div>
<div>
		&nbsp; height: 11px !important;</div>
<div>
		&nbsp; font-size: 10px !important;</div>
<div>
		&nbsp; z-index: 10 !important;</div>
<div>
		}</div>
</blockquote>
<p>加一行 <span style="color:#ff0000;">display: none;</span> 变成：</p>
<blockquote>
<div>
		.syntaxhighlighter .toolbar {</div>
<div>
		&nbsp; position: absolute !important;</div>
<div>
		&nbsp; right: 1px !important;</div>
<div>
		&nbsp; top: 1px !important;</div>
<div>
		&nbsp; width: 11px !important;</div>
<div>
		&nbsp; height: 11px !important;</div>
<div>
		&nbsp; font-size: 10px !important;</div>
<div>
		&nbsp; z-index: 10 !important;</div>
<div>
		&nbsp; display: none;</div>
<div>
		}</div>
</blockquote>
<p>就行了，但是在我这里试验的结果是：<span style="color:#ff0000;">无效</span>。究其原因，是由&nbsp;<span style="color:#0000ff;">wp-content/plugins/auto-syntaxhighlighter/auto-syntaxhighlighter.php</span> 文件定义的：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="php language-php hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">wp_register_style(<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;ash_core&#39;</span>,&nbsp;ASH_PLUGIN_URL.<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;SyntaxHighlighter/build/styles/shCore-min.css&#39;</span>,&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">array</span>(),&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">$this</span>-&gt;_shlver);
</code></pre>
</section>
<p>所以，有效的方法是，修改文件&nbsp;<span style="color:#0000ff;">wp-content/plugins/auto-syntaxhighlighter/SyntaxHighlighter/build/styles/shCore-min.css</span>，按上面的方法做同样的修改，就搞定了。这个文件是&ldquo;紧凑版&rdquo;的shCore.css，里面的代码非常不适合阅读，但是其小体积显然节约了网络流量。</p>
<p><span style="background-color:#00ff00;">（6）</span>shell中循环读取文本文件的每一行<br />
假设有如下数据文件：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">[root@localhost&nbsp;~]$&nbsp;cat&nbsp;1.txt&nbsp;
123
abc
def
</code></pre>
</section>
<p>如果要读取此文件的每一行，并进行一些处理，怎么做？这里把情况设想得简单一点，我们就统计一下行数（当然 wc -l 可以直接统计行数，不用这么麻烦，此处只是为了说明问题才这样做）。<br />
方法A：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">[root@localhost&nbsp;~]$&nbsp;cat&nbsp;wrong.sh&nbsp;
<span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">#!/bin/bash
</span>
COUNT=0
cat&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;1.txt&#39;</span>&nbsp;|&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">while</span>&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">read</span>&nbsp;LINE
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">do</span>
&nbsp;&nbsp;COUNT=$((COUNT+1))
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">done</span>

<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$COUNT</span></code></pre>
</section>
<p>输出结果：0<br />
<span style="color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; font-size: 14px; line-height: 20px; text-align: left; background-color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
方法B：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">[root@localhost&nbsp;~]$&nbsp;cat&nbsp;right.sh&nbsp;
<span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">#!/bin/bash
</span>
COUNT=0
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">while</span>&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">read</span>&nbsp;LINE
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">do</span>
&nbsp;&nbsp;COUNT=$((COUNT+1))
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">done</span>&nbsp;&lt;&nbsp;&nbsp;1.txt

<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$COUNT</span></code></pre>
</section>
<p>输出结果：3<br />
显然，方法B是正确的，方法A是错误的。但是为什么呢？方法A看上去同样无比正确，但是却得到了错误的结果。这是因为方法A采用管道的方式，使得脚本在做do ... done循环的时候，实际上是另启了一个进程，从而在里面的计数不会反映到外面去，所以无法计到数。<br />
这个例子说明了，shell中的各种写法可能有不同的陷阱，如果你不知道，那么就会浪费很多时间去调试。</p>
<p><span style="background-color:#00ff00;">（7）</span>shell中换行符(\n)的字符串拼接<br />
如果要在shell中将换行符 \n 拼接到一个字符串中，可以这样做：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">B=<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;str&quot;</span>
A=<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$B</span>$<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;\n&#39;</span></code></pre>
</section>
<p>这样变量A中得到的就是一个含有换行符的字符串。</p>
<p><span style="background-color:#00ff00;">（8）</span>VS 2005中出现&ldquo;<span style="color:#0000ff;">fatal error RC1107: invalid usage; use RC /? for Help</span>&rdquo;错误的解决办法<br />
如果你打开一个VC++ 2005项目的资源视图时，出现了这个错误的话，那么，一个很可能有用的解决办法就是：在<span style="color:#0000ff;">&ldquo;工具&rdquo;&rarr;&ldquo;选项&rdquo;&rarr;&ldquo;项目和解决方案&rdquo;&rarr;&ldquo;VC++目录&rdquo;</span>中，把&ldquo;包含文件&rdquo;、&ldquo;引用文件&rdquo;、&ldquo;库文件&rdquo;等所有路径中，最后的&ldquo;<strong><span style="color:#ff0000;">\</span></strong>&rdquo;都去掉，然后再重新打开工程，应该就没有问题了。<br />
这应该是一个VS 2005的bug。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
<span style="background-color:#00ff00;">（9）</span>如何配置log4j，使得可以将 INFO、ERROR 的日志输出到一个文件，其中 ERROR 的日志还同时会输出到另一个文件<br />
请看<a href="http://www.codelast.com/?p=3081" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此链接</span></a>的第(48)条。</p>
<p><span style="background-color:#00ff00;">（10）</span>在Unicode字符集下，将CString转成const char*的方法</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="cpp language-cpp hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">CString&nbsp;strCS&nbsp;=&nbsp;_T(<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;This&nbsp;is&nbsp;a&nbsp;test&nbsp;string.&quot;</span>);
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">char</span>&nbsp;szStr[<span class="hljs-number" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(174, 135, 250); word-wrap: inherit !important; word-break: inherit !important;">256</span>]&nbsp;=&nbsp;{<span class="hljs-number" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(174, 135, 250); word-wrap: inherit !important; word-break: inherit !important;">0</span>};
wcstombs(szStr,&nbsp;strCS,&nbsp;strCS.GetLength());
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">const</span>&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">char</span>&nbsp;*p&nbsp;=&nbsp;szStr;
</code></pre>
</section>
<p>网上找到的方法，有用。</p>
<p><span style="background-color:#00ff00;">（11）</span>正则匹配TAB（制表符）<br />
假设要在Linux命令行下使用grep正则匹配TAB键（制表符），那么直接输入一个TAB就可以了：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">grep&nbsp;-o&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;abc&nbsp;&nbsp;&nbsp;&nbsp;123&quot;</span>&nbsp;file.txt
</code></pre>
</section>
<p>其中，&ldquo;abc&rdquo;和&ldquo;123&rdquo;之间是一个TAB，但是要注意，你在Linux命令行下是无法通过按键盘上的Tab键来输入一个TAB的，因为TAB已经被定义为补全命令的快捷键了。这时候，你需要先按<span style="color:#0000ff;">Ctrl+V</span>，再按<span style="color:#0000ff;">Ctrl+I</span>，就可以输入一个TAB了。</p>
<p><span style="background-color:#00ff00;">（12）</span>在shell中判断：当不是以某用户身份执行脚本时，退出</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;"><span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">#!/bin/bash
</span>
ROLE=`whoami`
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">if</span>&nbsp;[[&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$ROLE</span>&quot;</span>x&nbsp;=&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;root&quot;</span>x&nbsp;]];&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">then</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;You&nbsp;are&nbsp;running&nbsp;as&nbsp;root.&quot;</span>
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">else</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;You&nbsp;are&nbsp;running&nbsp;as&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$ROLE</span>,&nbsp;please&nbsp;switch&nbsp;to&nbsp;root&nbsp;first!&quot;</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">exit</span>
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">fi</span>

<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;Now&nbsp;you&nbsp;can&nbsp;run&nbsp;below&nbsp;program.&quot;</span></code></pre>
</section>
<p>上面的脚本做的事：当不是以root身份运行此脚本时，提示用户并退出。其实相当简单，没什么好说的，关键就在字符串相等的判断上。</p>
<p><span style="background-color:#00ff00;">（13）</span>在Emacs中显示UTF-8编码的文件内容/显示中文<br />
对UTF-8编码、含中文的文本文件，要用Emacs打开它时能正常显示，需要做以下设置：<br />
①在你的Linux用户所对应的Emacs配置文件 .emacs 中，添加以下内容：</p>
<blockquote>
<div>
		(prefer-coding-system&nbsp; &nbsp; &nbsp; &nbsp;&#39;utf-8)</div>
<div>
		(set-default-coding-systems &#39;utf-8)</div>
<div>
		(set-terminal-coding-system &#39;utf-8)</div>
<div>
		(set-keyboard-coding-system &#39;utf-8)</div>
<div>
		(setq default-buffer-file-coding-system &#39;utf-8)</div>
<div>
		(setq x-select-request-type &#39;(UTF8_STRING COMPOUND_TEXT TEXT STRING))</div>
</blockquote>
<p>这一段我是从网上抄来的，之后拿一个UTF-8(无BOM)编码、含中文的文件测试，发现在一台Linux server上有效，在另一台Linux server上则无效(仍然乱码)。最后找到原因是：跟Linux系统的locale设置有关，于是就要继续设置如下。<br />
②在.bash_profile中添加：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
LANG=zh_CN.UTF-8
</pre>
<p>然后重新登录终端，就可以用Emacs打开、显示含中文的文件了。当然，前提是：你的终端软件（例如Xshell）也必须要把encoding设置成Unicode(UTF-8)的。<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
以上整个过程都必须配合设置好，而很多人可能没发现缺少了一个环节，就导致了显示乱码，确实会比较烦人。</p>
<p><span style="background-color:#00ff00;">（14）</span>在Xshell终端里启用Emacs的Meta key<br />
Xshell设置选项如下：<br />
<a href="http://www.codelast.com" rel="noopener noreferrer" target="_blank"><img decoding="async" alt="xshell emacs meta key" src="http://www.codelast.com/wp-content/uploads/2012/03/xshell_emacs_meta_key.png" style="width: 486px; height: 171px; " /></a><br />
不设置的话，就没有办法在Emacs中使用 Alt+x 来触发一些功能，例如在Emacs中使用gdb调试的时候运行gdb的快捷键 M-x gdb。</p>
<p><span style="background-color:#00ff00;">（15）</span>gdb调试C++程序，设置断点时提示&ldquo;<span style="color:#b22222;">No source file named XXX</span>&rdquo;错误的原因<br />
原因可能有多种，我遇到的一种是：编译C++程序时没有添加-g参数导致编译出来的程序中不含调试信息，从而在gdb命令行下无论怎么设置断点（绝对路径或相对路径），它都提示&ldquo;<span style="color: rgb(178, 34, 34); ">No source file named XXX</span>&rdquo;错误，让我以为是路径的原因。所以大家千万要注意了，不要找了半天是这个低级错误啊！<br />
另外，你也可以参考一下<a href="http://stackoverflow.com/questions/1735539/gdb-debugger-problems-no-source-file-named" rel="noopener noreferrer" target="_blank">这个</a>链接。</p>
<p><span style="background-color:#00ff00;">（16）</span>grep高亮导致的字符串长度计算错误问题<br />
在Linux命令行下，你可以配置grep的结果高亮显示（参看<a href="http://www.codelast.com/?p=3645" rel="noopener noreferrer" target="_blank">这个</a>链接的第26条），效果如下：<br />
<img decoding="async" alt="" src="http://www.codelast.com/wp-content/uploads/2012/03/grep_highlight.png" style="width: 320px; height: 54px; " /><br />
这个非常有帮助的功能，却有可能给你的shell脚本造成致命的隐患&mdash;&mdash;有时会导致你在计算字符串长度时出错。<br />
例如，有一个数据文件 a.txt 只有一行内容：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">[root@localhost&nbsp;~]<span class="hljs-comment" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(128, 128, 128); word-wrap: inherit !important; word-break: inherit !important;">#&nbsp;cat&nbsp;a.txt&nbsp;</span>
1234567890
</code></pre>
</section>
<p>另外一个脚本 a.sh 想要统计 a.txt 的第一行的字符数有多少：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;"><span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">#!/bin/bash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>
A=`cat&nbsp;a.txt`
LEN=`expr&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">${#A}</span>`

<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$LEN</span></code></pre>
</section>
<p>结果如你所想的一样，输出为：10<br />
但是，假设我们要求第一行必须是含&ldquo;12&rdquo;的，则应该添加上 grep 来过滤一下：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;"><span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">#!/bin/bash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>
A=`cat&nbsp;a.txt&nbsp;|&nbsp;grep&nbsp;12`
LEN=`expr&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">${#A}</span>`

<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$LEN</span></code></pre>
</section>
<p>再执行，这时候你会发现，结果很&ldquo;神奇&rdquo;地变成了：25<br />
怎么会有25个字符呢？这明明是&ldquo;睁眼说瞎话&rdquo;啊！<br />
<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><br />
这就是按前面所说的方法添加了 grep 高亮显示的之后的结果。不信，你可以去掉.bash_profile中的grep高亮显示代码，再重新登录终端再执行脚本，一定就不会有这样的问题了。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（17）</span>删除文件之后，df -h显示的磁盘空间占用没有刷新的问题<br />
有时候你会发现，刚删除了一个很大的文件，而用 df -h 查看的磁盘空间占用还是那么多，没有释放，这可能是由于被删除的文件仍然被其他进程占用导致的。例如，用 <span style="color:#ff0000;">nohup 程序名 &amp;</span> 启动了一个程序，会生成一个 nohup.out 文件，程序的输出都会写入这个文件中，这个文件越写越大，当大到一定程度时，你删除了这个文件，然后马上用 df -h 查看，磁盘空间并没有释放。这是因为你的程序还在占用 nohup.out 文件，如果你把你的进程kill掉，会发现df -h的结果马上就刷新了。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（18）</span>如何在不切换用户的情况以，以指定的用户运行某一命令</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">su&nbsp;abc&nbsp;-c&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;touch&nbsp;1.txt&#39;</span></code></pre>
</section>
<p>表示以用户&ldquo;abc&rdquo;的身份运行后面引号中的命令。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（19）</span>在vim中如何显示特殊字符<br />
用vim打开一个文件，要显示其中的特殊字符（例如TAB）/取消显示，分别可以用如下两条命令：</p>
<blockquote>
<div>
		:set list</div>
<div>
		:set nolist</div>
</blockquote>
<p>在显示特殊字符的情况下，TAB键将被标识为&ldquo;<span style="font-family:comic sans ms,cursive;"><span style="color:#ff0000;">^I</span></span>&rdquo;（不包含引号）。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（20）</span>在shell中判断当前登录的Linux用户</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">USER=`whoami`
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">if</span>&nbsp;[[&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;<span class="hljs-variable" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(98, 151, 85); word-wrap: inherit !important; word-break: inherit !important;">$USER</span>&quot;</span>x&nbsp;!=&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;root&quot;</span>x&nbsp;]];&nbsp;<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">then</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&quot;Must&nbsp;run&nbsp;as&nbsp;root.&quot;</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">exit</span>&nbsp;1
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">fi</span></code></pre>
</section>
<p>以上代码的作用是：当执行此脚本的用户不是root时，退出。如果要判断&ldquo;是root&rdquo;，则把 != 改为 = 即可。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（21）</span>已知某项目SVN地址，如何查看其所有提交日志<br />
使用如下命令：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="bash language-bash hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;">svn&nbsp;<span class="hljs-built_in" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">log</span>&nbsp;http://android-wifi-tether.googlecode.com/svn/trunk
</code></pre>
</section>
<p>其中，后面的URL是项目的SVN地址。只要你有权限，那么就可以输出所有人提交代码时写的日志。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（22）</span>PHP输出某一文件的内容<br />
连这样弱爆了的内容都给记下来了：</p>
<section class="output_wrapper" id="output_wrapper_id" style="font-size: 16px; color: rgb(62, 62, 62); line-height: 1.6; letter-spacing: 0px; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;">
<pre style="font-size: inherit; color: inherit; line-height: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px;">
<code class="php language-php hljs" style="margin: 0px 2px; line-height: 18px; font-size: 14px; letter-spacing: 0px; font-family: Consolas, Inconsolata, Courier, monospace; border-radius: 0px; color: rgb(169, 183, 198); background: rgb(40, 43, 46); padding: 0.5em; overflow-wrap: normal !important; word-break: normal !important; overflow: auto !important; display: -webkit-box !important;"><span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">&lt;?php</span>
$xml_contents&nbsp;=&nbsp;file_get_contents(<span class="hljs-string" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(238, 220, 112); word-wrap: inherit !important; word-break: inherit !important;">&#39;./1.xml&#39;</span>);
<span class="hljs-keyword" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(248, 35, 117); word-wrap: inherit !important; word-break: inherit !important;">echo</span>&nbsp;$xml_contents;
<span class="hljs-meta" style="font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; color: rgb(91, 218, 237); word-wrap: inherit !important; word-break: inherit !important;">?&gt;</span></code></pre>
</section>
<p>这样，在访问这个PHP页面的时候，就会看到页面输出与该PHP文件处于同一目录下的 1.xml 文件的内容了。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（23）</span>svn diff 命令的输出重定向到文件时，里面包含中文的问题<br />
<span style="font-size: 13.63636302947998px; background-color: rgb(255, 255, 255);">①</span>对Windows:如果你在Windows下安装了SlikSVN作为你的subversion命令行工具，那么你可能会使用svn diff命令来输出代码修改的差异。但是，如果你的Windows是中文版的话，你会发现输出的diff文件是内含中文的（例如&ldquo;工作副本&rdquo;之类的词语），在配合Review Board系统使用的时候，如果你提交了这个内含中文的diff文件，Review Board系统会出问题&mdash;&mdash;提示你文件损坏之类的，所以，要避免这个问题，就要保证diff文件不含中文，方法就是：到SlikSVN安装目录下的 Share\Locale 目录下，将里面的文件全部删除，这样，SlikSVN就只能输出英文语言的内容了。<br />
<span style="font-size: 13.600000381469727px; background-color: rgb(255, 255, 255);">②</span>对Ubuntu，也可能遇到svn diff命令输出中文的问题。这时你需要修改一个环境变量：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
export LANGUAGE=en_US.UTF-8
</pre>
<p>通常我是把这句话写在登录用户的.bashrc文件里，让它自动执行。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（24）</span>Xshell的Sessions/会话/连接配置文件保存在哪里<br />
如果是在Win7下，它可能在这个位置：<br />
<span style="color:#0000ff;">C:\Users\用户名\AppData\Roaming\NetSarang\Xshell\Sessions</span><br />
要确定具体的位置，可以打开Xshell，菜单&ldquo;File&rdquo;&rarr;&ldquo;Open&rdquo;，在打开的对话框中点击&ldquo;Open Session Folder&rdquo;按钮，就会打开一个文件夹，这个文件夹就是保存了所有连接信息的文件夹，拷贝到别的计算机上就可以不用重新输入那些繁琐的服务器信息啦。</p>
<p><span style="background-color: rgb(0, 255, 0); ">（24）</span>awk的rshift函数<br />
详见<a href="http://www.gnu.org/software/gawk/manual/html_node/Bitwise-Functions.html" rel="noopener noreferrer" target="_blank">此处</a>。</p>
<blockquote>
<div>
		rshift(val, count)</div>
<div>
		Return the value of val, shifted right by count bits.</div>
</blockquote>
<div>
	即：将val右移count位。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（25）</span>Win7的&ldquo;未能连接一个Windows服务&rdquo;错误的解决办法<br />
	在系统托盘处弹出一个图标，提示&ldquo;未能连接一个Windows服务&rdquo;，错误的具体内容为：</div>
<blockquote>
<div>
		Windows无法连接到Syetem Event Notification Service服务。此问题阻止标准用户登录系统。作为管理员用户，您可以复查系统事件日志，以获得有关此服务未响应原因的详细信息。</div>
</blockquote>
<div>
	这个错误会导致无法连接网络。<br />
	我Google了一下，查到一个解决办法，经试验有效（但不保证对所有此问题的系统都有效）&mdash;&mdash;<br />
	在命令行下执行命令：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
NETSH WINSOCK RESET CATALOG
</pre>
<p>	无论系统提示或不提示错误，重启系统看看是不是好了。如果仍然不行，那么请移步Google查找其他解决方案。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（26）</span>运行shell脚本时提示&ldquo;/bin/sh^M: bad interpreter: XXX&rdquo;问题的解决办法<br />
	原因是换行符不对，用Emacs修改很简单：<br />
	Ctrl+x &rarr; ENTER &rarr; f &rarr; ENTER &rarr; 保存退出</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（27）</span>在CentOS 5.8上安装git<br />
	在CentOS 5.8上，如果你想yum install git，会提示找不到软件包，为了能yum install git，你需要先安装一个rpm包：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rpm -ivh http://mirror.chpc.utah.edu/pub/epel/5/i386/epel-release-5-4.noarch.rpm
</pre>
<p>	如果是64位的系统，那么就用：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rpm -ivh http://mirror.chpc.utah.edu/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
</pre>
<p>	然后就可以用yum install来安装啦。<br />
	有人会问，EPEL是什么？请看<a href="https://fedoraproject.org/wiki/EPEL/zh-cn" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个</span></a>链接。</p>
<blockquote>
<p>
			企业版 Linux 附加软件包(以下简称 EPEL)是一个由特别兴趣小组创建、维护并管理的，针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、 Scientific Linux)的一个高质量附加软件包项目。</p>
</blockquote>
<p>
	<span style="background-color: rgb(0, 255, 0); ">（28）</span>Android连接上VPN之后还是无法打开被block的webpage的问题<br />
	原因可能有千万种，解决办法也可能不相同，这里有一法，你可以试验一下，如果无效，请移步Goolge另寻其他方法。<br />
	使用Root Explorer软件将 /etc/ppp/ip-up-vpn 文件的权限改为777即可。注意在修改之前要点击&ldquo;Mount R/W&rdquo;，否则不能修改权限。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（29）</span>Nginx的error log中记录&ldquo;<span style="color:#0000ff;">FastCGI sent in stderr: &quot;Primary script unknown&quot; while reading response header from upstream</span>&rdquo;错误的解决办法<br />
	按照<a href="http://serverfault.com/questions/418983/nginx-fastcgi-primary-script-unknown-when-configuring-userdir" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这篇</span></a>文章的说法，应该把fastcgi.conf配置文件中的&ldquo;<span style="color:#a52a2a;">fastcgi_param &nbsp;SCRIPT_FILENAME &nbsp; &nbsp;$document_root$fastcgi_script_name</span>&rdquo;改为&ldquo;<span style="color:#0000ff;">fastcgi_param &nbsp;SCRIPT_FILENAME &nbsp; &nbsp;$request_filename</span>&rdquo;。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（30）</span>Win7更新了最新的Nvidia显卡驱动后，系统颜色变得过于鲜艳的问题<br />
	要调整回一个&ldquo;正常&rdquo;的颜色，需要打开&ldquo;<span style="color:#0000ff;">Nvidia控制面板</span>&rdquo;（即<span style="color:#0000ff;">nvcplui.exe</span>程序，可能不同显卡对应的程序名不同），在&ldquo;<span style="color:#b22222;">显示</span>&rdquo;&rarr;&ldquo;<span style="color:#b22222;">调整桌面颜色设置</span>&rdquo;&rarr;&ldquo;<span style="color:#b22222;">3. 应用以下增强功能</span>&rdquo;中，将&ldquo;数字振动控制&rdquo;的值设低一些，例如，我感到颜色过于鲜艳时，该值为70%多，而我调到了30%，才感到回到了正常状态。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（31）</span>tar打包目录时，排除掉一些指定的文件<br />
	如下命令：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
tar zcf a.tar.gz 2012* --exclude=*_*_*
</pre>
<p>	将会把名字符合 2012* 的目录打包成a.tar.gz，其中，只要任何目录下含有 pattern 为 *_*_* 的文件，都会被排除掉，不会被打进tar包中，例如，一个名为&ldquo;1_2_3&rdquo;的文件，就会被排除掉。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（32）</span>Visual Studio 2008中设置制表符(Tab)的缩进<br />
	这里仅针对VC项目来说。在&ldquo;工具&rdquo;&rarr;&ldquo;选项&rdquo;&rarr;&ldquo;C/C++&rdquo;&rarr;&ldquo;制表符&rdquo;中可以设置。如果想用空格代替制表符，选择&ldquo;插入空格&rdquo;即可。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（33）</span>命令行创建两个版本的SVN diff文件<br />
	命令：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
svn diff -r 3001:3000 &gt; 1.diff
</pre>
<p>	表示创建版本3001和3000之间的diff，并保存为1.diff文件。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（34）</span>在Linux下查看一个进程占用的端口<br />
	先用如下命令找到进程的PID：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ps -ef | grep process-name
</pre>
<p>	其中，process-name是你的进程名。找到PID（这里假设是26382）后，再用如下命令查看其占用的端口：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
netstat -anlp | grep 26382
</pre>
<p>
	<span style="background-color: rgb(0, 255, 0); ">（35）</span>修改Linux默认的SSH 22端口<br />
	SSH的默认22端口容易受到攻击，为了安全，可以改为其他端口，以下是修改方法：<br />
	<span style="background-color:#ffff00;">①</span>修改文件&nbsp;/etc/ssh/sshd_config，找到注释掉的这一行：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
#Port 22
</pre>
<p>	改为：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
Port 22
Port 34567
</pre>
<p>	这表示同时使用22和34567作为SSH端口。<br />
	有人会说：为什么要设置两个端口？直接使用端口34567不就行了吗？因为如果你最后设置失败，22端口可能不再起作用，你就无法通过SSH连接服务器了，后果就是你只能通过远程控制卡或直接到服务器前连接显示器来重新配置正确，那样的话就悲剧了。所以，为了留个保险，先保留原来的22端口。<br />
	<span style="background-color:#ffff00;">②</span>重启两个服务：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
/etc/init.d/sshd restart
/etc/init.d/iptables restart
</pre>
<p>	<span style="background-color:#ffff00;">③</span>通过新端口34567来SSH连接服务器，成功的话，就把前面保留的默认22端口给删掉，再重启上述两个服务，就OK了。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="background-color: rgb(0, 255, 0); ">（36）</span>在GNOME终端中的Emacs里打开Emacs的菜单<br />
	默认情况下，按F10是可以打开Emacs的菜单的，不过GNOME的终端可能会截获F10这个快捷键，你按F10的时候会变成打开GNOME终端的菜单，这非常让人讨厌。你可以在Emacs中执行以下命令：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M-X menu-bar-open
</pre>
<p>	这样就可以打开Emacs的菜单了。</p>
<p>	<span style="background-color: rgb(0, 255, 0);">（37）</span>Linux下用命令删除一个以文件名以减号(-)开头的文件<br />
	先cd到文件所在的目录，然后：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rm -f ./-filename
</pre>
<p>
	<span style="background-color: rgb(0, 255, 0);">（38）</span>Linux下用命令行查看进程监听的端口</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
netstat -anp | grep 程序名
</pre>
<p>
	<span style="background-color: rgb(0, 255, 0);">（39）</span>CentOS的网络安装地址<br />
	这里以CentOS 6.4为例。先下载net install的ISO（例如CentOS-6.4-i386-netinstall.iso），刻录到光盘上，用该光盘引导安装，在选择操作系统所在的介质（例如光驱，硬盘，NFS，URL）的时候，选择URL，然后输入用下面的方法找到的URL，即可开始安装：<br />
	到<a href="http://www.centos.org/modules/tinycontent/index.php?id=30" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这里</span></a>去找一个mirror，例如在中国大陆可以选择网易的服务器，对安装32位版本的CentOS 6.4，就是：<a href="http://mirrors.163.com/centos/6.4/os/i386/" rel="noopener noreferrer" target="_blank">http://mirrors.163.com/centos/6.4/os/i386/</a><br />
	如果想看更具体的安装过程截图，可参考<a href="http://www.if-not-true-then-false.com/2011/centos-6-netinstall-network-installation/" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">此文</span></a>。</p>
<p>	<span style="background-color: rgb(0, 255, 0); ">（40）</span>在Emacs中将文件转换为UTF-8编码<br />
	如何将一个在Emacs中打开的文本文件转换为UTF-8编码？下面的Emacs命令可以做到：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
C-x C-m f utf-8-unix
</pre>
<p>	然后回车即可。当然最后别忘了保存文件！</p>
<p>	<span style="background-color: rgb(0, 255, 0);">（41）</span>用密钥文件登录的两台Linux如何scp文件<br />
	假设要从server A向server B上传文件（scp），那么只需要把私钥文件放到server A，你的用户根目录下的.ssh目录下，即 ~/.ssh/，然后把文件的权限改为600，再把它的用户改为你的用户，就可以scp文件到server B了（假设私钥文件名为identity）：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
chmod 600 identity
chown your_user:your_user identity
</pre>
<p>	这样做虽然可以达到目的，不过显然不安全，因为只要有权限在server A上访问此私钥文件的人，都可以用此私钥文件在其他地方用你的身份登录server A和server B了。<br />
	安全的做法是：在ssh客户端软件中设置允许forward agent，从而可以在你自己的计算机上ssh到server A，再scp文件，而不用直接修改server A。假设你使用Ubuntu的ssh客户端，那么修改&nbsp;/etc/ssh/ssh_config 文件，将这一行：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
#   ForwardAgent no
</pre>
<p>	改为：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
   ForwardAgent yes
</pre>
<p>	即可。</p>
<p>	<span style="background-color: rgb(0, 255, 0);">（42）</span>Linux shell命令生成一个随机数</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
echo -n $RANDOM | md5sum | awk &#39;{print $1}&#39;
</pre>
</div>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="background-color: rgb(0, 255, 0);">（43）</span>用shell命令删除文件中的指定行<br />
如果你要删除一个文本文件中，含有你指定的字符串的那些行，可以用sed像下面这样操作：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sed -i &#39;/abc/d&#39; 1.txt
</pre>
<p>这样就会把1.txt中，含有&ldquo;abc&rdquo;字符串的行都删掉。</p>
<p><span style="background-color: rgb(0, 255, 0);">（44）</span>Linux shell获取文件大小<br />
还在用&nbsp;<span style="color:#0000ff;">ls -l your-file-name | awk &#39;{print $5}&#39;</span> 的方式来获取文件大小？太麻烦啦。下面方式不是更好一些么：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
stat -c%s your-file-name
</pre>
<p>直接得到文件大小。</p>
<p><span style="background-color: rgb(0, 255, 0);">（45）</span>Linux shell获取0~9之间的随机数（方法来自《鸟哥的Linux私房菜》一书）</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
declare -i NUM=$RANDOM*10/32768
echo $NUM
</pre>
<p>
<span style="background-color: rgb(0, 255, 0);">（46）</span>正则表达式排除指定的字符串<br />
标题的含义是：你想写一个正则表达式，它要匹配一个字符串，但是这个字符串中不能含有你指定的另一个字符串（也就是把它排除掉），可以这样写：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
^(?!.*string).*$
</pre>
<p>其中，string就是你要排除掉的字符串。<br />
在上面的正则表达式的基础上改一改，就可以为你所用。举个例子，假设有字符串：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
http://news.qq.com/1.html
http://video.qq.com/2.html
http://sports.qq.com/3.html
</pre>
<p>现在你想匹配所有&ldquo;http://*.qq.com*&rdquo;模式的字符串，但是，又想去掉&ldquo;news.qq.com&rdquo;这样的，那么可以这样写：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
^(?!.*news).*\.qq\.com.*$
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
结果就是：第一行不会匹配上，后两行会匹配上。<br />
再延伸一点：如果不仅想排除掉news，还想排除掉video，那么可以这样写：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
^http:\/\/(?!news|video).*\.qq\.com.*$
</pre>
<p>再延伸一点：<br />
如果不仅想排除掉news和video，而且还想指定xxx.qq.com中的&ldquo;xxx&rdquo;必须是<span style="color:#0000ff;">0～9</span>，<span style="color:#0000ff;">a～z</span>，或<span style="color:#0000ff;">-</span>（减号）中的任何字符，那么可以在上面的基础上再加一点匹配条件：</p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
^http:\/\/(?!news|video)[a-z0-9\-]+\.qq\.com.*$
</pre>
<p>此正则是不会匹配上URL&ldquo;http://a_b.qq.com/1.html&rdquo;的，因为&ldquo;a_b&rdquo;中含有下划线，这不在上面规定的字符范围内。</p>
<p><span style="background-color: rgb(0, 255, 0);">（47）</span><span style="font-family: Ubuntu;">在Emacs中直接查看当前文件的svn diff<br />
我们知道，在Linux命令行下可以用 <span style="color:#0000ff;">svn diff file.txt</span> 命令来查看file.txt的当前文件与版本库中的最新版本的差异，但是这样输出的文本是没有语法高亮的（当内容很多时，看起来眼都花了），我们只能把它重定向到一个diff文件中，然后再用Emacs或VIM之类的软件打开diff文件，这个操作过程非常麻烦。那么，如果已经用Emacs打开了file.txt，能否在Emacs中直接显示出它的SVN diff，从而可以用高亮方式来查看呢？强大的Emacs必然有这个功能。在Emacs 24中，不需要任何插件就可以实现，在打开file.txt的情况下，输入命令：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
C-x v =
</pre>
<p><span style="font-family: Ubuntu;">并回车，屏幕会自动一分为二，左边是file.txt的buffer，右边是它的svn diff结果，看起来太舒服了。如果跟版本库中的文件相比，file.txt没有任何修改的话，则在Emacs的mini buffer那里会显示出一句话：</span></p>
<blockquote>
<p>
		No changes between working revision and workfile</p>
</blockquote>
<p>
<span style="background-color: rgb(0, 255, 0);">（48）</span><span style="font-family: Ubuntu;">Ubuntu下Chrome字体太小的解决办法<br />
在Ubuntu下，Chrome默认设置时，在我的PC上，某些网页字体在100％显示时非常小，看起来眼都要花了，但是如果单纯地靠放大网页来放大字体，有时候又会造成页面结构的错乱，因此，把Chrome的最小字体改大一点是个好方法，如下：<br />
退出Chrome，备份Chrome配置文件：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
cp ~/.config/google-chrome/Default/Preferences ~/.config/google-chrome/Default/Preferences.bak
</pre>
<p><span style="font-family: Ubuntu;">修改其内容，找到&ldquo;</span>webkit<span style="font-family: Ubuntu;">&rdquo;这一段，在类似于</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
&quot;default_font_size&quot;: 16,
</pre>
<p><span style="font-family: Ubuntu;">的这一行下面，添加一行：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
&quot;minimum_font_size&quot;: 15,
</pre>
<p><span style="font-family: Ubuntu;">重新打开Chrome，发现字体很小的网页在100%显示时字体变大了。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">（49）</span><span style="font-family: Ubuntu;">crontab中不支持嵌套命令<br />
假设你在crontab中写了如下的命令：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
31 14 * * * /home/codelast/a.sh `date -d yesterday +%Y-%m-%d` &gt;&gt; /home/codelast/a.log 2&gt;&amp;1
</pre>
<p><span style="font-family: Ubuntu;">该命令的本意是向a.sh脚本传入一个类似于&ldquo;2013-06-01&rdquo;这样的字符串参数，但实际上该crontab不会执行成功，因为crontab中不支持嵌套命令（反引号中的命令），因此，如果你要达到这样的效果，可以把嵌套命令写在一个脚本中，只在crontab中调用那个脚本即可。</span></p>
<p><span style="background-color: rgb(0, 255, 0);">（50）</span><span style="font-family: Ubuntu;">Linux命令行下进行Base64解码</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
echo xxx | base64 --decode
</pre>
<p><span style="font-family: Ubuntu;">其中，xxx是你要解码的字符串。</span></p>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushShell.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%884/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创]华为HG255d家庭网关的破解&#038;使用其他无线路由器桥接HG255d直连光猫</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e5%8d%8e%e4%b8%bahg255d%e5%ae%b6%e5%ba%ad%e7%bd%91%e5%85%b3%e7%9a%84%e7%a0%b4%e8%a7%a3%e4%bd%bf%e7%94%a8%e5%85%b6%e4%bb%96%e6%97%a0%e7%ba%bf%e8%b7%af%e7%94%b1%e5%99%a8%e6%a1%a5/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e5%8d%8e%e4%b8%bahg255d%e5%ae%b6%e5%ba%ad%e7%bd%91%e5%85%b3%e7%9a%84%e7%a0%b4%e8%a7%a3%e4%bd%bf%e7%94%a8%e5%85%b6%e4%bb%96%e6%97%a0%e7%ba%bf%e8%b7%af%e7%94%b1%e5%99%a8%e6%a1%a5/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Tue, 07 Jun 2011 16:19:35 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[HG255d]]></category>
		<category><![CDATA[huawei]]></category>
		<category><![CDATA[TR069]]></category>
		<category><![CDATA[光猫]]></category>
		<category><![CDATA[光纤]]></category>
		<category><![CDATA[华为]]></category>
		<category><![CDATA[协议]]></category>
		<category><![CDATA[如何]]></category>
		<category><![CDATA[家庭网关]]></category>
		<category><![CDATA[宽带]]></category>
		<category><![CDATA[无线]]></category>
		<category><![CDATA[桥接]]></category>
		<category><![CDATA[电信]]></category>
		<category><![CDATA[直连]]></category>
		<category><![CDATA[破解]]></category>
		<category><![CDATA[网关]]></category>
		<category><![CDATA[路由器]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=2688</guid>

					<description><![CDATA[<p>
	&#160;</p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">电信提供的HG255d家庭网关（就是一台网络设备），作为光纤到户宽带赠送的网络设备，在使用上有诸多限制。本文向大家介绍了如何破解家庭网关以拿到其超级用户权限，以及使用自己的无线路由器桥接HD255d直连光纤猫，从而避开HG255d对BT下载的限制的方法。</span></span></p>
<p>
	<span style="color:#f00;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">警告：本文仅作学习用途，对造成的任何损失及后果不承担任何责任！</span></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">在安装光纤到户宽带的时候，电信提供了两台设备：一是光纤猫，我们不需要动它；另一台是华为产的HD255d网络设备，它是一台融合了无线路由、IPTV、电话等功能的设备，所以你可以看到它上面不仅有LAN接口，而且有IPTV接口、电话机接口等。入户的光纤接在光猫上，从光猫出来的一根网线接到华为HG255d上，然后，我们可以采用有线或无线（WiFi）的方式连接到HG255d上，就可以上网了。光猫和HG255d每次上电的时候，HG255d会自动拨号（类似于无线路由器接ADSL猫上网一样）连接网络，所以你连接到HG255d上之后，就可以直接上网了。</span></span></p>
<p>
<span id="more-2688"></span>	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">理论上来说，这种模式可以用得好好的，但是，爱折腾的技术宅们对HG255d的各种限制表示了强烈的不满&#8212;&#8212;对BT下载、电驴下载等的严重限制，使得大家认为HG255d根本就是一个残废品。因此，我们需要对其进行适当&#8220;改造&#8221;，以跳出这些限制，满足我们那一点点并不高的要求。我也照着网上一些文章尝试了一下，成功折腾出来了，因此不敢独享，特发布出来。</span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#00f;">方法A</span>：</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">不使用HG255d，而是使用自己的无线路由通过网线直接连接到光猫上。你需要打电话向电信问到你的宽带拨号用户名、密码，然后在你的无线路由中设置好。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">优点：非常简单，不费吹灰之力即可完成。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">缺点：由于HG255d上有IPTV、电话等功能，所以使用此方法不再能使用这些业务。当然，如果你永远都不会使用这些业务的话，也就无所谓了。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#00f;">方法B</span>：要在保持IPTV、电话等功能的前提下，就必须要使用HG255d，因此，必须要对其进行破解。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">所谓的对HG255d进行破解，就是想办法拿到它的超级用户权限。在HG255d设备的底部，写有一个普通用户的帐号，用<span class="KSFIND_CLASS" id="0KSFindDIV">这个</span>帐号登录HG255d的管理界面，我们会发现只能更改非常有限的几项内容，这非常令人不愉快&#8212;&#8212;我自己的东西，凭什么不让我改？一般来说，电信的安装人员不会告诉你HG255d的超级用户用户名和密码&#8212;&#8212;你运气好的话可能可以向他们问到，但是大多数情况都是不行的。因此，我们要自己动手！</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（1）</span>你要准备一个FAT32格式的U盘（其他格式的是否可以，我没有试验），插到HG255d的USB接口上（在设备的上方，有一个盖子盖住的，打开就可以看到了），如下图所示：</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img fetchpriority="high" decoding="async" alt="USB port of HD255d" height="164" src="http://www.codelast.com/wp-content/uploads/2011/06/USB_port_of_HG255d.png" width="370" /></span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（2）</span>确保你的电脑已经通过无线或有线连接上了HG255d。然后打开IE浏览器，访问地址：</span></span></p>
<p>
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">http://192.168.1.1/html/ehomeclient/cfgUSBRestore.cgi?coverusbpath=usb1_1</span></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">稍等片刻，就会看到一个提示，大概说的是配置文件已经保存成功。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">这一步的作用是将HG255d的配置文件保存到U盘上。那么，我们要它的配置文件干什么呢？答案是：从配置文件中，我们可以解密出HG255d的超级用户密码。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（3）</span>拔下U盘，就会发现在U盘中生成了一个名为&#8220;e8_Config_backup&#8221;的文件夹，里面有一个ctce8_HG255d.cfg文件，这就是无线路由的配置文件了。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（4）</span>用记事本打开配置文件ctce8_HG255d.cfg，可以发现是乱码（加密）的，我们需要解密工具。下载<a href="http://www.codelast.com/wp-content/uploads/2011/06/decrypt.txt" target="_blank" rel="noopener noreferrer"><span class="KSFIND_CLASS_SELECT" id="1KSFindDIV"><span style="background-color:#ffa07a;">这个</span></span></a>文件，然后将其重命名为decrypt.html，并且在IE浏览器中打开，会看到有两个输入框：</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img loading="lazy" decoding="async" alt="decrypt.html" height="263" src="http://www.codelast.com/wp-content/uploads/2011/06/decrypt_html.png" width="383" /></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">在上面的输入框中，将配置文件ctce8_HG255d.cfg的内容（乱码的）粘贴进来，然后点击&#8220;解密&#8221;按钮，就会发现下面的输入框中得到了明文。没错，这就是我们要的东西。在这些结果中查找相应的字段，就可以获知你想要的密码了，具体方法如下：</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">A.在配置文件中定位到WANPPPConnectionInstance节点，可以看到里面有username和password属性，这两个是拨号用户名和密码（经试验，这两个属性均为空，也就是在配置文件中看不到拨号密码，但是<span class="KSFIND_CLASS" id="2KSFindDIV">这个</span>密码我们可以打电信的10000号问到，所以<span class="KSFIND_CLASS" id="3KSFindDIV">这个</span>看不到也无所谓）。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">B.定位到X_ATP_UserInfoInstance节点，会看到username=telecomadmin，这说明用户名为telecomadmin，之后跟着的userpassword就是密码。因此，这就是HG255d的超级用户帐号了。</span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e5%8d%8e%e4%b8%bahg255d%e5%ae%b6%e5%ba%ad%e7%bd%91%e5%85%b3%e7%9a%84%e7%a0%b4%e8%a7%a3%e4%bd%bf%e7%94%a8%e5%85%b6%e4%bb%96%e6%97%a0%e7%ba%bf%e8%b7%af%e7%94%b1%e5%99%a8%e6%a1%a5/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p>
	&nbsp;</p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">电信提供的HG255d家庭网关（就是一台网络设备），作为光纤到户宽带赠送的网络设备，在使用上有诸多限制。本文向大家介绍了如何破解家庭网关以拿到其超级用户权限，以及使用自己的无线路由器桥接HD255d直连光纤猫，从而避开HG255d对BT下载的限制的方法。</span></span></p>
<p>
	<span style="color:#f00;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">警告：本文仅作学习用途，对造成的任何损失及后果不承担任何责任！</span></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">在安装光纤到户宽带的时候，电信提供了两台设备：一是光纤猫，我们不需要动它；另一台是华为产的HD255d网络设备，它是一台融合了无线路由、IPTV、电话等功能的设备，所以你可以看到它上面不仅有LAN接口，而且有IPTV接口、电话机接口等。入户的光纤接在光猫上，从光猫出来的一根网线接到华为HG255d上，然后，我们可以采用有线或无线（WiFi）的方式连接到HG255d上，就可以上网了。光猫和HG255d每次上电的时候，HG255d会自动拨号（类似于无线路由器接ADSL猫上网一样）连接网络，所以你连接到HG255d上之后，就可以直接上网了。</span></span></p>
<p>
<span id="more-2688"></span>	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">理论上来说，这种模式可以用得好好的，但是，爱折腾的技术宅们对HG255d的各种限制表示了强烈的不满&mdash;&mdash;对BT下载、电驴下载等的严重限制，使得大家认为HG255d根本就是一个残废品。因此，我们需要对其进行适当&ldquo;改造&rdquo;，以跳出这些限制，满足我们那一点点并不高的要求。我也照着网上一些文章尝试了一下，成功折腾出来了，因此不敢独享，特发布出来。</span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#00f;">方法A</span>：</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">不使用HG255d，而是使用自己的无线路由通过网线直接连接到光猫上。你需要打电话向电信问到你的宽带拨号用户名、密码，然后在你的无线路由中设置好。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">优点：非常简单，不费吹灰之力即可完成。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">缺点：由于HG255d上有IPTV、电话等功能，所以使用此方法不再能使用这些业务。当然，如果你永远都不会使用这些业务的话，也就无所谓了。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#00f;">方法B</span>：要在保持IPTV、电话等功能的前提下，就必须要使用HG255d，因此，必须要对其进行破解。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">所谓的对HG255d进行破解，就是想办法拿到它的超级用户权限。在HG255d设备的底部，写有一个普通用户的帐号，用<span class="KSFIND_CLASS" id="0KSFindDIV">这个</span>帐号登录HG255d的管理界面，我们会发现只能更改非常有限的几项内容，这非常令人不愉快&mdash;&mdash;我自己的东西，凭什么不让我改？一般来说，电信的安装人员不会告诉你HG255d的超级用户用户名和密码&mdash;&mdash;你运气好的话可能可以向他们问到，但是大多数情况都是不行的。因此，我们要自己动手！</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（1）</span>你要准备一个FAT32格式的U盘（其他格式的是否可以，我没有试验），插到HG255d的USB接口上（在设备的上方，有一个盖子盖住的，打开就可以看到了），如下图所示：</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img loading="lazy" decoding="async" alt="USB port of HD255d" height="164" src="http://www.codelast.com/wp-content/uploads/2011/06/USB_port_of_HG255d.png" width="370" /></span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（2）</span>确保你的电脑已经通过无线或有线连接上了HG255d。然后打开IE浏览器，访问地址：</span></span></p>
<p>
	<span style="color:#00f;"><span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">http://192.168.1.1/html/ehomeclient/cfgUSBRestore.cgi?coverusbpath=usb1_1</span></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">稍等片刻，就会看到一个提示，大概说的是配置文件已经保存成功。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">这一步的作用是将HG255d的配置文件保存到U盘上。那么，我们要它的配置文件干什么呢？答案是：从配置文件中，我们可以解密出HG255d的超级用户密码。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（3）</span>拔下U盘，就会发现在U盘中生成了一个名为&ldquo;e8_Config_backup&rdquo;的文件夹，里面有一个ctce8_HG255d.cfg文件，这就是无线路由的配置文件了。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（4）</span>用记事本打开配置文件ctce8_HG255d.cfg，可以发现是乱码（加密）的，我们需要解密工具。下载<a href="http://www.codelast.com/wp-content/uploads/2011/06/decrypt.txt" target="_blank" rel="noopener noreferrer"><span class="KSFIND_CLASS_SELECT" id="1KSFindDIV"><span style="background-color:#ffa07a;">这个</span></span></a>文件，然后将其重命名为decrypt.html，并且在IE浏览器中打开，会看到有两个输入框：</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img loading="lazy" decoding="async" alt="decrypt.html" height="263" src="http://www.codelast.com/wp-content/uploads/2011/06/decrypt_html.png" width="383" /></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">在上面的输入框中，将配置文件ctce8_HG255d.cfg的内容（乱码的）粘贴进来，然后点击&ldquo;解密&rdquo;按钮，就会发现下面的输入框中得到了明文。没错，这就是我们要的东西。在这些结果中查找相应的字段，就可以获知你想要的密码了，具体方法如下：</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">A.在配置文件中定位到WANPPPConnectionInstance节点，可以看到里面有username和password属性，这两个是拨号用户名和密码（经试验，这两个属性均为空，也就是在配置文件中看不到拨号密码，但是<span class="KSFIND_CLASS" id="2KSFindDIV">这个</span>密码我们可以打电信的10000号问到，所以<span class="KSFIND_CLASS" id="3KSFindDIV">这个</span>看不到也无所谓）。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">B.定位到X_ATP_UserInfoInstance节点，会看到username=telecomadmin，这说明用户名为telecomadmin，之后跟着的userpassword就是密码。因此，这就是HG255d的超级用户帐号了。</span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">好了，拿到了HG255d的超级用户帐号，我们再进它的管理界面看看， 是否任何选项都可以设置了呢？没错。下面，我们要改什么呢？按很多网友的说法，一进去就把与TR069相关的的参数全给改了。这样做可能一时不会出问题，但是，如果你未来还要安装IPTV，以及电话功能的时候，可能电信那端会还需要通过远程控制的方式来检测你的设备，那么可能就会遇到很多麻烦。因此，最好不要更改HG255d中与TR069相关的太多参数。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">下面是我的HG255d的原始参数（没有作任何修改的情况下）：</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img loading="lazy" decoding="async" alt="HG255d network setting TR069" height="559" src="http://www.codelast.com/wp-content/uploads/2011/06/HG255d_network_setting_1.png" width="444" /></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">&nbsp;这里要解释一下TR069是什么。TR069是一种通信协议，电信通过它，可以对你的HG255d进行自动配置，还可以收集它的统计信息，等等。所以大家普遍认为，电信用<span class="KSFIND_CLASS" id="4KSFindDIV">这个</span>东西来监控我们，大多数人当然无法接受这一点，因此无数网友都是一改了事，让设备摆脱电信的控制。前面说了，改了之后，如果你开通的业务有变更，可能会遇到一些麻烦。所以，为了保险，我不修改它，而是采取另一种方法。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">由于HG255d是电信定制的设备，因此，电信在里面加入了许多限制BT的设置，我们为了避开BT下载等限制，就必须要做一些修改，改起来可能有点麻烦，并且还有改错导致不能用的风险，因此，我们自己的无线路由器就派上用场了（我们在自己的无线路由中肯定不会设置对BT的限制）。如果你和我一样，原来就已经有了一个自己购买的无线路由器，那么我们就可以利用它来上网（这样就避开了对BT等的限制），并且还同时可以继续使用HG255d，从而不会影响IPTV等业务的使用。</span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">下面要说的，就是如何设置HG255d，使得我们可以利用自己的无线路由来桥接它，从而&ldquo;直连&rdquo;光猫上网的方法。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（1）</span>利用前面得到的超级用户帐号，进入HG255d设置界面。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（2）</span>在&ldquo;网络&rdquo;&rarr;&ldquo;宽带设置&rdquo;中，选中名为 3_INTERNET_R_VID_ 的连接，会发现右边红框处的&ldquo;启用&rdquo;是勾上的，我们取消它的选择。因为我们不要通过HG255d来拨号上网，我们要通过自己的无线路由器来拨号上网。设置好之后点击下面的确定按钮进行保存。</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img loading="lazy" decoding="async" alt="HG255d network setting 2" height="275" src="http://www.codelast.com/wp-content/uploads/2011/06/HG255d_network_setting_2.png" width="463" /></span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（3）</span>还是在同一页面中，点击&ldquo;新建连接&rdquo;，会发现&ldquo;连接名称&rdquo;是不能修改的（与我图中的名称不一样），这没关系，因为你在保存了设置之后，连接名称会自动修改为与图中一样。然后，其他用红框标识出来的几项，分别按下图来设置，设置好之后点击下面的确定按钮进行保存。</span></span></p>
<p style="text-align: center; ">
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><img loading="lazy" decoding="async" alt="HG255d network setting 3" height="323" src="http://www.codelast.com/wp-content/uploads/2011/06/HG255d_network_setting_3.png" width="462" /></span></span></p>
<p>
	<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（4）</span>硬件接线：将自己的无线路由器的WAN口，用网线连接到HG255d的LAN4口。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（5）</span>无线路由器配置：在自己的无线路由器中，像连接ADSL猫一样设置好拨号的用户名、密码。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="color:#f00;">（6）</span>将光猫、HG255d、自己的无线路由器全部重新上电，稍候片刻，并且用电脑连接到你自己的无线路由器上，就会发现可以正常上网了。</span></span></p>
<p>
	<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;">此时，你自己的无线路由器就是通过HG255d桥接到光猫上的了，HG255d对于光猫和你自己的无线路由器来说是透明的，只是相当于一个中转站的作用，相当于你自己的无线路由器是直接连接到光猫上的，因此，对BT下载的限制就不复存在了。另外，你要开通IPTV、电话功能的话，仍然可以使用HG255d上的接口，不会影响你上网的功能。</span></span></p>
<p>
	&nbsp;</p>
<p>
	<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
<div id="KSFIND_MASK" style="background-color: rgb(0, 0, 0); opacity: 0.22; position: absolute !important; left: 0px !important; top: 0px !important; border: 0px none !important; padding: 0px !important; z-index: 1000000 !important; height: 0px; width: 0px; display: none; background-position: initial initial; background-repeat: initial initial; ">
	&nbsp;</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e5%8d%8e%e4%b8%bahg255d%e5%ae%b6%e5%ba%ad%e7%bd%91%e5%85%b3%e7%9a%84%e7%a0%b4%e8%a7%a3%e4%bd%bf%e7%94%a8%e5%85%b6%e4%bb%96%e6%97%a0%e7%ba%bf%e8%b7%af%e7%94%b1%e5%99%a8%e6%a1%a5/feed/</wfw:commentRss>
			<slash:comments>65</slash:comments>
		
		
			</item>
		<item>
		<title>[原创]Nagios安装、配置、问题记录(1)</title>
		<link>https://www.codelast.com/nagios%e5%ae%89%e8%a3%85%e3%80%81%e9%85%8d%e7%bd%ae%e8%ae%b0%e5%bd%95/</link>
					<comments>https://www.codelast.com/nagios%e5%ae%89%e8%a3%85%e3%80%81%e9%85%8d%e7%bd%ae%e8%ae%b0%e5%bd%95/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Tue, 11 Jan 2011 13:54:35 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[check_lvs]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[illegal metachars]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[LVS]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[nrpe]]></category>
		<category><![CDATA[NSCA]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[xinetd]]></category>
		<category><![CDATA[多个IP]]></category>
		<category><![CDATA[安装]]></category>
		<category><![CDATA[报警]]></category>
		<category><![CDATA[监控]]></category>
		<category><![CDATA[短信]]></category>
		<category><![CDATA[被动监测]]></category>
		<category><![CDATA[配置]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=1037</guid>

					<description><![CDATA[<p>
	<span _fck_bookmark="1" style="display: none; ">&#160;</span></p>
<p>
	<span _fck_bookmark="1" style="display: none; ">&#160;</span></p>
<p>
	&#160;</p>
<p>
	本文描述了我在使用Nagios的过程中遇到的一些问题、解决办法以及总结的注意事项。文章很长，请使用Ctrl+F定位到你需要的部分。</p>
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><font class="Apple-style-span">Nagios是一套强大的监控报警系统，但是你不花一些时间，是绝对不可能很好地配置它的。除非你只需要监控主机的alive等简单的情况（例如ping），否则请放弃幻想，以极大的耐心去研究它吧。</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&#160;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（1）</span></span></span></span></font><font class="Apple-style-span"><span style="font-size: 14px; ">默认安装情况下，Nagios的主配置文件为：/usr/local/nagios/etc/nagios.cfg</span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; ">打开这个文件，可以清楚地看到它指定了其他的配置文件：</span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
<span id="more-1037"></span>								</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/commands.cfg</span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/contacts.cfg</span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg</span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/templates.cfg</span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; ">所以你要注意了，不要以为&#8220;objects&#8221;目录下的只是示例文件而已，它们默认被当作了&#160;实际上使用的配置文件，你不需要麻烦地拷贝一份出来到&#160;/usr/local/nagios/etc/&#160;目录下再修改，直接修改这些配置文件就好了。</span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span"><span style="background-color: rgb(0, 255, 0); ">（2）</span>&#8220;Map&#8221;、&#8220;Trends&#8221;功能无法使用，错误提示为：</font></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">The requested URL /nagios/cgi-bin/trends.cgi was not found on this server.</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">是因为编译Nagios的时候没有编译出相应的CGI</font></span></span>文件（默认安装时，在&#160;<span style="color: rgb(128, 0, 128); ">/usr/local/nagios/sbin/</span>&#160;目录下）。编译依赖项：</font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libgd</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libgd-devel</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libpng</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libpng-devel</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libjpeg</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libjpeg-devel</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">zlib</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">zlib-devel</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">查询安装情况：</font></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">rpm -qa &#124; grep zlib</font></span></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">其中gd的两个包名分别类似于：</font></span></span></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">gd-2.0.33-9.4.el5_1.1.x86_64.rpm</font></span></span></font></span></font></p></div></div></div></div></div></div></div></div>&#8230; <a href="https://www.codelast.com/nagios%e5%ae%89%e8%a3%85%e3%80%81%e9%85%8d%e7%bd%ae%e8%ae%b0%e5%bd%95/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<p>
	<span _fck_bookmark="1" style="display: none; ">&nbsp;</span></p>
<p>
	<span _fck_bookmark="1" style="display: none; ">&nbsp;</span></p>
<p>
	&nbsp;</p>
<p>
	本文描述了我在使用Nagios的过程中遇到的一些问题、解决办法以及总结的注意事项。文章很长，请使用Ctrl+F定位到你需要的部分。</p>
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<div style="background-color: rgb(255, 255, 255); ">
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><font class="Apple-style-span">Nagios是一套强大的监控报警系统，但是你不花一些时间，是绝对不可能很好地配置它的。除非你只需要监控主机的alive等简单的情况（例如ping），否则请放弃幻想，以极大的耐心去研究它吧。</font></span></span></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（1）</span></span></span></span></font><font class="Apple-style-span"><span style="font-size: 14px; ">默认安装情况下，Nagios的主配置文件为：/usr/local/nagios/etc/nagios.cfg</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; ">打开这个文件，可以清楚地看到它指定了其他的配置文件：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
<span id="more-1037"></span>								</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/commands.cfg</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/contacts.cfg</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); ">cfg_file=/usr/local/nagios/etc/objects/templates.cfg</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; ">所以你要注意了，不要以为&ldquo;objects&rdquo;目录下的只是示例文件而已，它们默认被当作了&nbsp;实际上使用的配置文件，你不需要麻烦地拷贝一份出来到&nbsp;/usr/local/nagios/etc/&nbsp;目录下再修改，直接修改这些配置文件就好了。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span"><span style="background-color: rgb(0, 255, 0); ">（2）</span>&ldquo;Map&rdquo;、&ldquo;Trends&rdquo;功能无法使用，错误提示为：</font></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">The requested URL /nagios/cgi-bin/trends.cgi was not found on this server.</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">是因为编译Nagios的时候没有编译出相应的CGI</font></span></span>文件（默认安装时，在&nbsp;<span style="color: rgb(128, 0, 128); ">/usr/local/nagios/sbin/</span>&nbsp;目录下）。编译依赖项：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libgd</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libgd-devel</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libpng</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libpng-devel</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libjpeg</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">libjpeg-devel</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">zlib</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">zlib-devel</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">查询安装情况：</font></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">rpm -qa | grep zlib</font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">其中gd的两个包名分别类似于：</font></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">gd-2.0.33-9.4.el5_1.1.x86_64.rpm</font></span></span></font></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span">gd-devel-2.0.33-9.4.el5_1.1.x86_64.rpm</font></span></span></font></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">安装相应的RPM包后，重新编译安装Nagios：</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include</font></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">make all</font></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); ">make install</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><font class="Apple-style-span"><span style="background-color: rgb(0, 255, 0); ">（3）</span>重新编译安装Nagios（</font></span></span></font><span style="font-size: 14px; ">configure、make all、make install）不用担心配置文件会丢失，因为<span style="color: rgb(0, 0, 255); ">make install</span>只会把Nagios主程序、CGI、HTML给安装上。</span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（4）</span></span>如果你在define service的时候，使用了一个模板，例如：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; "><span style="font-family: arial, helvetica, sans-serif; ">use &nbsp; &nbsp;local-service &nbsp; &nbsp; &nbsp; &nbsp; ; Name of service template to use</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">那么你可以在这个service中覆盖模板里的配置。例如，模板里设置了：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">notifications_enabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(255, 0, 0); ">1</span></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">你却可以在这个service中设置：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><font class="Apple-style-span">notifications_enabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(255, 0, 0); ">0</span></font></span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">这样，对这个service来说，触发条件时也不会报警的。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（5）</span></span></span>报警邮件通过sendmail发不出去？请查看邮件日志文件（/var/log/maillog）的内容查找原因。当然，最好用mail试一下：</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color:#00f;"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">mail -v yourmail@abc.com</span></span></font></font></font></font></font></font></font></span></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">然后依次输入邮件的标题、正文以及抄送地址，回车发送！然后再去邮件日志文件里看日志，是成功了还是失败了，分析原因。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（6）</span></span></span>如果配置了短信发送报警信息，但是却收不到短信，我要提醒你的是：</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">①在define command的地方，command_line里写的发送报警短信的命令行中，用于发送报警短信的程序要写全路径，例如/usr/local/bin/sendsms，不要以为写一个&ldquo;sendsms&rdquo;就可以了，尽管你在Linux命令行下可以找到这个命令（因为它在/usr/local/bin/目录下），但是对Nagios来说，它却找不到，所以要写全路径。这个规律我是试验发现的，至于是不是普遍现象，或者是不是所有版本的Nagios都是这样，我不知道，我只是通过试验知道这样能解决问题。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">②短信接口的70个字符限制，有时候超过了是发不出短信的！请确认你的短信接口允许的单条短信字符数限制。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（7）</span></span>在montoring server上执行命令：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">/usr/local/nagios/libexec/check_nrpe -H 192.168.17.2 -c check_disk<br />
									</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">提示错误：<span style="color: rgb(0, 128, 0); ">NRPE: Command &#39;check_disk&#39; not defined</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">这是因为没有配置好两端的NRPE和Nagios，使得monitoring server不能远程执行check_disk命令。</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">在<span style="color: rgb(255, 0, 0); ">被监控服务器</span>端，需要修改nrpe.cfg文件：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(128, 0, 128); ">dont_blame_nrpe=1<br />
									</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">这将允许命令带参数执行。</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">另外，在nrpe.cfg文件的最后，原来有几行注释掉的内容：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(128, 0, 128); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">#command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(128, 0, 128); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(128, 0, 128); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">#command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(128, 0, 128); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">#command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$</font><br />
									</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">把它们取消注释。处于注释状态的话，NRPE当然找不到这些命令了。</font></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">修改完之后，需要重启服务：</font></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">service xinetd restart</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（8）</span></span>错误&ldquo;<span style="color: rgb(0, 128, 0); ">CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.</span>&rdquo;的解决：</font></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">这篇文章详细地讲解了解决办法：</font></font><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><a href="http://www.codelast.com/?p=1088">Nagios: How to Enable check_nrpe Command Line Arguments</a></span></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">看完之后你可能很后悔你没有早看到这篇文章吧？没错，和我一样，要重新编译安装NRPE，不过配置Nagios、NRPE的过程就是这样，折腾来折腾去，不费点劲是解决不了问题的。</font></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（9）</span></span></font><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">在Nagios中，你会看到类似于&ldquo;</font>RTA = 455.04 ms&rdquo;的数据，RTA是什么呢？引用网上的话作答：Round Trip Average. The average time it took to receive a response to your ping packets.</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（10）</span></span>在Nagios中，检测时间周期默认是以分钟为单位的，例如&ldquo;normal_check_interval&rdquo;的值为5时，代表正常检测周期为5分钟。假设你想以5秒钟检测一次，怎么办？这时候你需要修改配置文件nagios.cfg中的&ldquo;interval_length&rdquo;参数的值，默认值为60，代表基数是60秒，你改成1，代表基数是1秒，这时，&ldquo;normal_check_interval&rdquo;的值为5就表示正常检测周期为5秒了。请注意，把&ldquo;interval_length&rdquo;的值修改以后，所有其他和周期有关的地方你都要检查一遍，保证都被更改为了正确的数值，否则到时就全乱套了。</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（11）</span></span>在Nagios中使用自定义变量：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">很简单：无论是在host，service还是contact定义中，要添加一个自定义的变量，只需要以下划线开头就可以了，例如：_my_custom_var为一个在host定义中的自定义变量，则在其他地方，要使用这个变量的话，其宏名为_HOST<font class="Apple-style-span" face="arial, helvetica, sans-serif">MY_CUSTOM_VAR，也就是说，Nagios在不仅将你的变量名转换成了大写，而且在前面加了一个&ldquo;_HOST&rdquo;。如果是service或contact中的自定义变量的话，则Nagios会分别添加&ldquo;_SERVICE&rdquo;或&ldquo;_CONTACT&rdquo;到宏名前。</font></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（12）</span></span></font><font class="Apple-style-span" face="arial, helvetica, sans-serif">如果你在用 /usr/local/nagios/bin/nagios -v nagios.cfg 命令检测你所编写的Nagios配置文件的正确性的时候，得到了以下警告提示：</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); "><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Warning: Service &#39;XXX&#39; on host &#39;XXX&#39; &nbsp;has a notification interval less than its check interval! &nbsp;Notifications are only re-sent after checks are made, so the effective notification interval will be that of the check interval.</font></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">那么很明显，就是你设置的某项service中的 notification_interval 值比&nbsp;normal_check_interval 值大导致的了。normal_check_interval 是正常的检测周期，例如10分钟检测一次，20分钟检测一次这样的周期，而&nbsp;</font>notification_interval 看网上的很多文章，说它是发生故障之后的报警周期，例如该值设置成30分钟就表示发生故障之后每30分钟会报一次警。但是&nbsp;notification_interval 为什么不能比&nbsp;normal_check_interval 值要小呢？我完全可以让某个service一小时才检测一次，但是发生故障之后每1分钟报一次警啊！反正我是没想明白，或者是我对它们的含义理解有误，还需要进一步斟酌。</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（13）</span></span>在被监控的服务器上安装NRPE后，在配置文件 /etc/xinetd.d/nrpe 中，可以设置允许哪些IP地址访问NRPE daemon，例如：</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">only_from &nbsp; &nbsp; &nbsp; = 127.0.0.1</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">表示只有本机可以访问。为了能让多台远程Nagios可以监控此台服务器的状况，可以在此处添加多个IP地址，中间以空格隔开，例如</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">only_from &nbsp; &nbsp; &nbsp; = 192.168.1.188 58.30.200.199</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">表示允许192.168.1.188和58.30.200.199这两个IP访问本机上的NRPE daemon。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">保存之后，要重启服务：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">service xinetd restart</span></span></font></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">另外再说一句，在NRPE的配置文件&nbsp;/usr/local/nagios/etc/nrpe.cfg 中，有一个&ldquo;allowed_hosts=&rdquo;的选项，可以设置允许哪些IP地址访问，但是要注意了，文件里面的注释写得清清楚楚：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">&ldquo;<span style="color: rgb(255, 0, 0); ">NOTE: This option is ignored if NRPE is running under either inetd or xinetd</span>&rdquo;</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">也就是说，如果NRPE是运行在在 inetd 或 xinetd 下运行的话，这个选项就被忽略了！所以，我个人觉得最好是在&nbsp;/etc/xinetd.d/nrpe 中设置允许访问的IP。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（14）</span></span>如果你通过NRPE检测一个远程服务，可以先在Nagios主机上通过以下命令执行一下：</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">/usr/local/nagios/libexec/check_nrpe -H 远程主机IP -c 远程检测命令 -a 命令行参数<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">如果返回的结果是这样的：<br />
									</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">Received 0 bytes from daemon. Check the remote server logs for error messages.<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">那么你就要按这个提示，到被监控的主机上查看日志，看看是出了什么错：<br />
									</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">tail -20&nbsp;/var/log/messages<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">然后根据错误记录来解决问题。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（15）</span></span>&ldquo;performance data&rdquo;有两个，一个是<span style="color: rgb(0, 0, 255); ">$HOSTPERFDATA$</span></span>，另一个是<span style="color: rgb(0, 0, 255); ">$SERVICEPERFDATA$</span>，当你在报警邮件中要带上performance data信息时，千万不要漏了，要不然可能看不到你想要的信息。</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（16）</span></span>如果你在Nagios监控系统的web界面中点进去一个service，然后点击&ldquo;Disable notifications for this service&rdquo;，这就可以直接禁用该对服务的报警，不过，在web界面中禁用某服务的报警，并不会对配置文件造成影响，也就是说，你在配置文件中设置了某服务的&ldquo;notifications_enabled&rdquo;值为1，那么就算你在web界面中禁用了其报警，配置文件中仍然会是1。不仅如此，就算你重启了Nagios服务（service nagios restart），在web界面中禁用的报警仍然会是禁用状态，也就是说Nagios把你在web界面上的操作记录在某个地方了（不是配置文件中）。这一点要特别注意，有时候收不到报警信息，而配置文件中的报警全都打开了，这时你就要去web界面里查看各项设置了。</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（17）</span></span>在commnads.cfg中定义的一个远程执行的命令（通过NRPE来执行），如果用 -t 参数指定了命令执行的超时时间（例如-t 500指定了超时时间为500秒），但是还是经常会收到错误报警：<span style="color: rgb(0, 0, 255); ">NRPE: Command timed out after 60 seconds。</span></span><br />
									</span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">这是怎么回事呢？在NRPE的文档中写得很清楚：<br />
									</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">The check_nrpe plugin returns &quot;NRPE: Command timed out after x seconds&quot;<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">This error indicates that the command that was run by the NRPE daemon did not finish executing within the specified time. &nbsp;You can increase the timeout for commands by editing the NRPE configuration file and changing the value of the command_timeout variable. &nbsp;If you&#39;re running the NRPE daemon as a standalone daemon (and not under inetd or xinetd), you&#39;ll need to restart it in order for the new timeout to be recognized.<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">可见，要修改这个超时时间，在Nagios命令定义文件commands.cfg中通过 -t 参数指定是无效的，<span style="color: rgb(128, 0, 128); ">因为 -t 参数指定的是连接的超时时间，而不是NRPE的命令执行超时时间</span>。必须要修改NRPE的配置文件nrpe.cfg中的&ldquo;<span style="color: rgb(0, 0, 255); ">command_timeout</span>&rdquo;参数值（默认值为60秒）才有用，如果你要修改为5分钟，应该这样改：<br />
									</span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">command_timeout=300</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（18）</span></span>如果要监控Widows的服务器，需要在Windows服务器上安装<a href="http://sourceforge.net/projects/nscplus" target="_blank" rel="noopener noreferrer">NSClient++</a>这个软件，详细的设置可看<span style="color: rgb(255, 0, 0); ">【</span><a href="http://nagios.sourceforge.net/docs/3_0/monitoring-windows.html" target="_blank" rel="noopener noreferrer">这个</a><span style="color: rgb(255, 0, 0); ">】</span>链接。在这里我简要地描述一下：安装NSClient++的过程中，需要设置允许访问的IP地址，这个地址就是Nagios监控服务器的地址；然后还需要设置一个密码，这个密码就是Nagios监控服务器访问这台Windows上的NSClient时要提供的密码（如果没有密码就能取数据，那太不安全了）。安装好之后，启动NSClient的服务，并且在服务属性设置中勾上&ldquo;Allow service to interact with desktop&rdquo;的选项，然后Windows上的设置就算完成了，然后就到设置Nagios服务器了：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">在commands.cfg文件中，定义检测Windows服务器的命令：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">define command{</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;command_name &nbsp; &nbsp;check_nt</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;command_line &nbsp; &nbsp;$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s $ARG1$ -v $ARG2$ $ARG3$</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">注意，-s 参数表示指定访问NSClient的密码，就是上面所说的、在NSClient安装过程中设置的那个密码。</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">然后在定义service的时候，像这样写：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">define service{</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;use &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; local-service</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;host_name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myWindowsServer</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;service_description &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Windows Disk Space&nbsp;</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;check_command &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; check_nt!myPasswd!USEDDISKSPACE!-l c -w 80 -c 90&nbsp;</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 128, 0); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">其中，&ldquo;myPasswd&rdquo;是上面所说的那个密码，你需要写你设置的密码；<span style="color: rgb(0, 0, 255); ">USEDDISKSPACE</span>表示检测的是磁盘空间；另外，看到上面的<span style="color: rgb(0, 0, 255); ">check_command</span>中提供的最后一个参数了吗：-l&nbsp;<span style="color: rgb(255, 0, 0); ">c</span>&nbsp;-w 80 -c 90&nbsp;</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">其中第一个<span style="color: rgb(255, 0, 0); ">c</span>表示检测的是C盘，-w表示的是warning值，-c表示的是critical值。</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（19）</span></span>假设你自己编写了被监控服务器上的一个插件，然后你要在Nagios服务器上通过NRPE调用它，那么你可以向它传入参数，但是在默认情况下，如果你传的参数中含有以下&ldquo;非法&rdquo;字符（illegal metachars），则会出错：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); "><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">| ` &amp; &gt; &lt; &#39; &quot; \ [ ] { }<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">禁止在参数中使用这些字符是为了防止恶意的客户利用它们来做&ldquo;坏事&rdquo;。这些字符的定义在NRPE的实现文件nrpe.c中，你可以找到：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); ">#define NASTY_METACHARS &nbsp; &nbsp; &nbsp; &nbsp; &quot;|`&amp;&gt;&lt;&#39;\&quot;\$$!]{}&quot;<br />
									</span></span></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">以及出错提示的代码：</font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">/* make sure request doesn&#39;t contain nasties */</font></span></font></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">if(contains_nasty_metachars(pkt-&gt;buffer)==TRUE)</font></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">{</font></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">syslog(LOG_ERR,&quot;Error: Request contained illegal metachars!&quot;);</font></span></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">return ERROR;</font></span></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">}</font></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">显然，通过修改NRPE的源代码，重新编译并安装它，可以绕开这个限制。但是这可能并不是一个好主意，我们还是尽量通过修改我们自己编写的监测插件，不要在输入参数中使用那些字符为好。</font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(178, 34, 34); "><span style="background-color: rgb(0, 255, 0); ">（20）</span></span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">修改Nagios的 历史记录/事件记录/日志 的保留时间：</span></span></font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">在Nagios的web界面中，可以通过查看&ldquo;Event Log&rdquo;来得知历史事件的情况，但Nagios默认只保留当天的记录（历史记录都被存档保存到其他地方了），怎么修改这个值呢？例如我想改成保留当月的记录，那么就要修改Nagios安装目录下的 etc目录下的<span style="color: rgb(255, 0, 0); ">nagios.cfg</span>文件，将&nbsp;<span style="color: rgb(0, 0, 255); ">log_rotation_method</span>&nbsp;参数值改为<span style="color: rgb(0, 0, 255); ">m</span>（默认为d），这表示Nagios在每个月最后一天的零点会进行日志文件的&ldquo;转换&rdquo;（rotate）工作，将旧的文件存档保存起来，新文件从空的开始重新记录。</font></font></font></font></font></font></p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									&nbsp;</p>
<p style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（21）</span></span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">错误：<span style="color: rgb(0, 0, 255); ">Warning: The check of host &#39;XXX&#39; looks like it was orphaned (results never came back). I&#39;m scheduling an immediate check of the host...</span></span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; color: rgb(34, 34, 34); font-size: 12px; "><span style="font-size: 14px; ">在Nagios的web界面的&ldquo;Event Log&rdquo;中看到无数条这种类型的记录，产生原因未知，但是看到进程中有相当多与Nagios相关的进程，于是编写以下的脚本，将它们全部杀掉：</span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">#!/bin/bash</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">for PID in `ps -ef | grep -v grep | grep nagios | awk &#39;{print $2}&#39;`</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">do</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp;echo &quot;PID : $PID&quot;</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">&nbsp;&nbsp;kill -9 $PID</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">done</font><br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">然后再重启Nagios服务：</font></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">service nagios restart</font><br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" face="arial, helvetica, sans-serif">就不再看到产生那些错误提示了。</font></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									&nbsp;</p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（22）</span></span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">&ldquo;CHECK_NRPE: Error - Could not complete SSL handshake&rdquo; 错误：</span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">此问题大概有两个原因：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); ">A）</span><span style="color: rgb(0, 100, 0); ">/etc/xinetd.d/nrpe</span>&nbsp;文件中要添加允许访问的服务器的IP地址，你没有添加。在&ldquo;only_from = &rdquo;这一行添加，多个IP地址用空格隔开，例如：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">only_from &nbsp; &nbsp; &nbsp; = 192.168.56.200 192.168.6.8<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">然后重启服务：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">service xinetd restart<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">如果此时你在Nagios服务器端试验：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">./check_nrpe -H 192.168.77.2<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">返回：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">NRPE v2.12<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">则说明成功了。</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); ">B）</span>客户端安装的OpenSSL库与Nagios服务器端不匹配，导致此错误。我遇到的不是此错误，所以也无法给出更详细的说明，但是在NRPE的文档中看到是会有这种情况的。</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（23）</span></span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">安装Nagios后，有3个检查时间同步的插件，根据不同的检测目标，使用不同的插件：</span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); ">check_ntp</span>：已过时，最好不要再使用；</span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); ">check_ntp_peer</span>：用于检查ntp服务器的健康状况。</span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; "><span style="color: rgb(0, 0, 255); ">check_ntp_time</span>：用于检查指定的服务器与ntp服务器之间的时间差。</span></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									&nbsp;</p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="background-color: rgb(0, 255, 0); "><span style="color: rgb(178, 34, 34); ">（24）</span></span><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">如何监测LVS的状态：</span></span></font></font></font></font></font></font></p>
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; display: inline !important; ">
																	<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">如果要监测<span style="color: rgb(178, 34, 34); ">LVS（Linux Virtual Server）</span>服务的状态是否正常，有这样一个插件可用：<a href="https://github.com/sukria/Nagios-Plugin-LVS" target="_blank" rel="noopener noreferrer">Nagios-Plugin-LVS</a>。先说说下载这个插件：你需要先安装git软件，然后用git来检出Nagios-Plugin-LVS的源代码，检出源码之后再以源码方式安装它。git可以到<a href="http://git-scm.com/" target="_blank" rel="noopener noreferrer">这个</a>链接去下载。安装好git之后，用git来获取</span></span>Nagios-Plugin-LVS的源码：</font></font></font></font></font></font></p>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">git clone&nbsp;https://github.com/sukria/Nagios-Plugin-LVS<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">然后得到了一个名为&nbsp;Nagios-Plugin-LVS 的目录。进入该目录，看不到常见的<span style="color: rgb(0, 100, 0); ">configure</span>等可执行程序，也没有Makefile文件（只有一个<span style="color: rgb(0, 100, 0); ">Makefile.PL</span>）文件，原因是：该插件是以perl语言编写的，我们要想生成Makefile文件，需要以perl来执行它：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">perl Makefile.PL<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">然后就会生成Makefile文件了。就这么容易？其实不然，一般人都没有这么幸运的。执行上面这条命令时，一般来说，你会看到下面的错误输出：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Warning: prerequisite Nagios::Plugin 0 not found.</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Writing Makefile for Nagios::Plugin::LVS</font></span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">这是因为你在安装Nagios Plugin的时候，没有编译安装Nagios::Plugin这个perl模块造成的。<br />
									</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">那么，如何编译此perl模块呢？在对Nagios Plugin进行configure的时候，加上参数：<br />
									</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">./configure --enable-perl-modules<br />
									</span></font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">然后make，make install即可。<br />
									</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">这样，你应该就可以成功地生成&nbsp;Nagios-Plugin-LVS&nbsp;插件的Makefile文件了。然后make，make install。你会在Nagios-Plugin-LVS目录下看到生成了一个名为&nbsp;<span style="color: rgb(255, 0, 0); ">blib</span>&nbsp;的目录。在<span style="color: rgb(255, 0, 0); ">&nbsp;blib/script/</span>&nbsp;目录下，可以看到一个&nbsp;<span style="color: rgb(0, 100, 0); ">check_lvs</span>&nbsp;可执行程序（其实它就是perl脚本）。这个程序就是我们需要放置在<span style="color: rgb(0, 100, 0); ">被监控服务器</span>上的脚本了&mdash;&mdash;由于我们要监控的是LVS服务，因此，此处的&ldquo;被监控服务器&rdquo;指的就是安装了LVS服务的机器（在其上，是有<span style="color: rgb(255, 0, 0); ">ipvsadm</span>命令的，如果没有，则无法用check_lvs脚本来检测LVS状态）。</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">这就完了？没有。一般人都没有这么幸运。你执行一下<span style="color: rgb(0, 100, 0); ">check_lvs</span>，会发现输出一堆错误，类似于（不尽相同，但是大概都差不多）：</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Can&#39;t locate Nagios/Plugin.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/perl5/site_perl/5.8.8/Nagios/Plugin/LVS.pm line 10.</font></span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/Nagios/Plugin/LVS.pm line 10.</font></span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Compilation failed in require at ./check_lvs line 8.</font></span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">BEGIN failed--compilation aborted at ./check_lvs line 8.</font><br />
									</span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">这些是啥玩意？由于<span style="color: rgb(0, 100, 0); ">check_lvs</span>是perl程序，因此，它找不到上面所提示的一堆的perl库时，会报错。我们就按错误提示中的一堆的pm文件，按相同的目录结构放置到&nbsp;</font><span style="color: rgb(255, 0, 0); ">/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi&nbsp;</span>目录下。这些pm文件从哪来？如果你的Nagios Plugin是以默认安装路径安装的话，就是在&nbsp;<span style="color: rgb(255, 0, 0); ">/usr/local/nagios/perl/lib/</span>&nbsp;目录下。去里面找到需要的东西吧！</font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="font-size: 14px; ">把文件都补齐后，再运行<span style="color: rgb(0, 100, 0); ">check_lvs</span></span></span>程序，直到它可以成功输出结果了，就说明你的插件安装成功了。输出形如：</font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">LVS OK - LVS is running (conn: 456778 active, 54786210 inactive)<br />
									</span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">这就结束了？还没完！由于<span style="color: rgb(0, 100, 0); ">check_lvs</span>是要调用<span style="color: rgb(255, 0, 0); ">ipvsadm</span>命令来获取LVS状态的，而<span style="color: rgb(255, 0, 0); ">ipvsadm</span>命令是只能以root用户来运行的，因此，nagios用户运行不了这个命令（在客户端，插件是以nagios用户来运行的），一运行就报错：</font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Can&#39;t initialize ipvs: Permission denied (you must be root)</font></span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Are you sure that IP Virtual Server is built in the kernel or as module?</font><br />
									</span></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">真折腾，怎么解决？经试验，把nagios用户加入root组也无济于事，问题依旧。</font></font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">办法是：将nagios用户设置成可以无需密码直接su成root，这样就能以nagios用户运行命令<span style="color: rgb(0, 0, 255); ">sudo&nbsp;/usr/local/nagios/libexec/check_lvs</span>&nbsp;了，有了这个基础，我们就可以自己编写一个名为</font><span style="color: rgb(0, 100, 0); ">check_lvs_nagios</span>的脚本，然后在里面只写上一句话：</font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">sudo&nbsp;/usr/local/nagios/libexec/check_lvs</font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">此时，你切换到nagios用户（su nagios），再运行check_lvs_nagios，应该就可以输出正确的结果了。<br />
									</font></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">这就完了吗？还是没完！！千万别砸我，事情就要说清楚前因后果。你在Nagios监控服务器端通过NRPE运行<span style="color: rgb(0, 100, 0); ">check_lvs_nagios</span>命令，你会发现根本无法读取输出：</font><br />
									</font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">/usr/local/nagios/libexec/check_nrpe -H 192.168.XXX.XXX -c check_lvs_nagios</font><br />
									</span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">输出结果为：</font><br />
									</font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">NRPE: Unable to read output</font><br />
									</span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">而这个</font>check_lvs_nagios命令，确信是在被监控服务器上的NRPE配置文件（/usr/local/nagios/etc/nrpe.cfg）中添加过了的（并且还重启了xinetd服务<span style="color: rgb(0, 0, 255); ">&nbsp;service xinetd restart</span>）：</font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); ">command[check_lvs_nagios]=/usr/local/nagios/libexec/check_lvs_nagios<br />
									</span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">于是，我不得不说，使用这个插件的成本太高，不仅需要安装的东西多，配置麻烦，而且到最后还是无法在只进行少量配置修改的情况下使之运行起来，因此，我转而自己写一个插件check_lvs（用shell写的），比它简单多了。请试验运行下面这段简单的shell：<br />
									</font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">#!/bin/bash<br />
									</span></span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">ACT_COUNT=0<br />
									</span></span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">for NUM in `sudo ipvsadm | grep http | grep Route | awk &#39;{print $5}&#39;`<br />
									</span></span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">do<br />
									</span></span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">&nbsp;&nbsp; &nbsp;&nbsp;ACT_COUNT=$(($ACT_COUNT+ $NUM))<br />
									</span></span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">done<br />
									</span></span></font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; ">echo $</span></span><span style="color: rgb(0, 0, 255); ">ACT_COUNT</span><br />
									</font></font></font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">这段shell统计了LVS服务统计信息中的&ldquo;<span style="color: rgb(128, 0, 128); ">ActiveConn</span>&rdquo;的值，通过这个值，你就可以判断出LVS服务是否正常了。当然，上面的shell代码段并不是一个Nagios插件（因为其并没有按Nagios系统的要求返回正确的值），但是你只要自己根据阈值来判断是否正常、并返回相应的值就可以将它改造成一个插件了。</font></font><br />
									</font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">另外请注意：</font></font><br />
									</font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); ">①</span>这段shell中有用sudo来运行ipvsadm命令，因此你还是需要像上面的内容中所说的一样，为nagios用户添加可以无密码su到root的权限（方法请看<a href="http://www.codelast.com/?p=1653" target="_blank" rel="noopener noreferrer">这个链接</a>的第25条内容）。然后你就可以用nagios用户来运行这个脚本了。</font></font><br />
									</font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(255, 0, 0); ">②</span>sudo命令默认不能在后台运行，要开放这个权限，同样</font></font>请看<a href="http://www.codelast.com/?p=1653" target="_blank" rel="noopener noreferrer">这个链接</a>的第25条内容。</font></font></p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									&nbsp;</p>
<p style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
									<span style="font-family:arial,helvetica,sans-serif;"><span style="font-size:14px;"><span style="background-color:#00ff00;">（25）</span>被动监测的实现&mdash;&mdash;NSCA</span></span></p>
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<div style="background-color: rgb(255, 255, 255); display: inline !important; ">
<p style="display: inline !important; ">
																	<font class="Apple-style-span" face="arial, helvetica, sans-serif">详情请点击<a href="http://www.codelast.com/?p=2213" target="_blank" rel="noopener noreferrer">这个链接</a>。</p>
<p>																	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
																	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
																	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;">codelast.com</strong></span></em></a></u>&nbsp;<br />
																	感谢关注我的微信公众号（微信扫一扫）：</font></p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
																	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</div>
<div id="KSFIND_MASK" style="background-color: rgb(0, 0, 0); opacity: 0.22; position: absolute !important; left: 0px !important; top: 0px !important; border: 0px none !important; padding: 0px !important; z-index: 1000000 !important; height: 0px; width: 0px; display: none; cursor: auto; background-position: initial initial; background-repeat: initial initial; ">
	&nbsp;</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/nagios%e5%ae%89%e8%a3%85%e3%80%81%e9%85%8d%e7%bd%ae%e8%ae%b0%e5%bd%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[原创] 一些VC之GUI开发问题总结</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9bvc-ui%e5%bc%80%e5%8f%91%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93/</link>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Sat, 01 Jan 2011 06:25:10 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[VC]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=1888</guid>

					<description><![CDATA[<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); line-height: normal; ">
<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<p style="font-size: medium; font-family: Simsun; ">
																									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">下面是一些Visual C++ UI开发中遇到的问题的总结，专门记在此文中，以便将来查询。</font></p>
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000;" style="color: rgb(0, 0, 0); "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">由于文章较长，请用<span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">Ctrl+F</span>查询关键字来定位到你需要的内容。</span></span></span></span></span></span></span></span></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&#160;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（1）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">程序运行时提示 VERIFY(strDocName.LoadString(AFX_IDS_UNTITLED)) 错误</span></span></span></span>：</span></span></span></span></span></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在一个基于Xtreme Toolkit的Visual C++ SDI工程中，为了创建Ribbon风格的界面，添加了一堆代码，然后编译，无问题。再运行，程序根本运行不起来，错误提示类似于：</span></span></span></span></span></span></span></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #b22222;" style="color: rgb(178, 34, 34); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">Error Locating Toolkit Resources.</span></span></span></span></span><br />
																																</span></span></span></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #b22222;" style="color: rgb(178, 34, 34); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">Make sure you have included the resources to your project&#39;s .rc2 file.</span></span></span></span></span><br />
																																</span></span></span></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #b22222;" style="color: rgb(178, 34, 34); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">Add #include &#60;XTToolkitPro.rc&#62; to your project .rc2 file</span></span></span></span></span><br />
																																</span></span></span></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span id="more-1888"></span></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"></font><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">&#8212;&#8212;你当然需要照做，将你工程目录下的&#8220;res&#8221;子目录下的的*.rc2文件用记事本打开，你会看到这一句话：</span></span></span></span></span></span></span></span></font></p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9bvc-ui%e5%bc%80%e5%8f%91%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); line-height: normal; ">
<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<p style="font-size: medium; font-family: Simsun; ">
																									<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">下面是一些Visual C++ UI开发中遇到的问题的总结，专门记在此文中，以便将来查询。</font></font></p>
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<div _mce_style="background-color: #ffffff;" style="background-color: rgb(255, 255, 255); ">
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000;" style="color: rgb(0, 0, 0); "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">由于文章较长，请用<span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">Ctrl+F</span>查询关键字来定位到你需要的内容。</span></span></span></span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（1）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">程序运行时提示 VERIFY(strDocName.LoadString(AFX_IDS_UNTITLED)) 错误</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在一个基于Xtreme Toolkit的Visual C++ SDI工程中，为了创建Ribbon风格的界面，添加了一堆代码，然后编译，无问题。再运行，程序根本运行不起来，错误提示类似于：</span></span></span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #b22222;" style="color: rgb(178, 34, 34); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">Error Locating Toolkit Resources.</span></span></span></span></span><br />
																																</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #b22222;" style="color: rgb(178, 34, 34); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">Make sure you have included the resources to your project&#39;s .rc2 file.</span></span></span></span></span><br />
																																</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #b22222;" style="color: rgb(178, 34, 34); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">Add #include &lt;XTToolkitPro.rc&gt; to your project .rc2 file</span></span></span></span></span><br />
																																</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span id="more-1888"></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">&mdash;&mdash;你当然需要照做，将你工程目录下的&ldquo;res&rdquo;子目录下的的*.rc2文件用记事本打开，你会看到这一句话：</span></span></span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">// 在此处添加手动编辑的资源...</span></span></span></span></span><br />
																																</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在这句话下面添加一句：</span></span></span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">#include &lt;XTToolkitPro.rc&gt;</span></span></span></span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">然后，重新编译，再运行，这回提示的是&ldquo;Debug Assertion Failed&rdquo;错误，</span></span></span></span></span>很容易发现，程序问题产生于此处（红色的那一句代码）：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">void CSingleDocTemplate::SetDefaultTitle(CDocument* pDocument)</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">{</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp; &nbsp;CString strDocName;</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp; &nbsp;if (!GetDocString(strDocName, CDocTemplate::docName) ||&nbsp;</span></span>strDocName.IsEmpty())</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp; &nbsp;{</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">&nbsp;&nbsp; &nbsp; &nbsp;</span></span></span>&nbsp;&nbsp; &nbsp; &nbsp;// use generic &#39;untitled&#39;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">&nbsp;&nbsp; &nbsp; &nbsp;</span></span></span>&nbsp;&nbsp; &nbsp; &nbsp;VERIFY(strDocName.LoadString(AFX_IDS_UNTITLED));</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp; &nbsp;}</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp; &nbsp;pDocument-&gt;SetTitle(strDocName);</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">}</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">这下子有点不知所云了，怎么解决呢？</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">方法如下：用记事本打开工程目录下的*.rc文件，找到下面的内容：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &quot;res\<span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">XXX</span>.rc2&quot; &nbsp;<span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 非 Microsoft Visual C++ 编辑的资源</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &quot;afxres.rc&quot; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 标准组件</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &quot;afxprint.rc&quot; &nbsp; &nbsp; &nbsp;&nbsp;<span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 打印/打印预览资源</span></span><br />
																																</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">其中，<span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">XXX</span>代表你的工程名，请将&nbsp;</span><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">#include &quot;res\XXX.rc2&quot;</span>&nbsp;移动到&nbsp;<span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">#include &quot;afxprint.rc&quot;</span>&nbsp;的下方，即：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &quot;afxres.rc&quot; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 标准组件</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &quot;afxprint.rc&quot; &nbsp; &nbsp; &nbsp;<span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">&nbsp;// 打印/打印预览资源</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &quot;res\XXX.rc2&quot; &nbsp;<span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 非 Microsoft Visual C++ 编辑的资源</span></span><br />
																																</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">然后保存此文件，再重新编译程序，再运行，看，没问题了吧！</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">但是为什么改变一下顺序就好了呢？原因大致是由于语言环境不同造成的（中文，英文），在*.rc2文件中，<span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">#include &lt;XTToolkitPro.rc&gt;</span>&nbsp;使得英文的资源被包含到工程中，因此后面的资源都被附加到了英文的资源中，而我的工程在创建的时候，&ldquo;资源语言&rdquo;选择是的&ldquo;中文（中国）&rdquo;，因此就产生了问题。所以，我们要把&nbsp;</span>#include &quot;res\XXX.rc2&quot;&nbsp;放到最后。</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">如果你有兴趣，可以到<a href="http://forum.codejock.com/forum_posts.asp?TID=17708&amp;title=debug-assertion-failed" rel="noopener noreferrer" target="_blank">这个</a>链接看更详细的描述。</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（2）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">Resource-Neutral.rc(47) : error RC2170 : bitmap file Controls/res/font.bmp is not in 3.00 format</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">出现此错误，先不要想这么多，先去看看提示的这个文件能不能打得开。我就遇到了文件根本打不开的情况，所以，先把一个正确的文件替换过去再说吧！当然，此错误产生的原因不只此一种，但是我只是想告诉大家，有时候错误很简单，不要忙活了半天，才发现是非常雷人的原因。</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">文章来源：http://www.codelast.com/</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（3）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">获取CRichEditView中的文本</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">可以用GetRichEditCtrl函数先获取与CRichEditView相关联的CRichEditCtrl对象，再用CRichEditCtrl类的GetLine函数来读取指定行的文本。</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">另一个办法就是获取CRichEditView的视图类指针，通过GetWindowText函数来取其中的所有文本。例如，你在文档类中，可以这样：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();</span><span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 获取主框架指针</span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">CString strText;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">pMainFrame-&gt;m_pEditView-&gt;GetWindowText(strText);<span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span></span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 获取edit view中的文本&nbsp;</span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">其中，m_pEditView是我在CMainFrame类中定义的CRichEditView视图类指针。</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（4）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">&ldquo;old DIB in res XXX.ico; pass it through SDKPAINT&rdquo;错误</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">VC中使用图标发生的一个错误的解决办法：</span></span></span></font></font></p>
<p _mce_style="font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: #4d4d4d; font-family: Arial, Verdana, sans-serif; padding: 0px; border: 0px initial initial;" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); font-family: Arial, Verdana, sans-serif; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; ">错误提示类似于：</span></span></span></span></font></font></p>
<p _mce_style="font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: #4d4d4d; font-family: Arial, Verdana, sans-serif; padding: 0px; border: 0px initial initial;" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); font-family: Arial, Verdana, sans-serif; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">old DIB in res XXX.ico; pass it through SDKPAINT</span></span></span></span></span></font></font></p>
<p _mce_style="font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: #4d4d4d; font-family: Arial, Verdana, sans-serif; padding: 0px; border: 0px initial initial;" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); font-family: Arial, Verdana, sans-serif; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; ">这个错误通常发生在你用你自己的图标替换了原来的资源文件中的图标之后，据说是因为256色的图标和真彩色的图标之间的区别造成的。</span></span></span></span></font></font></p>
<p _mce_style="font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: #4d4d4d; font-family: Arial, Verdana, sans-serif; padding: 0px; border: 0px initial initial;" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); font-family: Arial, Verdana, sans-serif; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; ">解决办法也很简单：用&nbsp;<span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">IconWorkshop</span>&nbsp;<span _mce_style="color: #000000;" style="color: rgb(0, 0, 0); ">这个软件，将出错的图标中的256色以上的&ldquo;子图标&rdquo;</span>全部删除（众所周知，一个图标文件是包含N个子图标的，不同的大小，不同的色深），再保存，然后再在VC中重新编译，就应该可以通过了。</span></span></span></span></font></font></p>
<p _mce_style="font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: #4d4d4d; font-family: Arial, Verdana, sans-serif; padding: 0px; border: 0px initial initial;" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(77, 77, 77); font-family: Arial, Verdana, sans-serif; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">文章来源：http://www.codelast.com/</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（5）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">更改CTreeCtrl的结点的显示文字的字体</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">此处以一个CTreeCtrl的派生类为例，说明如何更改树结点的显示文字的字体：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">CXTTreeCtrl m_cTreeCtrl; &nbsp;</span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">&nbsp;//&nbsp;</span></span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">CXTTreeCtrl 为&nbsp;CTreeCtrl的派生类&nbsp;</span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">/* 改变item的显示效果 */</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">CXTLogFont logFont;<span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 字体对象，</span></span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">CXTLogFont 为&nbsp;LOGFONT的派生类</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">m_cTreeCtrl.GetFont()-&gt;GetLogFont(&amp;logFont);<span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 获取树控件原来的字体</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">_tcscpy(logFont.lfFaceName, _T(&quot;Arial&quot;));<span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 更改字体&nbsp;</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">logFont.lfHeight = 20;<span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 重新定义字体高度</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" color="#0000FF" style="color: rgb(0, 0, 255); ">m_cTreeCtrl.SetItemFont(hItem</span><span _mce_style="color: #0000ff;" color="#0000FF" style="color: rgb(0, 0, 255); ">, logFont);</span><span _mce_style="white-space: pre; color: #0000ff;" class="Apple-tab-span" style="white-space: pre; color: rgb(0, 0, 255); "> </span><span _mce_style="color: #006400;" style="color: rgb(0, 100, 0); ">// 设置item的字体</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">其中，hItem为</span>HTREEITEM类型，即你要操作的树结点的指针。</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">文章来源：http://www.codelast.com/</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（6）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">有关GDI+的一个错误：&ldquo;gdiplusimaging.h(156) : error C2146: 语法错误 : 缺少&ldquo;;&rdquo;(在标识符&ldquo;PixelFormat&rdquo;的前面)&rdquo;</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">此错误很搞笑，在gdiplusimaging.h文件中，有这样的代码段：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">class BitmapData</span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">{</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">public:</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp;UINT Width;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp;UINT Height;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp;INT Stride;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp;PixelFormat PixelFormat;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp;VOID* Scan0;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">&nbsp;&nbsp; &nbsp;UINT_PTR Reserved;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">};</span><br />
																																</span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">因此，摆明了是找不到</span><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">PixelFormat</span>的定义造成的。因此，添加了一堆与GDI+相关的include头文件之后，再编译，依然如故。最后经历了一番搜索，才发现犯了原则性错误：连GDI+的lib都没有引用到工程中，并且也没有在app类中进行GDI+的初始化，实在太笨了。解决方法如下：</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">①</span>在VC工程的项目属性的&ldquo;链接器&rdquo;&rarr;&ldquo;输入&rdquo;&rarr;&ldquo;附加依赖项&rdquo;中填上<span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">GdiPlus.lib</span>。它不是VC的默认链接库。</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">②</span>在应用程序类（CXXApp）的头文件中添加：</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">#include &lt;gdiplus.h&gt;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">using namespace Gdiplus;</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">③</span>在应用程序类（CXXApp）中添加一个类成员变量：</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">private:<br />
																																</span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">&nbsp;&nbsp; &nbsp; &nbsp;ULONG_PTR m_gdiplusToken;</span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">④</span>在应用程序类（CXXApp）的InitInstance()函数中添加：</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">GdiplusStartupInput gdiplusStartupInput;</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">GdiplusStartup(&amp;m_gdiplusToken, &amp;gdiplusStartupInput, NULL);</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">注意这两句一定要加在CWinApp::InitInstance() 的前面，否则会造成窗口不能自动重绘等问题。</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">⑤</span>重载应用程序类（CXXApp）的ExitInstance()函数，添加一句：</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">GdiplusShutdown(m_gdiplusToken);</span><span _mce_style="white-space: pre;" class="Apple-tab-span" style="white-space: pre; "> </span><span _mce_style="color: #008000;" style="color: rgb(0, 128, 0); ">// 关闭GDI+</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">搞定。再编译程序，前面的错误就不会再出现了。</span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">文章来源：http://www.codelast.com/</span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（7）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">更改了CEditView中的内容时，退出程序不弹出提示保存文档的对话框</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在CEditView中，有时候你不希望在输入了文字之后，再退出程序时程序自动提示你要保存文档，你可以这样做：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">重载CEditView派生类的&nbsp;<span _mce_style="color: #ff0000;" style="color: rgb(255, 0, 0); ">=EN_CHANGE</span>&nbsp;消息，在函数体中只写一句话：</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">void CXXXEditView::OnEnChange()</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">{</span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">GetEditCtrl().SetModify(FALSE);</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; "><span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); "><span _mce_style="font-family: arial, helvetica, sans-serif;" face="arial, helvetica, sans-serif" style="font-family: arial, helvetica, sans-serif; ">}</span><br />
																																</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; ">其中，</span>CXXXEditView是你的CEditView派生类。这样就能实现你想要的效果。</span></font></font></p>
<p _mce_style="font-size: 12px;" style="font-size: 12px; font-family: Simsun; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（8）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">更改与文档类相关联的视图类</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在怎样将一个你自己创建的视图类（例如<span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">class CMyRichEditView : public CRichEditView</span>）与SDI项目中的文档类相关联呢？在创建工程的时候，文档类关联到了创建工程时自动创建的视图类上，要更改这个关联，可以在工程的App类的<span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">InitInstance()</span>函数中，找到&ldquo;<span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">pDocTemplate = new CSingleDocTemplate</span>&rdquo;这处代码，你会看到&nbsp;<span _mce_style="color: #0000ff;" style="color: rgb(0, 0, 255); ">RUNTIME_CLASS(CXXXView))&nbsp;</span>这样的代码，没错，这就是将默认的CXXXView与文档类关联起来了，你只要改为自己创建的视图类就可以了。但是注意，你还需要将你的文档类改为继承自与你创建的视图类相对应的文档类，否则，编译不会出错，但是运行程序可能就会崩溃。</span></span></span></font></font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																&nbsp;</p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（9）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">从IWebBrowser2指针得到当前tab页的客户区句柄</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p style="font-size: medium; font-family: Simsun; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在得到了</span></span></span><span _mce_style="color: #0000ff; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(0, 0, 255); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">IWebBrowser2</span>指针后（假设&nbsp;<span _mce_style="color: #0000ff; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(0, 0, 255); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">IWebBrowser2* pWB</span>），可以用如下方法获取当前tab页的客户区句柄（具体可看<a href="http://msdn.microsoft.com/zh-cn/library/aa752126(v=VS.85).aspx" rel="noopener noreferrer" target="_blank">此MSDN</a>）：</font></font></p>
<p>
																																&nbsp;</p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; "><font class="Apple-style-span">IServiceProvider* pServiceProvider = NULL;</font></span></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; "><font class="Apple-style-span">if (SUCCEEDED(pWB-&gt;QueryInterface(</font></span></span>IID_IServiceProvider,&nbsp;(void**)&amp;pServiceProvider)))</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><span style="font-size: 14px; "><font class="Apple-style-span">{</font></span></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;IOleWindow* pWindow = NULL;</font></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;if (SUCCEEDED(pServiceProvider-&gt;QueryService(</font></span>SID_SShellBrowser,&nbsp;IID_IOleWindow,(void**)&amp;pWindow)))</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;{</font></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;</font></span>&nbsp;&nbsp; &nbsp; &nbsp;HWND hwndBrowser = NULL;</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;</font></span>&nbsp;&nbsp; &nbsp; &nbsp;if (SUCCEEDED(pWindow-&gt;GetWindow(&amp;hwndBrowser)))</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;{</font></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 100, 0); "><font class="Apple-style-span">&nbsp;&nbsp;&nbsp;</font></span>&nbsp;&nbsp; &nbsp; &nbsp;<span style="color: rgb(0, 100, 0); "><font class="Apple-style-span">&nbsp; &nbsp;</font></span>&nbsp;&nbsp; &nbsp; &nbsp;// 这里的 hwndBrowser就是TabWindowClass的句柄了</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;</font></span>&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;}</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;pWindow-&gt;Release();</font></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp; &nbsp;}</font></span></span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; "><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span">&nbsp;&nbsp; &nbsp;</font></span>&nbsp;&nbsp;pServiceProvider-&gt;Release();</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="font-family: arial, helvetica, sans-serif; ">}</span></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">为了更直观地说明获取的这个句柄对应的是浏览器窗口的哪一块区域，我截了一张CB网站的图来示例（点击可放大）：</font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><a href="http://www.codelast.com/wp-content/uploads/2011/04/browser_client.jpg" rel="noopener noreferrer" target="_blank"><img loading="lazy" decoding="async" alt="browser client" height="236" src="http://www.codelast.com/wp-content/uploads/2011/04/browser_client.jpg" style="cursor: default; " width="400" /></a></font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">你可能会注意到，上面的图中，最下方是包含IE<span style="color: rgb(255, 0, 0); ">状态栏</span>的，你可以手动隐藏掉（IE菜单的&ldquo;查看&rdquo;&rarr;&ldquo;工具栏&rdquo;&rarr;&ldquo;状态栏&rdquo;），或者编程隐藏掉（参考我下面的说明）。</font></p>
<p>
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif">文章来源：http://www.codelast.com/</font></p>
<p _mce_style="color: #222222; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(34, 34, 34); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-family: arial, helvetica, sans-serif;" style="font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">（9）<span _mce_style="background-color: #00ff00;" style="background-color: rgb(0, 255, 0); "><span _mce_style="color: #800080;" style="color: rgb(128, 0, 128); ">利用IWebBrowser2指针隐藏浏览器的状态栏</span></span></span></span>：</span></span></span></span></span></span></font></font></p>
<p style="font-size: medium; font-family: Simsun; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 12px; color: #000000; font-family: arial, helvetica, sans-serif;" color="#000000" face="arial, helvetica, sans-serif" style="font-size: 12px; color: rgb(0, 0, 0); font-family: arial, helvetica, sans-serif; "><span _mce_style="font-size: 14px;" style="font-size: 14px; ">在得到了</span></span></span><span _mce_style="color: #0000ff; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(0, 0, 255); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">IWebBrowser2</span>指针后（假设&nbsp;<span _mce_style="color: #0000ff; font-family: Arial, Verdana, sans-serif; font-size: 12px;" style="color: rgb(0, 0, 255); font-family: Arial, Verdana, sans-serif; font-size: 12px; ">IWebBrowser2* pWB</span>），可以用如下方法使浏览器的状态栏隐藏起来：</font></font></p>
<p style="font-size: medium; font-family: Simsun; ">
																																<font class="Apple-style-span" color="#000000" face="arial, helvetica, sans-serif"><span style="color: rgb(0, 0, 255); "><font class="Apple-style-span" face="arial, helvetica, sans-serif">pWB-&gt;put_StatusBar(VARIANT_FALSE);</font></span></font></p>
<div>
																																<br />
																																<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
																																<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
																																转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
																																感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
																																	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>shell脚本因文件编码问题不能正确执行的问题</title>
		<link>https://www.codelast.com/shell%e8%84%9a%e6%9c%ac%e5%9b%a0%e6%96%87%e4%bb%b6%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98%e4%b8%8d%e8%83%bd%e6%ad%a3%e7%a1%ae%e6%89%a7%e8%a1%8c%e7%9a%84%e9%97%ae%e9%a2%98/</link>
					<comments>https://www.codelast.com/shell%e8%84%9a%e6%9c%ac%e5%9b%a0%e6%96%87%e4%bb%b6%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98%e4%b8%8d%e8%83%bd%e6%ad%a3%e7%a1%ae%e6%89%a7%e8%a1%8c%e7%9a%84%e9%97%ae%e9%a2%98/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Tue, 14 Dec 2010 12:26:44 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[ANSI]]></category>
		<category><![CDATA[BOM]]></category>
		<category><![CDATA[cannot execute binary file]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[ps]]></category>
		<category><![CDATA[SecureCRT]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[UltraEdit]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[UTF8]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[去除]]></category>
		<category><![CDATA[文件]]></category>
		<category><![CDATA[汉字]]></category>
		<category><![CDATA[编码]]></category>
		<category><![CDATA[错误]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=912</guid>

					<description><![CDATA[<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">遇到一例因shell文件的编码问题导致执行后不能得到正确结果的问题。一般来说脚本中不会带有中文，不过有时候例外，例如你要查找一个文本中的字符串，cat test.txt &#124; grep &#34;汽车&#34; &#160;这样的命令，如果文件编码不对，就可能得不到正确结果。</span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><span id="more-912"></span></span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">我的问题是：有一个脚本，无论怎么执行结果都不对，但是我把它里面的关键的几句话单独拿出来，在SecureCRT终端下依次执行，最后得到的结果却正确，奇了。于是我终于想起来可能有中文的影响，在终端里查看shell脚本的内容，发现不能正确显示出一处中文（乱码了），可见正是这处乱码，导致了grep输出的结果不正确。但是在SecureCRT终端下，无论是用vi还是emacs，我都无法向文件中输入中文（上屏的中文全都乱码），于是怀疑是文件编码问题。</span></span></p>
<p>
	<span style="font-size: 14px; color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" style="font-size: 14px; " target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">然后我就将脚本下载到Windows下，用UltraEdit将其另存为UTF-8格式，再上传到Linux中，再执行脚本，竟然报错：<strong><span style="color:#f00;">cannot execute binary file</span></strong></span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">这种问题的原因之一是脚本中有不可识别字符。于是我再用UltraEdit，将文件重新存为&#8220;<strong><span style="color:#00f;">UTF-8 无 BOM</span></strong>&#8221;格式（如下图），再上传到Linux中，就可以正确执行了。</span></span></p>
<p style="text-align: center; ">
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><img decoding="async" alt="另存为UTF-8 无BOM格式" src="http://www.codelast.com/wp-content/uploads/2011/11/utf-8_no_bom_file_format.jpg" style="width: 353px; height: 103px; " /><br />
	</span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">网上还有很多文章，介绍了如何用emacs，vi 或 vim更改文件编码的方法，应该也是可以的，但用UltraEdit最方便。</span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">另外再记一个小技巧：用 ps -ef &#124; grep XXX 命令查看系统中是否存在某个进程的时候，输出结果中会包含有grep命令这一行，例如：</span></span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ps -ef &#124; grep httpd
</pre>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">部分输出为：</span></span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
root     27154 27129  0 20:35 pts/3    00:00:00 grep httpd
daemon   28834  2955  3 13:35 ?</pre>&#8230; <a href="https://www.codelast.com/shell%e8%84%9a%e6%9c%ac%e5%9b%a0%e6%96%87%e4%bb%b6%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98%e4%b8%8d%e8%83%bd%e6%ad%a3%e7%a1%ae%e6%89%a7%e8%a1%8c%e7%9a%84%e9%97%ae%e9%a2%98/" class="read-more">Read More </a>]]></description>
										<content:encoded><![CDATA[<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">遇到一例因shell文件的编码问题导致执行后不能得到正确结果的问题。一般来说脚本中不会带有中文，不过有时候例外，例如你要查找一个文本中的字符串，cat test.txt | grep &quot;汽车&quot; &nbsp;这样的命令，如果文件编码不对，就可能得不到正确结果。</span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><span id="more-912"></span></span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">我的问题是：有一个脚本，无论怎么执行结果都不对，但是我把它里面的关键的几句话单独拿出来，在SecureCRT终端下依次执行，最后得到的结果却正确，奇了。于是我终于想起来可能有中文的影响，在终端里查看shell脚本的内容，发现不能正确显示出一处中文（乱码了），可见正是这处乱码，导致了grep输出的结果不正确。但是在SecureCRT终端下，无论是用vi还是emacs，我都无法向文件中输入中文（上屏的中文全都乱码），于是怀疑是文件编码问题。</span></span></p>
<p>
	<span style="font-size: 14px; color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" style="font-size: 14px; " target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">然后我就将脚本下载到Windows下，用UltraEdit将其另存为UTF-8格式，再上传到Linux中，再执行脚本，竟然报错：<strong><span style="color:#f00;">cannot execute binary file</span></strong></span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">这种问题的原因之一是脚本中有不可识别字符。于是我再用UltraEdit，将文件重新存为&ldquo;<strong><span style="color:#00f;">UTF-8 无 BOM</span></strong>&rdquo;格式（如下图），再上传到Linux中，就可以正确执行了。</span></span></p>
<p style="text-align: center; ">
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><img decoding="async" alt="另存为UTF-8 无BOM格式" src="http://www.codelast.com/wp-content/uploads/2011/11/utf-8_no_bom_file_format.jpg" style="width: 353px; height: 103px; " /><br />
	</span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">网上还有很多文章，介绍了如何用emacs，vi 或 vim更改文件编码的方法，应该也是可以的，但用UltraEdit最方便。</span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><span style="color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></span></span></p>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">另外再记一个小技巧：用 ps -ef | grep XXX 命令查看系统中是否存在某个进程的时候，输出结果中会包含有grep命令这一行，例如：</span></span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ps -ef | grep httpd
</pre>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;">部分输出为：</span></span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
root     27154 27129  0 20:35 pts/3    00:00:00 grep httpd
daemon   28834  2955  3 13:35 ?        00:16:23 /usr/local/apache2/bin/httpd -k start
</pre>
<p>
	<span style="font-size: 14px; ">可见第一行是干扰，我们不想看到它，那么可以有两种方法来过滤掉这一行：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ps -ef | grep httpd | grep -v grep
</pre>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><font class="Apple-style-span">或：</font></span></span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ps -Ao pid,comm,args | grep httpd
</pre>
<p>
	<span style="font-size:14px;"><span style="font-family:微软雅黑;"><font class="Apple-style-span">这种方法输出的内容中只包含进程号、进程名、调用参数，具体使用可man ps。</font></span></span></p>
<p>
	<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushShell.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/shell%e8%84%9a%e6%9c%ac%e5%9b%a0%e6%96%87%e4%bb%b6%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98%e4%b8%8d%e8%83%bd%e6%ad%a3%e7%a1%ae%e6%89%a7%e8%a1%8c%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
