﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-&lt;font color="#ff8000"&gt;&amp;nbsp&amp;nbsp&amp;nbspC++&amp;nbsp技术中心&lt;/font&gt;-随笔分类-Linux 操作</title><link>http://www.cppblog.com/API/category/16118.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 26 Nov 2013 08:40:48 GMT</lastBuildDate><pubDate>Tue, 26 Nov 2013 08:40:48 GMT</pubDate><ttl>60</ttl><item><title>flash 843</title><link>http://www.cppblog.com/API/archive/2013/11/26/204459.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Tue, 26 Nov 2013 08:33:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/11/26/204459.html</guid><wfw:comment>http://www.cppblog.com/API/comments/204459.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/11/26/204459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/204459.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/204459.html</trackback:ping><description><![CDATA[&nbsp;自从Adobe Flash Player升级到9.0.124后，由于安全策略的修改，原来的socket连接方式将不能被使用，而必须采用新的安全策略方式来验证，具体的过程如 下：<br />1.首先检测服务端的843端口是否提供安全策略文件；<br />2.如果步骤1没有检测到，则检测AS代码中是否使用了Security.loadPolicyFile(xmlsocket://)手段进行安全验证， 如果没有则进行第3步验证；<br />3.在目标端口检测安全策略文件<br /><br />如果以上3步都检测失败，则flash player拒绝连接目标服务器。socket连接失败。socket端大体思路是：监听843端口和目标端口，在flash player第一次连接时，会先连接843端口，并且发送"&lt;policy-file-request/&gt; "作为验证标志，如果843提供安全策略，则843端口将策略文件用字符串方式返回flash player , 如果安全策略文件中运行flash player连接目标端口，则843端口关闭，flash player自行启动一个socket连接目标端口。到此为止，socket连接成功。
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;cross-domain-policy&nbsp;SYSTEM&nbsp;"/xml/dtds/cross-domain-policy.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Policy&nbsp;file&nbsp;for&nbsp;xmlsocket://socks.example.com&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cross-domain-policy</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;This&nbsp;is&nbsp;a&nbsp;master-policy&nbsp;file&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">site-control&nbsp;</span><span style="color: #ff0000">permitted-cross-domain-policies</span><span style="color: #0000ff">="master-only"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Instead&nbsp;of&nbsp;setting&nbsp;to-ports="*",<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />administrators&nbsp;can&nbsp;use&nbsp;ranges&nbsp;and&nbsp;commas&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;This&nbsp;will&nbsp;allow&nbsp;access&nbsp;to&nbsp;ports&nbsp;123,&nbsp;456,&nbsp;457,&nbsp;and&nbsp;458&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">allow-access-from&nbsp;</span><span style="color: #ff0000">domain</span><span style="color: #0000ff">="swf.example.com"</span><span style="color: #ff0000">&nbsp;to-ports</span><span style="color: #0000ff">="123,456-458"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">cross-domain-policy</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div><br />Flash/Flex也支持基于Socket的网络连接 ，服务器端可以是C++,VB,C#,Java等任一语言开发。监听一个网络端口便可以接收到Flash/Flex开发的客户端的连接。 <br /><br /><br /><br />ActionScript 3.0提供了通过Socket连接的方式与服务器端通信。这点是超越传统B/S结构的重要特征。这样使得网络通信可以即时连接，避免了HTTP协议无状态 连接的弊病。ActionScript 3.0使用XMLSocket类进行连接。需要注意的是使用XMLSocket类进行Socket连接时，不能自动穿过防火墙。要想穿过防火墙连接，则需 要使用基于HTTP协议的RTMP协议。 <br /><br /><img src ="http://www.cppblog.com/API/aggbug/204459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-11-26 16:33 <a href="http://www.cppblog.com/API/archive/2013/11/26/204459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOP中只查看某个或某些进程的信息</title><link>http://www.cppblog.com/API/archive/2013/09/26/203438.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Thu, 26 Sep 2013 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/09/26/203438.html</guid><wfw:comment>http://www.cppblog.com/API/comments/203438.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/09/26/203438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/203438.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/203438.html</trackback:ping><description><![CDATA[例：mysqld的信息<br />(1)得到mysqld进程的pid<br /><span style="color: rgb(0,1,2)">[root@6 ~]# pidof mysqld</span><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">21538</span><br /><br />(2)top指定查看PID<br />[root@6 ~]# top -p 21538<br /><br /><span style="color: rgb(0,1,255)">top - 09:15:06 up 30 days, 53 min, 3 users, load average: 0.07, 0.22, 0.23</span><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie</span><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">Cpu(s): 3.0%us, 6.9%sy, 0.2%ni, 89.4%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st</span><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">Mem: 1035140k total, 994888k used, 40252k free, 383072k buffers</span><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">Swap: 2048248k total, 80k used, 2048168k free, 237456k cached</span><br style="color: rgb(0,1,255)" /><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND</span><br style="color: rgb(0,1,255)" /><span style="color: rgb(0,1,255)">21538 mysql 15 0 146m 21m 4372 S 0.0 2.1 3:03.84 mysqld</span><br /><br /><br />2、查看某些进程的信息<br />例：mysqld/httpd的信息<br />(1)得到mysqld/httpd进程的pid<br />[root@6 ~]# pidof mysqld<br /><span style="color: rgb(0,1,255)">21538</span><br /><br />[root@6 ~]# pidof httpd<br /><span style="color: rgb(0,1,255)">31117 31116 31115 31114</span><br /><br />(2)top指定查看PID<br />[root@6 ~]# top -p 21538,31117,31116,31115,31114<br /><img src ="http://www.cppblog.com/API/aggbug/203438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-09-26 11:08 <a href="http://www.cppblog.com/API/archive/2013/09/26/203438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用命令</title><link>http://www.cppblog.com/API/archive/2013/09/09/203098.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Mon, 09 Sep 2013 01:42:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/09/09/203098.html</guid><wfw:comment>http://www.cppblog.com/API/comments/203098.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/09/09/203098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/203098.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/203098.html</trackback:ping><description><![CDATA[1.hostname<br />运行hostname命令就是了,如果你没有设置过<a class="inner-link decor-dotted" href="http://zhidao.baidu.com/search?word=主机名&amp;fr=qb_search_exp&amp;ie=gbk" rel="nofollow" target="_blank" data-word="0">主机名</a>,一般会显示<br />localhost.localdomain<br />其中localhost表示<a class="inner-link decor-dotted" href="http://zhidao.baidu.com/search?word=主机名&amp;fr=qb_search_exp&amp;ie=gbk" rel="nofollow" target="_blank" data-word="0">主机名</a>,localdomain为域名,这是一个完全域名(FQDN,即"<a class="inner-link decor-dotted" href="http://zhidao.baidu.com/search?word=主机名&amp;fr=qb_search_exp&amp;ie=gbk" rel="nofollow" target="_blank" data-word="0">主机名</a>.域名")的形式<br /><br /><br /><img src ="http://www.cppblog.com/API/aggbug/203098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-09-09 09:42 <a href="http://www.cppblog.com/API/archive/2013/09/09/203098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 5.6.13安装</title><link>http://www.cppblog.com/API/archive/2013/09/01/202934.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sun, 01 Sep 2013 15:15:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/09/01/202934.html</guid><wfw:comment>http://www.cppblog.com/API/comments/202934.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/09/01/202934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/202934.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/202934.html</trackback:ping><description><![CDATA[<div>1.下载mysql<br />&nbsp; 选择源代码版（Generic Linux ...Compressed TAR Archive）<br /><br />2.安装必要的组件&nbsp; 
<p>yum -y install&nbsp; gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake<br /><br /><br />3. </p>
<p>groupadd mysql</p>
<p>useradd -r -g mysql mysql<br />passwd mysql<br />tar -zxvf mysql*.tar.gz<br />cd mysql-5.6.13<br />cmake .<br />make;make install<br /><br />4.安装路径默认在/usr/local/mysql下<br /></p>
<p>chown -R mysql.mysql /usr/local/mysql</p>
<p>cd /usr/local/mysql/scripts</p>
<p>./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data<br /><br /></p>
<p>&nbsp;cd /usr/local/mysql/support-files</p>
<p>&nbsp;cp&nbsp; mysql.server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /etc/init.d/mysql</p>
<p>cp my-default.cnf /etc/my.cnf<br /><br />....................<br />chkconfig -add mysql<br />chkconfig mysql on<br />service mysql start<br /><br /><br /></p></div><img src ="http://www.cppblog.com/API/aggbug/202934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-09-01 23:15 <a href="http://www.cppblog.com/API/archive/2013/09/01/202934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下如何查看高CPU占用率线程 </title><link>http://www.cppblog.com/API/archive/2013/08/31/202894.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sat, 31 Aug 2013 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/08/31/202894.html</guid><wfw:comment>http://www.cppblog.com/API/comments/202894.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/08/31/202894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/202894.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/202894.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10px">在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.)，可以显示每个 cpu 的利用率。但是无法显示每个线程的 cpu 利用率情况，<br />这时就可能出现这种情况，总的 cpu 利用率中 user 或 system 很高，但是用进程的 cpu 占用率进行排序时，没有进程的 user 或 system 与之对应。</span></p>
<p><span style="font-size: 10px">可以用下面的命令将 cpu 占用率高的线程找出来:<br />$ ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu</span></p>
<p><span style="font-size: 10px">这个命令首先指定参数'H'，显示线程相关的信息，格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd，然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。</span></p><img src ="http://www.cppblog.com/API/aggbug/202894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-08-31 17:36 <a href="http://www.cppblog.com/API/archive/2013/08/31/202894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装cinnamon</title><link>http://www.cppblog.com/API/archive/2013/06/08/200876.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sat, 08 Jun 2013 07:15:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/06/08/200876.html</guid><wfw:comment>http://www.cppblog.com/API/comments/200876.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/06/08/200876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/200876.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/200876.html</trackback:ping><description><![CDATA[<div>1.yum search cinnamon<br />&nbsp;将搜出来的结果全部安装<br /><br />2.<!--StartFragment -->

<div>yum&nbsp;install&nbsp;gnome-tweak-tool </div></div><img src ="http://www.cppblog.com/API/aggbug/200876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-06-08 15:15 <a href="http://www.cppblog.com/API/archive/2013/06/08/200876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows和linux双系统删除linux</title><link>http://www.cppblog.com/API/archive/2013/01/20/197424.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sun, 20 Jan 2013 06:52:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2013/01/20/197424.html</guid><wfw:comment>http://www.cppblog.com/API/comments/197424.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2013/01/20/197424.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/197424.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/197424.html</trackback:ping><description><![CDATA[<span style="line-height: 21px; font-family: Verdana, 'Trebuchet MS', Tahoma, Georgia, Helvetica">&nbsp; 
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">装了Windows和linux双系统的朋友，在后期要删除linux是个比较头痛的问题，因为MBR已经被linux接管，本文的目的是如何在windows 和linux双系统下，简单，完美地卸载linux。</p>
<h2 style="padding-bottom: 0px; line-height: 1.5em; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; font-family: Tahoma, 'Trebuchet MS', Verdana, Georgia, Helvetica; border-top-width: 0px; border-bottom-width: 0px; color: rgb(85,85,85); clear: both; font-size: 12px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; text-shadow: rgb(221, 221, 221) 0px 0px 1px; background-origin: initial; background-clip: initial">使用MbrFix.exe卸载Windows双系统Linux</h2>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">不用Windows系统安装盘，不用安装矮人DOS工具箱也可以很简单地实现卸载Linux。双系统卸载Linux的主要问题是当在windows中将linux 分区直接格式化之后，Grub系统引导程序也会被同时删除，所以导致重启后无法进入Windows 或Linux任何一个系统。</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><span style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial" id="more-456"></span></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">因此卸载linux之前，先修复MBR，然后再删除Linux分区就可以了。而MbrFix.exe 就是这样一个Windows 修复MBR的应用程序软件，MbrFix.exe 不仅支持Windows XP，还支持32位或64位的Windows NT, Windows 2000,Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7 和 Windows PE系统。</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">使用MbrFix.exe卸载Linux的步骤如下：</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">1.&nbsp;<strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial">下载MbrFix.exe</strong></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">首先进入Windows 操作系统，进入www.sysint.no 网站<a style="padding-bottom: 1px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 1px; padding-right: 1px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(191,81,76); vertical-align: baseline; border-left-width: 0px; text-decoration: none; padding-top: 0px; background-origin: initial; background-clip: initial" href="http://www.sysint.no/en/Download.aspx" rel="nofollow" target="_blank">下载MbrFix.exe</a>，或者从(<a title="下载" href="/Files/API/mbrfix.zip">下载</a>)从上往下数第四个软件即是；</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">下载完成后解压zip压缩包，将MbrFix.exe 剪切到C盘(系统盘)；</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">（如果是64位的系统，请用MbrFix64.exe）</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><a style="background-image: none; padding-bottom: 0px; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(191,81,76); vertical-align: baseline; border-left-width: 0px; text-decoration: none; padding-top: 0px; background-origin: initial; background-clip: initial" href="http://images.blhekai.com/pictures/2011/03/a.png" rel="nofollow"><img style="border-bottom: rgb(181,181,181) 1px solid; border-left: rgb(181,181,181) 1px solid; padding-bottom: 4px; background-color: rgb(227,227,227); margin: 0px; padding-left: 4px; width: auto; padding-right: 4px; display: inline; max-width: 570px; height: auto; vertical-align: baseline; border-top: rgb(181,181,181) 1px solid; border-right: rgb(181,181,181) 1px solid; padding-top: 4px; background-origin: initial; background-clip: initial" alt="" src="http://images.blhekai.com/pictures/2011/03/a-300x194.png" width="300" height="194" __1358664592515__="ev_4815313005" original="http://images.blhekai.com/pictures/2011/03/a-300x194.png" /></a></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><font color="#ff0000" size="3">以管理员身份运行</font></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">开始&#8211;&gt;运行&#8211;&gt;cmd&#8211;<code style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: 'Lucida Console', Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">cd \</code>命令进入C盘符&#8211;&gt;运行命令： &nbsp;<strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial"><code style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: 'Lucida Console', Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">MbrFix /drive 0 fixmbr /yes&nbsp;</code></strong>&#8211;&gt;Enter回车；</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">（如果是Vista系统，运行命令： &nbsp;<strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial"><code style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: 'Lucida Console', Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">MbrFix /drive 0 fixmbr /vista /yes&nbsp;</code></strong>&#8211;&gt;Enter回车）</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">（如果是Win7系统，运行命令： &nbsp;<strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial"><code style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: 'Lucida Console', Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">MbrFix /drive 0 fixmbr /win7 /yes&nbsp;</code></strong>&#8211;&gt;Enter回车）</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><a style="background-image: none; padding-bottom: 0px; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(191,81,76); vertical-align: baseline; border-left-width: 0px; text-decoration: none; padding-top: 0px; background-origin: initial; background-clip: initial" href="http://images.blhekai.com/pictures/2011/03/b.png" rel="nofollow"><img style="border-bottom: rgb(181,181,181) 1px solid; border-left: rgb(181,181,181) 1px solid; padding-bottom: 4px; background-color: rgb(227,227,227); margin: 0px; padding-left: 4px; width: auto; padding-right: 4px; display: inline; max-width: 570px; height: auto; vertical-align: baseline; border-top: rgb(181,181,181) 1px solid; border-right: rgb(181,181,181) 1px solid; padding-top: 4px; background-origin: initial; background-clip: initial" alt="" src="http://images.blhekai.com/pictures/2011/03/b-300x193.png" width="300" height="193" __1358664592515__="ev_1670195293" original="http://images.blhekai.com/pictures/2011/03/b-300x193.png" /></a></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">这样MBR修复就完成了，没有任何提示（没有消息就是最好的消息）。接下来直接删除linux分区就可以了。</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">2.&nbsp;<strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial">格式化删除 Linux分区</strong></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">以Win7系统为例：点击&#8220;计算机&#8221;右键&#8211;&gt;管理&#8211;&gt;磁盘管理&#8211;&gt;看到几个没有盘符名称的分区(看准哦，不要将Windows 分区给误删了。)&#8211;&gt;右键&#8211;&gt;删除逻辑分区。</p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><a style="background-image: none; padding-bottom: 0px; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: #bf514c; vertical-align: baseline; border-left-width: 0px; text-decoration: none; padding-top: 0px; background-origin: initial; background-clip: initial" title="mbrfix程序" href="/Files/API/mbrfix.zip" rel="nofollow"><img style="border-bottom: rgb(181,181,181) 1px solid; border-left: rgb(181,181,181) 1px solid; padding-bottom: 4px; background-color: rgb(227,227,227); margin: 0px; padding-left: 4px; width: auto; padding-right: 4px; display: inline; max-width: 570px; height: auto; vertical-align: baseline; border-top: rgb(181,181,181) 1px solid; border-right: rgb(181,181,181) 1px solid; padding-top: 4px; background-origin: initial; background-clip: initial" alt="" src="http://images.blhekai.com/pictures/2011/03/c-300x234.jpg" width="300" height="234" __1358664592515__="ev_8194534872" original="http://images.blhekai.com/pictures/2011/03/c-300x234.jpg" /></a></p>
<p style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px 0px 20px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; color: rgb(51,51,51); font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial">重启电脑，Grub 已经不复存在，双系统Linux 卸载完成，电脑启动自动进入Windows系统&#8230;.</p></span><img src ="http://www.cppblog.com/API/aggbug/197424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2013-01-20 14:52 <a href="http://www.cppblog.com/API/archive/2013/01/20/197424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos 使用fedora源</title><link>http://www.cppblog.com/API/archive/2012/12/31/196882.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Mon, 31 Dec 2012 15:06:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/12/31/196882.html</guid><wfw:comment>http://www.cppblog.com/API/comments/196882.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/12/31/196882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/196882.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/196882.html</trackback:ping><description><![CDATA[<div>1. <a href="http://fedoraproject.org/wiki/EPEL"><font color="#000000">可以从该处理下 </font>http://fedoraproject.org/wiki/EPEL</a>包<br />&nbsp; <a href="http://dl.fedoraproject.org/pub/epel/">http://dl.fedoraproject.org/pub/epel/</a>&nbsp;目录下查找：<br />&nbsp; <a href="http://dl.fedoraproject.org/pub/epel/6/x86_64/">http://dl.fedoraproject.org/pub/epel/6/x86_64/</a>下<br /><br /><br />&nbsp;&nbsp;rpm -ivh <a href="http://dl.fedoraproject.org/pub/epel/6/x86_64/">http://dl.fedoraproject.org/pub/epel/6/x86_64/</a><a href="http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm">epel-release-6-8.noarch.rpm</a>&nbsp;<br />2. <strong>导入key：<br /></strong>rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6<br /><br /><br />3. yum install yum-priorities<br /><br /></div><img src ="http://www.cppblog.com/API/aggbug/196882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-12-31 23:06 <a href="http://www.cppblog.com/API/archive/2012/12/31/196882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Virtualbox下linux与windows共享目录</title><link>http://www.cppblog.com/API/archive/2012/12/31/196879.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Mon, 31 Dec 2012 12:21:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/12/31/196879.html</guid><wfw:comment>http://www.cppblog.com/API/comments/196879.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/12/31/196879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/196879.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/196879.html</trackback:ping><description><![CDATA[<div>1. 在VirtualBox的菜单里选择&#8220;设备(Devices)&#8221; -&gt; &#8220;安装增强功能包(Install Guest Additions)&#8221;。<br /><br />2. cd /media/cdom0 
<p><font style="font-family: 宋体; font-size: 14px">　 sudo ./VboxLinuxAdditions.run</font></p>
<p><font style="font-family: 宋体; font-size: 14px">　 开始安装工具包。安装完毕后，重启linux。<br /><br />3. 重启完成后点击&#8220;设备(Devices)&#8221; -&gt; 共享文档夹(Shared Folders)菜单，添加一个共享文档夹，选项固定和临时是指该文档夹是否是持久的。<br />&nbsp;&nbsp; 共享名能够任取一个自己喜欢的，比如&#8220;linuxshare&#8221;，尽量使用英文名称。<br /><br />4.&nbsp;&nbsp; mkdir /mnt/shared </p>
<p><font style="font-family: 宋体; font-size: 14px">　　sudo mount -t vboxsf&nbsp;linuxshare /mnt/shared</font></p>
<p>5. 假如您不想每一次都手动挂载，能够在/etc/fstab中添加一项 </p>
<p><font style="font-family: 宋体; font-size: 14px">　&nbsp; linuxshare&nbsp;/mnt/shared vboxsf rw，gid=100，uid=1000，auto 0 0</font></p>
<p><font style="font-family: 宋体; font-size: 14px">　　这样就能够自动挂载了。<br /><br />6.注意： </p>
<p><font style="font-family: 宋体; font-size: 14px">　　共享文档夹的名称千万不要和挂载点的名称相同。比如，上面的挂载点是/mnt/shared，假如共享文档夹的名字也是shared的话，在挂载的时候就会出现如下的错误信息(看http：//www.virtualbox.org/ticket/2265)：</font></p>
<p><font style="font-family: 宋体; font-size: 14px">　　/sbin/mount.vboxsf： mounting failed with the error： Protocol error</font></p>
<p><font style="font-family: 宋体; font-size: 14px">　　原因分析能够看Tips on running Sun <strong>Virtualbox</strong>的Shared</font></p>
<p></font></p>
<p>&nbsp;&nbsp; </font></p></div><img src ="http://www.cppblog.com/API/aggbug/196879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-12-31 20:21 <a href="http://www.cppblog.com/API/archive/2012/12/31/196879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DDD安装</title><link>http://www.cppblog.com/API/archive/2012/08/25/188256.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sat, 25 Aug 2012 08:46:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/08/25/188256.html</guid><wfw:comment>http://www.cppblog.com/API/comments/188256.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/08/25/188256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/188256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/188256.html</trackback:ping><description><![CDATA[<ol><li><span style="line-height: 19px">从这里下载<a href="http://ftp.gnu.org/gnu/ddd/">http://ftp.gnu.org/gnu/ddd/</a>合适的包</span></li><li><span style="line-height: 19px">这里得到的是<span style="color: rgb(255,0,0)">*.src.rpm</span>，解压出来里面的源码包，进入到目录下</span></li><li><span style="line-height: 19px"><span style="color: rgb(255,0,0)">#./configure &amp;&amp; make</span> 可能会出现错误，错误的内容大概是是说<span style="color: rgb(255,0,0)">EOF</span>没有声明，文件是<span style="color: rgb(255,0,0)">strclass.C</span></span></li><li><span style="color: rgb(255,0,0)"><span style="line-height: 19px"><span style="line-height: 19px"># </span></span>find . -name strclass.C</span> 找到文件的路径，然后vim编辑，在头部加入<span style="color: rgb(255,0,0)">#define EOF -1</span></li><li>重新编译#make</li><li><span style="color: rgb(255,0,0)">#make install</span></li></ol><img src ="http://www.cppblog.com/API/aggbug/188256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-08-25 16:46 <a href="http://www.cppblog.com/API/archive/2012/08/25/188256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装insight</title><link>http://www.cppblog.com/API/archive/2012/08/21/187885.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Tue, 21 Aug 2012 14:35:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/08/21/187885.html</guid><wfw:comment>http://www.cppblog.com/API/comments/187885.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/08/21/187885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/187885.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/187885.html</trackback:ping><description><![CDATA[<div>1.下载<a href="ftp://sourceware.org/pub/insight/releases/insight-6.8-1a.tar.bz2">insight-6.8-1a.tar.bz2</a><br /><a href="ftp://sourceware.org/pub/insight/releases">ftp://sourceware.org/pub/insight/releases</a><br />&nbsp;<br />2. &nbsp;1) 安装<span style="color: #ff0000">X界面开发库</span> sudo <span style="color: #ff0000">apt-get install libx11-dev （包启在libgd2-xpm-dev）</span> 
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2) 安装安装<span style="color: #ff0000">termcap</span>库（gdb需要）sudo <span style="color: #ff0000">apt-get install libncurses5-dev</span></p><br />3.编译安装<br /><br />&nbsp;&nbsp; &nbsp; ./configure <span style="color: #ff0000">--prefix=/usr/local/insight (也可以不有）</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sudo make install <br /><br />4. 编译与Insight配对的gdbserver<br /># cd insight-6.8-1/gdb/gdbserver<br /># ./configure <br /># make<br />#make install<br />在insight-6.8-1/gdb/gdbserver目录下生成gdbserver工具。<br /><br /><br />5.错误解决<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp; 编译过程中，如果出现以下错误，</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; linux-nat.c: In function &#8216;linux_nat_info_proc_cmd&#8217;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; linux-nat.c:2879: error: ignoring return value of &#8216;fgets&#8217;, declared with attribute warn_unused_result<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make[2]: *** [linux-nat.o] 错误 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make[2]:正在离开目录 `/home/kdjie/insight-6.8-1/gdb'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make[1]: *** [all-gdb] 错误 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make[1]:正在离开目录 `/home/kdjie/insight-6.8-1'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make: *** [all] 错误 2</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这时请进入<span style="color: #ff0000">gdb目录</span>，找到生成的<span style="color: #ff0000">Makefile</span>文件，修改这一行为</p>
<p><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WERROR_CFLAGS = #-Werror</span></p>
<p><span style="color: #00ff00">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果编译不过，可能还需要修改:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd insight-6-8-1/gdb<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vim&nbsp;i386-linux-nat.c<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在头文件部分加上：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include "i387-tdep.h"&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp; <br /><br /><br /></p>
<p>&nbsp;&nbsp; 2）在编译make以后出现如下错误<br />eval.c: 在函数&#8216;evaluate_subexp_standard&#8217;中:<br />eval.c:1705: 错误：此函数中的&#8216;subscript_array&#8217;在使用前可能未初始化<br />make[2]: *** [eval.o] 错误 1<br />make[2]: Leaving directory `/root/下载/insight-6.8/gdb'<br />make[1]: *** [install-gdb] 错误 2<br />make[1]: Leaving directory `/root/下载/insight-6.8'<br />make: *** [install] 错误 2</p>
<p>&nbsp;&nbsp; 修改gdb/eval.c文件1644行 <br />&nbsp;&nbsp;&nbsp;&nbsp; int subscript_array[MAX_FORTRAN_DIMS] = {0}; <br />&nbsp;&nbsp; 修改以后在从make开始.这样就安装成功了。。。。。</p>
<p><br /><br />5.运行<br />&nbsp; /usr/local/insight/bin/insight <br />注意必需全路径</p></div><img src ="http://www.cppblog.com/API/aggbug/187885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-08-21 22:35 <a href="http://www.cppblog.com/API/archive/2012/08/21/187885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>共享库的配置</title><link>http://www.cppblog.com/API/archive/2012/08/16/187418.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Thu, 16 Aug 2012 13:31:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/08/16/187418.html</guid><wfw:comment>http://www.cppblog.com/API/comments/187418.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/08/16/187418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/187418.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/187418.html</trackback:ping><description><![CDATA[<div>1.在&nbsp;/etc/ld.so.conf 中加入so的路径<br />比如：<br />/mnt/hgfs/Source/souceGoogle/trunk/znet/bin<br />并运行：<br />ldconfig<br /><br /></div><img src ="http://www.cppblog.com/API/aggbug/187418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-08-16 21:31 <a href="http://www.cppblog.com/API/archive/2012/08/16/187418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CentOS安装crontab及使用方法</title><link>http://www.cppblog.com/API/archive/2012/03/28/169237.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Wed, 28 Mar 2012 00:49:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/03/28/169237.html</guid><wfw:comment>http://www.cppblog.com/API/comments/169237.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/03/28/169237.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/169237.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/169237.html</trackback:ping><description><![CDATA[<div class="entry-content">
<p>安装crontab:<code><span style="color: #000000"> yum&nbsp;install&nbsp;crontabs</span> </code><br />说明：<br /><code><span style="color: #000000">/sbin/service&nbsp;crond&nbsp;start&nbsp;//启动服务 <br />/sbin/service&nbsp;crond&nbsp;stop&nbsp;//关闭服务 <br />/sbin/service&nbsp;crond&nbsp;restart&nbsp;//重启服务 <br />/sbin/service&nbsp;crond&nbsp;reload&nbsp;//重新载入配置</span> </code><!--more--><br />查看crontab服务状态：<code><span style="color: #000000"> service&nbsp;crond&nbsp;status</span> </code><br />手动启动crontab服务：<code><span style="color: #000000"> service&nbsp;crond&nbsp;start</span> </code><br />查看crontab服务是否已设置为开机启动，执行命令：<code><span style="color: #000000"> ntsysv</span> </code><br />加入开机自动启动:<code><span style="color: #000000"> chkconfig&nbsp;--level&nbsp;35&nbsp;crond&nbsp;on</span> </code>
<p>1，crontab命令</p>
<p>功能说明：设置计时器。</p>
<p>语　　法：crontab [-u &lt;用户名称&gt;][配置文件] 或 crontab [-u &lt;用户名称&gt;][-elr]</p>
<p>补充说明：cron是一个常驻服务，它提供计时器的功能，让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件，就可以使 用计时器的功能。其配置文件格式如下：<br />Minute Hour Day Month DayOFWeek Command</p>
<p>参　　数：<br />-e 　编辑该用户的计时器设置。<br />-l 　列出该用户的计时器设置。<br />-r 　删除该用户的计时器设置。<br />-u&lt;用户名称&gt; 　指定要设定计时器的用户名称。</p>
<p>2，crontab 格式</p>
<p><strong>基本格式 :</strong><br />* *　 *　 *　 *　　command<br />分　时　日　月　周　 命令</p>
<p>第1列表示分钟1～59 每分钟用*或者 */1表示<br />第2列表示小时1～23（0表示0点）<br />第3列表示日期1～31<br />第4列 表示月份1～12<br />第5列标识号星期0～6（0表示星期天）<br />第6列要运行的命令<br /><br /><br /><br /><strong>crontab特殊的符号说明：<br /><br /></strong>"*"代表所有的取值范围内的数字。特别要注意哦！<br /><br />"/"代表每的意思，如"*/5"表示每5个单位<br /><br />"-"代表从某个数字到某个数字<br /><br />","分散的数字<br /></p>
<p><br /><strong>crontab文件的一些例子：</strong></p><code><span style="color: #000000">30&nbsp;21&nbsp;*&nbsp;*&nbsp;*&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />上面的例子表示每晚的21:30重启 apache。 
<p>&nbsp;</p><code><span style="color: #000000">45&nbsp;4&nbsp;1,10,22&nbsp;*&nbsp;*&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />上面的例子表示每月1、 10、22日的4 : 45重启apache。 
<p>&nbsp;</p><code><span style="color: #000000">10&nbsp;1&nbsp;*&nbsp;*&nbsp;6,0&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />上面的例子表示每周六、周日的1 : 10重启apache。 
<p>&nbsp;</p><code><span style="color: #000000">0,30&nbsp;18-23&nbsp;*&nbsp;*&nbsp;*&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 
<p>&nbsp;</p><code><span style="color: #000000">0&nbsp;23&nbsp;*&nbsp;*&nbsp;6&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />上面的例子表示每星期六的11 : 00 pm重启apache。 
<p>&nbsp;</p><code><span style="color: #000000">*&nbsp;*/1&nbsp;*&nbsp;*&nbsp;*&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />每一小时重启apache 
<p>&nbsp;</p><code><span style="color: #000000">*&nbsp;23-7/1&nbsp;*&nbsp;*&nbsp;*&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />晚上11点到早上7点之间，每 隔一小时重启apache 
<p>&nbsp;</p><code><span style="color: #000000">0&nbsp;11&nbsp;4&nbsp;*&nbsp;mon-wed&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />每月的4号与每周一到周三 的11点重启apache 
<p>&nbsp;</p><code><span style="color: #000000">0&nbsp;4&nbsp;1&nbsp;jan&nbsp;*&nbsp;/usr/local/etc/rc.d/lighttpd&nbsp;restart</span> </code><br />一月一号的4点重启apache 
<p>&nbsp;</p><code><span style="color: #000000">*/30&nbsp;*&nbsp;*&nbsp;*&nbsp;*&nbsp;/usr/sbin/ntpdate&nbsp;210.72.145.44</span> </code><br />每半小时同步一下时间 
<p>&nbsp;<br /><br /></p>
<p>-------------------------------- 如何查看crontab的日志记录 --------------------------------------------------------</p>
<p>昨天crontab中的同步任务没有执行，不知道是什么原因没有执行，貌似任务hang住了，想查询一下crontab到底问题出在哪里，或者hang在了什么地方。<br />&nbsp;<br />1.&nbsp; linux<br />看 /var/log/cron这个文件就可以，可以用tail -f /var/log/cron观察<br />&nbsp;<br />2.&nbsp; unix<br />在 /var/spool/cron/tmp文件中，有croutXXX001864的tmp文件，tail 这些文件就可以看到正在执行的任务了。<br />&nbsp;<br />3. mail任务<br />在 /var/spool/mail/root 文件中，有crontab执行日志的记录，用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。</p>
<p>&nbsp;</p></div>
<div class="ggads"><script type="text/javascript"><!--
google_ad_client = "pub-2998969793692916";
/* 468x15, 创建于 11-2-26 */
google_ad_slot = "3030194908";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><img src ="http://www.cppblog.com/API/aggbug/169237.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-03-28 08:49 <a href="http://www.cppblog.com/API/archive/2012/03/28/169237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vsftpd 设置</title><link>http://www.cppblog.com/API/archive/2012/03/27/169113.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Tue, 27 Mar 2012 03:18:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/03/27/169113.html</guid><wfw:comment>http://www.cppblog.com/API/comments/169113.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/03/27/169113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/169113.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/169113.html</trackback:ping><description><![CDATA[使用root登录:<br /><br />userlist_enable=YES <br />/etc/vsftpd/user_list含有root名单 <br />2种解决办法： <br />
<p><br />(1)userlist_enable=NO </p>
<ul><li>将root从user_list中去掉 </li></ul>
<p>(2)<br />将root从/etc/vsftpd/ftpusers中去掉。 <br /><br />如果登录出现<br />[右] 500 OOPS: cannot change directory:/home/bluesky<br />[右] 连接失败<br /><br />作如下设置:</p>
<p><em>setsebool -P ftp_home_dir=1</em></p>
<p>service vsftpd restart<br /></p><img src ="http://www.cppblog.com/API/aggbug/169113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-03-27 11:18 <a href="http://www.cppblog.com/API/archive/2012/03/27/169113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 硬限制和软限制</title><link>http://www.cppblog.com/API/archive/2012/03/19/168289.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Mon, 19 Mar 2012 00:57:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2012/03/19/168289.html</guid><wfw:comment>http://www.cppblog.com/API/comments/168289.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2012/03/19/168289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/168289.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/168289.html</trackback:ping><description><![CDATA[<div>
<p>这一部分的提出是为了防止失控的进程破坏系统的性能</p>
<p>nuix和Linux跟踪进程使用的大部分资源，允许用户和系统管理员使用对进程的资源限制</p>
<p>&nbsp;设置的限制有两种： 硬限制和软限制</p>
<p>硬限制是可以在任何时候任何进程中设置&nbsp; 但硬限制只能由超级用户提起</p>
<p>软限制是内核实际执行的限制，任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值</p>
<p><br /></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;以下内容为转载（突然发现这方面有好资源便直接引用了）&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>getrlimit和setrlimit函数 <br />　　每个进程都有一组资源限制，其中某一些可以用getrlimit和setrlimit函数查询和更改。</p>
<p>#include <br />#include <br />int getrlimit(int resource,struct rlimit *rlptr);<br />int setrlimit(int resource,const struct rlimit rlptr);<br />Both return: 0 if OK,nonzero on error两个函数</p>
<p>　　返回：若成功为0，出错为非0</p>
<p>　　对这两个函数的每一次调用都指定一个资源以及一个指向下列结构的指针。</p>
<p>struct rlimit{<br />rlim rlim rlimit_ur;/* 软限制：当前限制 */<br />rlim rlim rlim_ax;／* 硬限制：rlimcur的最大值 */<br />}；</p>
<p>可用的值</p>
<p>RLIMIT _AS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进程可用的内存的最大数量，包括堆栈、全局变量、动态内存</p>
<p>RLIMIT _CORE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内核生成的core文件的最大大小</p>
<p>RLIMIT _CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所用的全部cpu时间 以秒计算</p>
<p>RLIMIT _DATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据存储的最大容量，以字节计算，不包括程序分配的动态存储空间</p>
<p>RLIMIT _FSIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开文件的最大数目</p>
<p>RLIMIT _MEMLOCK&nbsp;&nbsp; </p>
<p>RLIMIT _NOFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>RLIMIT _NPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进程可以产生的最大子进程数量</p>
<p>RLIMIT _RSS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以随时使用的内存最大容量</p>
<p>RLIMIT _STACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 堆栈存储区的最大容量</p>
<p><br />　　这两个函数不属于POSIX.1，但SVR4和4.3+BSD提供它们。SVR4在上面的结构中使用基本系统数据类型rlim。其它系统则将这</p>
<p>两个成员定义为整型或长整型。</p>
<p>　　进程的资源限制通常是在系统初启时由0#进程建立的，然后由后续进程继承。在SVR4中，系统默认值可以查看文</p>
<p>件/etc/conf/cfd/mtune在4.3+BSD中，系统默认值分散在多个头文件中。</p>
<p>　　在更改资源限制时，须遵循下列三条规则：</p>
<p>　　1.任何一个进程都可将一个软限制更改为小于或等于其硬限制。<br />　　2.任何一个进程都可降低其硬限制值，但它必须大于或等于其软限制值。这种降低，对普通用户而言是不可逆反的。<br />　　3.只有超级用户可以提高硬限制。</p>
<p>　　一个无限量的限制由常数RLIM NFINITY指定。</p>
<p>　　这两个函数的resource参数取下列值之一。注意并非所有资源限制都受到SVR4和4.3+BSD的支持。</p>
<p>　　RLMITCORE（SVR4及4.3+BSD)core文件的最大字节数，若其值为0则阻止创建core文件。<br />　　RLIMIT PU(SVR4及4.3+BSD)CPU时间的最大量值(秒)，当超过此软限止时，向该进程发送SIGXCPU信号。<br />　　RLIMIT ATA(SVR4及4.3+BSD)数据段的最大字节长度。这是图7.3中初始化数据、非初始化数据以及堆的总和。<br />　　RLIMIT SIZE(SVR4及4.3+BSD)可以创建的一个文件的最大字节长度。当超过此软限制时，则向该进程发送SIGFSZ信号。<br />　　RLIMIT EMLOCK（4.3+BSD)锁定在存储器地址空间(尚末实现)。<br />　　RLIMIT OFILE(SVR4)每个进程最多打开的文件数。更改此限制将影响到sysconf函数在参数-sc-OPEN-MAX中返回的值(2.5.4节</p>
<p>)。见程序2.3。<br />　　RLIMIT PROC(4.3+BSD)每个实际用户ID所拥有的最大子进程数。更改此限制将影响到sysconf函数在参数 CHILDMAX中返回的</p>
<p>值(2.5.4节)。<br />　　RLIMIT FILE(4.3+BSD)与SVR4的RLIMIT OFILE相同。<br />　　RLIMIT SS（4.3+BSD)最大驻内存集字节长度(RSS)。如果物理存储器供子应求，则系统核将从进程处取回超过RSS的部分。<br />　　RLIMIT TACK(SVR4及4.3+BSD)栈的最大字节长度。见图7.3。<br />　　RLIMIT MEM（SVR4)可映照地址空间的最大字节长度。这影响到mmap函数(12.9节)。</p>
<p>　　资源限制影响到调用进程并由其子进程继承。这就意味着为了影响一个用户的所有后续进程，需将资源限制设置构造在shell</p>
<p>之中。确实，Bourne Shell和Kornshell具有内部ulimit命令，CShell具有内部limit命令。(umask和chdir也必须是shell内部的)</p>
<p>。</p>
<p>　　较早的BourmeShell，例如由贝克莱提供的一种，不支持ulimit命令。较新的KornShell的ulimit命令具有-H和-s选择项，以</p>
<p>分别检查和修改硬和软的限制，但它们尚末编写入文档。</p>
<p>?</p>
<p>?简单的用例：</p>
<p>#include&lt;sys/time.h&gt;<br />#include&lt;sys/resource.h&gt;<br />#include&lt;unistd.h&gt;<br />int main()<br />{<br />&nbsp; struct rlimit limit;<br />&nbsp;char p = '1';<br />&nbsp;limit.rlim_cur = RLIM_INFINITY;<br />&nbsp;limit.rlim_max = RLIM_INFINITY;<br />&nbsp;if(setrlimit(RLIMIT_CORE, &amp;limit))<br />&nbsp;{<br />&nbsp; printf("set limit failed/n");<br />&nbsp;}</p>
<p>&nbsp;printf("p = %s/n",p);<br />} <br /></p>
<p><br /></p>
<p><br /></p>
<p>---------------------------------------------------------------------------------------------------------------------------------------------</p>
<p>对每个进程都有一组资源限制，其中一些可以用getrlimit和setrlimit函数查询和更改 </p>
<p>getrlimit和setrlimit：资源限制 (getrlimit and setrlimit: Resource Limits) </p>
<p>这两个系统函数是和resource limit相关的。你用过ulimit命令吗？（反正我没用过） <br />对于每个资源来说有两个limit：一个是hard limit，一个是soft limit，其中后者永远不能超过前者，并且只有拥有superuser权限的进程可以更改前者。 <br />getrlimit和setrlimit的参数相同：第一个参数是资源的类型，第二个参数是rlimit结构的指针，这个结构里面就只有两个成员：hard limit和soft limit <br />几个重要的资源类型 <br />RLIMIT_CPU：程序执行的最大CPU时间，单位是秒。超过之后程序中止，中止的信号是SIGXCPU <br />RLIMIT_DATA：程序执行的最大内存 <br />RLIMIT_NPROC：程序孵出的最大子进程数量 <br />RLIMIT_NOFILE：程序打开的文件的最大数量<br /><br /><br />--------------------<br />如果你碰到类似的错误提示<br />ulimit: max user processes: cannot modify limit: 不允许的操作 <br />ulimit: open files: cannot modify limit: 不允许的操作<br /><br />为啥root用户是可以的？普通用户又会遇到这样的问题？<br />看一下/etc/security/limits.conf大概就会明白。<br />linux对用户有默认的ulimit限制，而这个文件可以配置用户的硬配置和软配置，硬配置是个上限。<br />超出上限的修改就会出&#8220;不允许的操作&#8221;这样的错误。<br /><br />在limits.conf加上<br />* soft noproc 10240<br />* hard noproc 10240<br />* soft nofile 10240<br />* hard nofile 10240<br />就是限制了任意用户的最大线程数和文件数为10240。</p></div><img src ="http://www.cppblog.com/API/aggbug/168289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2012-03-19 08:57 <a href="http://www.cppblog.com/API/archive/2012/03/19/168289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查看系统版本</title><link>http://www.cppblog.com/API/archive/2011/06/15/148726.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Wed, 15 Jun 2011 10:21:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/06/15/148726.html</guid><wfw:comment>http://www.cppblog.com/API/comments/148726.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/06/15/148726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/148726.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/148726.html</trackback:ping><description><![CDATA[<div>1.查看发行版本<br /><font size="2">lsb_release -a<br /><br />2.查看内核版本<br />uname -a</font></div><img src ="http://www.cppblog.com/API/aggbug/148726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-06-15 18:21 <a href="http://www.cppblog.com/API/archive/2011/06/15/148726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux命令终极系列（awk）</title><link>http://www.cppblog.com/API/archive/2011/04/24/144895.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sun, 24 Apr 2011 04:18:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/04/24/144895.html</guid><wfw:comment>http://www.cppblog.com/API/comments/144895.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/04/24/144895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/144895.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/144895.html</trackback:ping><description><![CDATA[<span style="color: #000bba;">一.awk功能特点</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp; awk是一个非常重要的命令或者认为是一种语言。因为他可以做数学运算，流程控制语句，流控制，还有样式装入的功能。反正是非常强大。awk是三位创建者编写的。把awk定义为：样式扫描处理语言。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; awk吸收了C语言很多的特点，所以与C语言有点类拟。</span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000bba;">二.awk的调用方式</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; awk提供了适应不同需要的多种方案，它们是：</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; 1.awk命令行</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 像普通的unix命令一样使用awk,当然可以在你的命令行中使用awk设计语言。而且还可以在shell脚本中引用awk命令或awk程序脚本。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; 2.使用-f选项调用awk程序。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; awk可以将一段awk程序脚本写入到一个文本文件，然后使用-f选项来指定执行这个awk语言脚本。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; 3.利用命令解释器调用awk程序</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用unix支持的命令解释功能。可以将一段awk程序写入到文本文件，然后在它的第一行加上：</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #!/bin/awk -f</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; 并chmod u+x权限。这样以后，你就可以用以下命令格式来调用了。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; $awk 脚本文件名&nbsp; 待处理的文件</span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000bba;">三.awk语法</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; 1.与其他的unix命令一样，它的语法如下：</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; </span><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...] <br>&nbsp;&nbsp; 参数说明：<br>&nbsp;&nbsp;&nbsp;&nbsp; -F re,指定某字符为分隔符<br>&nbsp;&nbsp;&nbsp; parameter:该参数帮助不同的变量赋值<br>&nbsp;&nbsp;&nbsp; 'prog': awk的程序语句段。这个语句段必须用'与'括起来。以防被shell给解释掉了。它的标准形式如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'pattern {action}'<br>&nbsp;&nbsp;&nbsp; 其中pattern参数可以是grep正则表达式中的任何一个，</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">它可以使用语法/re/再加上一些样式匹配技巧构成</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">，也可以使用","分开两样式以选择某个范围。</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">。
action参数总是被大括号包围，它由一系统awk语句组成，各语句之间用";"分隔。awk解释它们，并在pattern给定的样式匹配的记录上执行
其操作。与shell类似，你也可以使用&#8220;#&#8221;作为注释符，它使&#8220;#&#8221;到行尾的内容成为注释，在解释执行时，它们将被忽略。你可以省略pattern和
action之一，但不能两者同时省略，当省略pattern时没有样式匹配，表示对所有行（记录）均执行操作，省略action时执行缺省的操作——在
标准输出上显示。<br><br>-f profile:</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">允许awk调用并执行progfile指定程序文件。progfile是一个文本文件，他必须符合awk的语法(注意不是shell文件)。<br><br>&nbsp;</span></font><span style="color: #000000;">in_file :awk的输入文件，可以有多个。注意：awk不会修改输入文件。如果没有指定输入文件，那么默认为标准输入（屏幕）</span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000bba;">四. awk的记录，字段与内置变量</span><br style="color: #000000;"><span style="color: #000000;">　1. 记录与字段</span><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">在
awk中，缺省的情况下总是将文本文件中的一行视为一个记录，而将一行中的某一部分作为记录中的一个字段。为了操作这些不同的字段，awk借用shell
的方法，用$1,$2,$3...这样的方式来顺序地表示行（记录）中的不同字段。特殊地，awk用$0表示整个行（记录）。不同的字段之间是用称作分隔
符的字符分隔开的。系统默认的分隔符是空格。awk允许在命令行中用-F
re的形式来改变这个分隔符。事实上，awk用一个内置的变量FS来记忆这个分隔符<br><br>&nbsp; 2. 内置变量<br>　　</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">awk中有好几个这样的内置变量，例如，记录分隔符变量RS、当前工作的记录数NR等等。<br><br></span></font><span style="color: #000000;">&nbsp; 示例：显示文件本文件testAwk中第3行到第6行，以字符%分隔的第一个字段，第三个字段：</span><br style="color: #000000;"><span style="color: #000000;">　awk -F % 'NR==3,NR==6 {printf $1&nbsp; $3}' testAwk</span><br style="color: #000000;">&nbsp;&nbsp; <br>&nbsp; 示例：杀死系统中所有top进程<br>&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">ps -ef|grep " top" |grep -v "grep"|awk '{printf $2}'|xargs kill -9</span><br>&nbsp;&nbsp;&nbsp; 或<br>&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">kill -9 `ps -ef|grep " top" |grep -v "grep"|awk '{printf $2}'`</span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000bba;">五. awk的内置函数</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; １.&nbsp; 以上示例了printf函数，它与Ｃ语言相似，如下，显示testAwk文件中行号与第1个字段：</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; </span><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">$awk '{printf"%03d%s\n",NR,$1}' testAwk<br>&nbsp; 2. </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">显示文本文件mydoc匹配（含有）字符串"sun"的所有行<br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">$awk '/sun/{print}' mydoc <br>&nbsp; 3.</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">由于显示整个记录（全行）是awk的缺省动作，因此可以省略action项<br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">$awk '/sun/' mydoc <br><br>&nbsp; 4.</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">示第一个匹配Sun或sun的行与第一个匹配Moon或moon的行之间的行，并显示到标准输出上</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">：<br>&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">$awk '/[Ss]un/,/[Mm]oon/ {print}' myfile <br><br>&nbsp; 5.</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">下面的示例显示了内置变量和内置函数length（）的使用：<br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">$awk 'length($0)&gt;80 {print NR}' myfile <br><br>&nbsp; 6.</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">UNIX中的用户进行安全性检查，方法是考察/etc下的passwd文件，检查其中的passwd字段（第二字段）是否为"*"，如不为"*"，则表示该用户没有设置密码，显示出这些用户名（第一字段）。我们可以用如下语句实现： <br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">#awk -F: '$2=="" {printf("%s no password!\n",$1' /etc/passwd<br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">在这个示例中，passwd文件的字段分隔符是&#8220;：&#8221;，因此，必须用-F：来更改默认的字段分隔符，这个示例中也涉及到了内置函数printf的使用</span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">&nbsp;<br><span style="color: #000bba;">&nbsp;六. </span></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">awk的变量</span><br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">awk提供两种变量:<br>&nbsp;&nbsp; (1) 内置变量<br>　　在引用时，不需要加$<br>&nbsp;&nbsp; (2) </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">自定义变量<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">awk中引用自定义变量必须在它前面加上标志符"$"</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">。awk根据其在awk中第一次出现的形式和上下文确定其具体的数据类型。当变量类型不确定时，awk默认其为字符串类型。这里有一个技巧：如果你要让你的awk程序知道你所使用的变量的明确类型，你应当在在程序中给它赋初值。</span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">&nbsp;<br><span style="color: #000bba;">七.</span></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">运算与判断</span><br>&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">awk
支持多种运算，这些运算与C语言提供的几本相同：如+、-、*、/、%等等，同时，awk也支持C语言中类似++、--、+=、-=、=+、=-之类的功
能，这给熟悉C语言的使用者编写awk程序带来了极大的方便。作为对运算功能的一种扩展，awk还提供了一系列内置的运算函数（如log、sqr、
cos、sin等等）和一些用于对字符串进行操作（运算）的函数（如length、substr等等）。这些函数的引用大大的提高了awk的运算功能。 <br><br>作
为对条件转移指令的一部分，关系判断是每种程序设计语言都具备的功能，awk也不例外。awk中允许进行多种测试，如常用的==（等于）、！=（不等
于）、&gt;（大于）、&lt;（小于）、&gt;=（大于等于）、&gt;=（小于等于）等等，同时，作为样式匹配，还提供了~（匹配于）和！~（不
匹配于）判断。 <br><br>作为对测试的一种扩充，awk也支持用逻辑运算符:!(非)、&amp;&amp;（与）、||（或）和括号（）进行多重判断，这大大增强了awk的功能。本文的附录中列出了awk所允许的运算、判断以及操作符的优先级。 <br><br><span style="color: #000bba;">&nbsp;八. </span></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">awk的流程控制 </span><br>&nbsp; 1. </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">BEGIN和END: <br>&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">任何在BEGIN之后列出的操作（在{}内）将在awk开始扫描输入之前执行，而END之后列出的操作将在扫描完全部的输入之后执行。因此，通常使用BEGIN来显示变量和预置（初始化）变量，使用END来输出最终结果。<br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">例：累计销售文件xs中的销售金额（假设销售金额在记录的第三字段）： <br><br>$awk <br>&gt;'BEGIN { FS=":";print "统计销售金额";total=0} <br>&gt;{print $3;total=total+$3;} <br>&gt;END {printf "销售金额总计：%.2f",total}' sx <br>（注：&gt;是shell提供的第二提示符，如要在shell程序awk语句和awk语言中换行，则需在行尾加反斜杠\） <br><br>在这里，BEGIN预置了内部变量FS（字段分隔符）和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。 </span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><br>&nbsp; 2. </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">流程控制语句 <br>&nbsp; (1) if .. else<br>&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">if...else语句<br>&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">格式： <br>if(表达式) <br>语句1 <br>else <br>语句2 <br>&nbsp; <br>&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">if(表达式1） <br>{if(表达式2） <br>语句1 <br>else <br>语句2 <br>} <br>语句3 <br>else {if(表达式3) <br>语句4 <br>else <br>语句5 <br>} <br>语句6 <br>&nbsp; (2) </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">while语句 <br>&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">格式为: <br><br>while(表达式) <br>语句 <br>&nbsp; (3)do-while语句 <br>格式为: <br>do <br>{ <br>语句 <br>}while(条件判断语句）</span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><br>&nbsp;&nbsp; (4) </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">for语句<br>&nbsp;&nbsp;&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">for(初始表达式;终止条件;步长表达式) <br>{语句} <br><br>在
awk的
while、do-while和for语句中允许使用break,continue语句来控制流程走向，也允许使用exit这样的语句来退出。break
中断当前正在执行的循环并跳到循环外执行下一条语句。continue从当前位置跳到循环开始处执行。对于exit的执行有两种情况：当exit语句不在
END中时，任何操作中的exit命令表现得如同到了文件尾，所有模式或操作执行将停止，END模式中的操作被执行。而出现在END中的exit将导致程序终止。 </span></font><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000bba;">九.</span><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">awk中的自定义函数</span><br>&nbsp; </span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">原始的awk并不提供函数功能，只有在nawk或较新的awk版本中才可以增加函数<br></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">awk函数的定义方法如下： <br><br>function 函数名(参数表){ <br>函数体 <br>} <br></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">在gawk中允许将function省略为func，但其它版本的awk不允许。</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">在
awk中调用函数比较简单，其方法与C语言相似，但awk比C语言更为灵活，它不执行参数有效性检查。换句话说，在你调用函数时，可以列出比函数预计（函
数定义中规定）的多或少的参数，多余的参数会被awk所忽略，而不足的参数，awk将它们置为缺省值0或空字符串，具体置为何值，将取决于参数的使用方
式。</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">在函数中使用形如：return 返回值 格式的语句。<br></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">例：
下面的例子演示了函数的使用。在这个示例中，定义了一个名为print_header的函数，该函数调用了两个参数FileName和
PageNum，FileName参数传给函数当前使用的文件名，PageNum参数是当前页的页号。这个函数的功能是打印（显示）出当前文件的文件名，
和当前页的页号。完成这个功能后，这个函数将返回下一页的页号。 <br>nawk <br>&gt;'BEGIN{pageno=1;file=FILENAME <br>&gt;pageno=print_header(file，pageno)；#调用函数print_header <br>&gt;printf("当前页页号是：%d\n",pageno); <br>&gt;} <br>&gt;#定义函数print_header <br>&gt;function print_header(FileName,PageNum){ <br>&gt;printf("%s %d\n",FileName,PageNum); &gt;PageNum++;return PageNUm; <br>&gt;} <br>&gt;}' myfile <br>执行这个程序将显示如下内容： <br>myfile 1 <br>当前页页号是：2 </span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><br></span></font><font style="color: #000bba;" id="zoom" class="f14"><span class="postbody">&nbsp;十.</span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">awk高级输入输出 </span><br></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">1.读取下一条记录： <br>awk的next语句导致awk读取下一个记录并完成模式匹配，然后立即执行相应的操作。通常它用匹配的模式执行操作中的代码。next导致这个记录的任何额外匹配模式被忽略。 <br><br>2.简单地读取一条记录 <br>awk
的
getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录，那么getline将尤其有用。它完成一般字段的分离(设置字段变
量$0 FNR NF NR)。如果成功则返回1，失败则返回0（到达文件尾）。如果需简单地读取一个文件，则可以编写以下代码： <br>例：示例getline的使用 <br>{while(getline==1) <br>{ <br>#process the inputted fields <br>} <br>} <br>也可以使getline保存输入数据在一个字段中，而不是通过使用getline variable的形式处理一般字段。当使用这种方式时，NF被置成0，FNR和NR被增值。 <br>用
户也可以使用getline&lt;"filename"方式从一个给定的文件中输入数据，而不是从命令行所列内容输入数据。此时，getline将完成
一般字段分离（设置字段变量$0和NF)。如果文件不存在，返回-1,成功，返回1,返回0表示失败。用户可以从给定文件中读取数据到一个变量中，也可以
用stdin(标准输入设备）或一个包含这个文件名的变量代替filename。值得注意的是当使用这种方式时不修改FNR和NR。 <br><br>另一种使用getline语句的方法是从UNIX命令接受输入，例如下面的例子: <br>例：示例从UNIX命令接受输入 <br>{while("who -u"|getline) <br>{ <br>#process each line from the who command <br>} <br>} <br><br>当然，也可以使用如下形式: <br>"command" | getline variable <br><br>3.关闭文件: <br>awk中允许在程序中关闭一个输入或输出文件，方法是使用awk的close语句。 <br>close("filename") <br>filename可以是getline打开的文件（也可以是stdin,包含文件名的变量或者getline使用的确切命令）。或一个输出文件（可以是stdout，包含文件名的变量或使用管道的确切命令）。 <br><br>4.输出到一个文件: <br>awk中允许用如下方式将结果输出到一个文件： <br>printf("hello word!\n")&gt;"datafile" <br>或 <br>printf("hello word!\n")&gt;&gt;"datafile" <br><br>5.输出到一个命令 <br>awk中允许用如下方式将结果输出到一个命令： <br>printf("hello word!\n")|"sort-t','" </span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><br><span style="color: #000bba;">十一.</span></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">awk与shell script混合编程</span><br></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody">因
为awk可以作为一个shell命令使用，因此awk能与shell批处理程序很好的融合在一起，这给实现awk与shell程序的混合编程提供了可能。
实现混合编程的关键是awk与shell script之间的对话，换言之，就是awk与shell script之间的信息交流:awk从shell
script中获取所需的信息（通常是变量的值）、在awk中执行shell命令行、shell
script将命令执行的结果送给awk处理以及shell script读取awk的执行结果等等。 <br><br>1.awk读取Shell script程序变量 <br>在awk中我们可以通过&#8220;'$变量名'&#8221;的方式读取sell scrpit程序中的变量。 <br>例：在下面的示例中，我们将读取sell scrpit程序中的变量Name，该变量存放的是文本myfile的撰写者，awk将打印出这个人名。 <br>$cat writename <br>: <br># @(#) <br># <br>. <br>. <br>. <br>Name="张三" nawk 'BEGIN {name="'Name'";\ printf("\t%s\t撰写者%s\n",FILENAME,name");}\ <br>{...}END{...}' myfile <br>. <br>. <br>. <br><br>2.将shell命令的执行结果送给awk处理 <br>作为信息传送的一种方法，我们可以将一条shell命令的结果通过管道线（|）传递给awk处理： <br>例：示例awk处理shell命令的执行结果 <br>$who -u | awk '{printf("%s正在执行%s\n",$2,$1)}' <br>该命令将打印出注册终端正在执行的程序名。 <br><br>3.shell script程序读awk的执行结果 <br>为
了实现shell
script程序读取awk执行的结果，我们可以采取一些特殊的方法，例如我们可以用变量名=`awk语句`的形式将awk执行的结果存放入一个
shell script变量。当然也可以用管道线的方法将awk执行结果传递给shell script程序处理。 <br>例：作为传送消息
的机制之一，UNIX提供了一个向其所有用户传送消息的命令wall（意思是write to
all写给所有用户），该命令允许向所有工作中的用户（终端）发送消息。为此，我们可以通过一段shell批处理程序wall.shell来模拟这一程序
（事实上比较老的版本中wall就是一段shell批处理程序： <br><br>$cat wall.shell <br>: <br># @(#) wall.shell:发送消息给每个已注册终端 <br># <br>cat &gt;/tmp/$$ <br>#用户录入消息文本 who -u | awk '{print $2}' | while read tty <br>do <br>cat /tmp/$$&gt;$tty <br>done <br>在
这个程序里，awk接受who
-u命令的执行结果，该命令打印出所有已注册终端的信息，其中第二个字段是已注册终端的设备名，因此用awk命令析出该设备名，然后用while
read tty语句循环读出这些文件名到变量（shell script变量）tty中，作为信息传送的终结地址。 <br><br>4.在awk中执行shell命令行----嵌入函数system() <br>system()是一个不适合字符或数字类型的嵌入函数，该函数的功能是处理作为参数传递给它的字符串。system对这个参数的处理就是将其作为命令处理，也就是说将其当作命令行一样加以执行。这使得用户在自己的awk程序需要时可以灵活地执行命令或脚本。 <br>例：下面的程序将使用system嵌入函数打印用户编制好的报表文件，这个文件存放在名为myreport.txt的文件中。为简约起见，我们只列出了其END部分： <br>. <br>. <br>. <br>END {close("myreport.txt");system("lp myreport.txt");} <br>在这个示例中，我们首先使用close语句关闭了文件myreport.txt文件，然后使用system嵌入函数将myreport.txt送入打印机打印。 </span></font><br style="color: #000000;"><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><br><span style="color: #000bba;">十二</span></span></font><font style="color: #000000;" id="zoom" class="f14"><span class="postbody"><span style="color: #000bba;">附录： </span><br><br>1.awk的常规表达式元字符 <br>\ 换码序列 <br>^ 在字符串的开头开始匹配 <br>$ 在字符串的结尾开始匹配 <br>. 与任何单个字符串匹配 <br>[ABC] 与[]内的任一字符匹配 <br>[A-Ca-c] 与A-C及a-c范围内的字符匹配（按字母表顺序） <br>[^ABC] 与除[]内的所有字符以外的任一字符匹配 <br>Desk|Chair 与Desk和Chair中的任一个匹配 <br>[ABC][DEF] 关联。与A、B、C中的任一字符匹配，且其后要跟D、E、F中的任一个字符。 <br>* 与A、B或C中任一个出现0次或多次的字符相匹配 <br>+ 与A、B或C中任何一个出现1次或多次的字符相匹配 <br>？ 与一个空串或A、B或C在任何一个字符相匹配 <br>（Blue|Black）berry 合并常规表达式，与Blueberry或Blackberry相匹配 <br><br>2.awk算术运算符 <br>运算符 用途 <br>------------------ <br>x^y x的y次幂 <br>x**y 同上 <br>x%y 计算x/y的余数（求模） <br>x+y x加y <br>x-y x减y <br>x*y x乘y <br>x/y x除y <br>-y 负y(y的开关符号);也称一目减 <br>++y y加1后使用y(前置加） <br>y++ 使用y值后加1（后缀加） <br>--y y减1后使用y(前置减） <br>y-- 使用后y减1(后缀减） <br>x=y 将y的值赋给x <br>x+=y 将x+y的值赋给x <br>x-=y 将x-y的值赋给x <br>x*=y 将x*y的值赋给x <br>x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x <br>x^=y 将x^y的值赋给x <br>x**=y 将x**y的值赋给x <br><br>3.awk允许的测试： <br>操作符 含义 <br>x==y x等于y <br>x!=y x不等于y <br>x&gt;y x大于y <br>x&gt;=y x大于或等于y <br>x&lt;y x小于y <br>x&lt;=y x小于或等于y? <br>x~re x匹配正则表达式re? <br>x!~re x不匹配正则表达式re? <br><br>4.awk的操作符(按优先级升序排列) <br>= 、+=、 -=、 *= 、/= 、 %= <br>|| <br>&amp;&amp; <br>&gt; &gt;= &lt; &lt;= == != ~ !~ <br>xy (字符串连结，'x''y'变成"xy"） <br>+ - <br>* / % <br>++ -- <br><br>5.awk内置变量（预定义变量） <br>说明：表中v项表示第一个支持变量的工具（下同）：A=awk，N=nawk,P=POSIX awk,G=gawk <br>V 变量 含义 缺省值 <br>-------------------------------------------------------- <br>N ARGC 命令行参数个数 <br>G ARGIND 当前被处理文件的ARGV标志符 <br>N ARGV 命令行参数数组 <br>G CONVFMT 数字转换格式 %.6g <br>P ENVIRON UNIX环境变量 <br>N ERRNO UNIX系统错误消息 <br>G FIELDWIDTHS 输入字段宽度的空白分隔字符串 <br>A FILENAME 当前输入文件的名字 <br>P FNR 当前记录数 <br>A FS 输入字段分隔符 空格 <br>G IGNORECASE 控制大小写敏感0（大小写敏感） <br>A NF 当前记录中的字段个数 <br>A NR 已经读出的记录数 <br>A OFMT 数字的输出格式 %.6g <br>A OFS 输出字段分隔符 空格 <br>A ORS 输出的记录分隔符 新行 <br>A RS 输入的记录他隔符 新行 <br>N RSTART 被匹配函数匹配的字符串首 <br>N RLENGTH 被匹配函数匹配的字符串长度 <br>N SUBSEP 下标分隔符 "\034" <br><br>6.awk的内置函数 <br>V 函数 用途或返回值 <br>------------------------------------------------ <br>N gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string <br>N index(search,string) 返回string中search串的位置 <br>A length(string) 求串string中的字符个数 <br>N match(string,reg) 返回常规表达式reg匹配的string中的位置 <br>N printf(format,variable) 格式化输出，按format提供的格式输出变量variable。 <br>N split(string,store,delim) 根据分界符delim,分解string为store的数组元素 <br>N sprintf(format,variable) 返回一个包含基于format的格式化数据，variables是要放到串中的数据 <br>G strftime(format,timestamp) 返回一个基于format的日期或者时间串，timestmp是systime()函数返回的时间 <br>N sub(reg,string,target) 第一次当常规表达式reg匹配，替换target串中的字符串 <br>A substr(string,position,len) 返回一个以position开始len个字符的子串 <br>P totower(string) 返回string中对应的小写字符 <br>P toupper(string) 返回string中对应的大写字符 <br>A atan(x,y) x的余切(弧度) <br>N cos(x) x的余弦(弧度) <br>A exp(x) e的x幂 <br>A int(x) x的整数部分 <br>A log(x) x的自然对数值 <br>N rand() 0-1之间的随机数 <br>N sin(x) x的正弦(弧度) <br>A sqrt(x) x的平方根 <br>A srand(x) 初始化随机数发生器。如果忽略x，则使用system() <br>G system() 返回自1970年1月1日以来经过的时间（按秒计算） </span></font>    <img src ="http://www.cppblog.com/API/aggbug/144895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-04-24 12:18 <a href="http://www.cppblog.com/API/archive/2011/04/24/144895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux命令终极系列（grep）</title><link>http://www.cppblog.com/API/archive/2011/04/17/144418.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sun, 17 Apr 2011 14:16:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/04/17/144418.html</guid><wfw:comment>http://www.cppblog.com/API/comments/144418.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/04/17/144418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/144418.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/144418.html</trackback:ping><description><![CDATA[<span style="color: #000000;">一.grep命令常用参数</span><br style="color: #000000;"><span style="color: #000000;">（1）－A NUM</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＃grep -A 1 aa test.txt</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：从test.txt中搜寻有aa样式的行，并显示该行的后1行</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;（2）-B NUM </span><br style="color: #000000;"><span style="color: #000000;">&nbsp; &nbsp; &nbsp;&nbsp; ＃grep -B 1 aa test.txt</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：从test.txt中搜寻有aa样式的行，并显示该行的前1行</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; (3) -C NUM</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #grep -C 2 aa test.txt</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：列出file中除包含panda样式的行外并列出其上下2行</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; (4) -a或--test</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #grep -a aa *.tar.gz</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：如果不加-a，找到后，一般会显示&#8220;匹配到二进制文件 tp_smapi-0.40.tgz&#8221;，找不到</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不显示任何内容。加-a后，可将二进位档案视为文字档案搜寻，找到后，可以显示乱码等。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;（5）-b, --byte-offset</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＃grep -b aa test.txt</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：列出样式查找到的位置到文件开始有多少个字节（也可以认为是偏移）</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; （6）--binary-files=TYPE</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明： 此参数TYPE预设为binary(二进位)，若以普通方式搜寻，只有2种结果:</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *若有符合的地方：显示Binary file 二进位档名 matches</span><br style="color: #000000;"><span style="color: #000000;">&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><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *若TYPE为without-match，遇到此参数，grep会认为此二进位档案没有</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含任何搜寻样式，与-I 参数相同。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *若TPYE为text, grep会将此二进位档视为text档案，与-a 参数相同。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意: --binary-files=text 若输出为终端机，可能会产生一些不必要的输出</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp; (7) -c 或--count</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #grep -c aa test.txt</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：显示匹配到的总行数</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; （8）-d ACTION, --directories=ACTION</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep -d recurse aa *</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：将递归查找包含aa的文件</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若输入的档案是一个资料夹，使用ACTION去处理这个资料夹。ACTION可以为以下几种值</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *预设ACTION是read(读取)，也就是说此资料夹会被视为一般的档案；</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *若ACTION是skip(略过)，资料夹会被grep略过：</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *若ACTION是recurse(递)，grep会去读取资料夹下所有的档案，</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此相当於-r 参数。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; （9）&nbsp; -E, --extended-regexp</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：采用规则表示式去解释样式。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; (10)&nbsp; -e PATTERN, --regexp=PATTERN</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把样式做为一个partern，通常用在避免partern用-开始</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; (11)&nbsp;&nbsp; -f FILE, --file=FILE</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 事先将要搜寻的样式写入到一个档案，一行一个样式。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然後采用档案搜寻。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 空的档案表示没有要搜寻的样式，因此也就不会有任何符合。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; ex: (newfile为搜寻样式档)</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $grep -f newfile file&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; (12).&nbsp; -G, --basic-regexp</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将样式视为基本的规则表示式解释。(此为预设)</span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; (13).&nbsp; -H, --with-filename</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在每个符合样式行前加上符合的档案名称，若有路径会显示路径。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; ex: (在file与testfile中搜寻panda样式)&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $grep -H panda file ./testfile</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file:panda</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ./testfile:panda</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; (14).&nbsp; -h, --no-filename&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与-H参数相类似，但在输出时不显示路径。</span><br style="color: #000000;"><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; (15).&nbsp; -I</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep会强制认为此二进位档案没有包含任何搜寻样式，</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与--binary-files=without-match参数相同。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex:&nbsp; $ grep -I&nbsp; panda mv</span><br><br><span style="color: red;">&nbsp;&nbsp; (16).&nbsp; -i, --ignore-case&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 忽略大小写，包含要搜寻的样式及被搜寻的档案。</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex:&nbsp; $ grep -i panda mv</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><span style="color: #000000;">&nbsp;&nbsp; (17).&nbsp; -L, --files-without-match </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不显示平常一般的输出结果，反而显示出没有符合的档案名称。</span><br><br><span style="color: red;">&nbsp;&nbsp; (18).&nbsp; -l, --files-with-matches&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不显示平常一般的输出结果，只显示符合的档案名称。</span><br><br><span style="color: #000000;">&nbsp;&nbsp; (19).&nbsp; --mmap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果可能，使用mmap系统呼叫去读取输入，而不是预设的read系统呼叫。 </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在某些状况，--mmap 能产生较好的效能。 然而，--mmap </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果运作中档案缩短，或I/O 错误发生时，</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可能造成未定义的行为(包含core dump)，。</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><span style="color: red;">&nbsp;&nbsp; (20).&nbsp; -n, --line-number</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在显示行前，标上行号。</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex:&nbsp; $ grep -n&nbsp; panda file&nbsp; </span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示结果相似於下:</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 行号:符合行的内容</span><br><br><span style="color: #000000;">&nbsp;&nbsp; (21).&nbsp; -q, --quiet, --silent </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不显示任何的一般输出。请参阅-s或--no-messages</span><br><br><span style="color: red;">&nbsp;&nbsp; (22).&nbsp; -r, --recursive</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 递地，读取每个资料夹下的所有档案，此相当於 -d recsuse 参数。</span><br><br>&nbsp;<span style="color: red;">&nbsp; (23).&nbsp; -s, --no-messages</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不显示关於不存在或无法读取的错误讯息。</span><br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;<span style="color: #000000;">小: 不像GNU grep，传统的grep不符合POSIX.2协定，</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为缺乏-q参数，且他的-s 参数表现像GNU grep的 -q 参数。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Shell Script倾向将传统的grep移植，避开-q及-s参数，</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 且将输出限制到/dev/null。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">POSIX: 定义UNIX及UNIX-like系统需要提供的功能。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; </span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp; (24).&nbsp; -V, --version</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; 显示出grep的版本号到标准错误。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp; 当您在回报有关grep的bugs时，grep版本号是必须要包含在内的。</span><br style="color: #000000;"><br><span style="color: red;">&nbsp;&nbsp; (25).&nbsp; -v, --invert-match</span><br style="color: red;"><span style="color: red;">&nbsp; 显示除搜寻样式行之外的全部。</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><span style="color: red;">&nbsp;&nbsp; (26).&nbsp; -w, --word-regexp</span><br style="color: red;"><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将搜寻样式视为一个字去搜寻，完全符合该"字"的行才会被列出。</span><br><br><span style="color: red;">&nbsp;&nbsp; (27).&nbsp; -x, --line-regexp</span><br style="color: red;"><span style="color: red;">&nbsp; 将搜寻样式视为一行去搜寻，完全符合该"行"的行才会被列出</span><br><br><br><span style="color: #000000;">二. grep正则表达式</span><br style="color: #000000;"><span style="color: #000000;">( 1 ) grep正则表达式元字符集：</span><br style="color: #000000;"><br><code><span style="color: #000000;">^ 锚定行的开始 如：<span style="color: #ff00ff;">'^grep'</span>匹配所有以grep开头的行。 <br>$ 锚定行的结束 如：<span style="color: #ff00ff;">'grep$'</span>匹配所有以grep结尾的行。 <br><span style="color: #0000cc;">.</span> 匹配一个非换行符的字符 如：<span style="color: #ff00ff;">'gr.p'</span>匹配gr后接一个任意字符，然后是p。 <br><span style="color: #0000cc;">*</span> 匹配零个或多个先前字符 如：<span style="color: #ff00ff;">'*grep'</span>匹配所有一个或多个空格后紧跟grep的行。 <span style="color: #0000cc;">.</span><span style="color: #0000cc;">*</span>一起用代表任意字符。<br><span style="color: #0000cc;">[</span><span style="color: #0000cc;">]</span> 匹配一个指定范围内的字符，如<span style="color: #ff00ff;">'[Gg]rep'</span>匹配Grep和grep。 <br><span style="color: #0000cc;">[</span><span style="color: #0000cc;">^</span><span style="color: #0000cc;">]</span> 匹配一个不在指定范围内的字符，如：<span style="color: #ff00ff;">'[^A-FH-Z]rep'</span>匹配不包含A<span style="color: #0000cc;">-</span>R和T<span style="color: #0000cc;">-</span>Z的一个字母开头，紧跟rep的行。 <br>\<span style="color: #0000cc;">(</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">\</span><span style="color: #0000cc;">)</span> 标记匹配字符，如<span style="color: #ff00ff;">'\(love\)'</span>，love被标记为1。 <br>\<span style="color: #0000cc;">&lt;</span> 锚定单词的开始，如<span style="color: #0000cc;">:</span><span style="color: #ff00ff;">'\&lt;grep'</span>匹配包含以grep开头的单词的行。 <br>\<span style="color: #0000cc;">&gt;</span> 锚定单词的结束，如<span style="color: #ff00ff;">'grep\&gt;'</span>匹配包含以grep结尾的单词的行。 <br>x\{m\} 重复字符x，m次，如：<span style="color: #ff00ff;">'0\{5\}'</span>匹配包含5个o的行。 <br>x\{m<span style="color: #0000cc;">,</span><span style="color: #0000cc;">\</span><span style="color: #0000cc;">}</span> 重复字符x<span style="color: #0000cc;">,</span>至少m次，如：<span style="color: #ff00ff;">'o\{5,\}'</span>匹配至少有5个o的行。 <br>x\{m<span style="color: #0000cc;">,</span>n\}重复字符x，至少m次，不多于n次，如：<span style="color: #ff00ff;">'o\{5,10\}'</span>匹配5<span style="color: #0000cc;">-</span><span style="color: #0000cc;">-</span>10个o的行。<br>\w 匹配文字和数字字符，也就是<span style="color: #0000cc;">[</span>A<span style="color: #0000cc;">-</span>Za<span style="color: #0000cc;">-</span>z0<span style="color: #0000cc;">-</span>9<span style="color: #0000cc;">]</span>，如：<span style="color: #ff00ff;">'G\w*p'</span>匹配以G后跟零个或多个文字或数字字符，然后是p。<br>\b 单词锁定符，如<span style="color: #0000cc;">:</span> <span style="color: #ff00ff;">'\bgrep\b'</span>只匹配grep。<br><br></span></code>(2) 实例：<br><code><span style="color: #000000;">关于匹配的实例：<br>grep <span style="color: #0000cc;">-</span>c <span style="color: #ff00ff;">"48"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 统计所有以&#8220;48&#8221;字符开头的行有多少<br>grep <span style="color: #0000cc;">-</span>i <span style="color: #ff00ff;">"May"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 不区分大小写查找&#8220;May&#8221;所有的行）<br>grep <span style="color: #0000cc;">-</span>n <span style="color: #ff00ff;">"48"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示行号；显示匹配字符&#8220;48&#8221;的行及行号，相同于 nl <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt <span style="color: #0000cc;">|</span>grep 48）<br>grep <span style="color: #0000cc;">-</span>v <span style="color: #ff00ff;">"48"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出没有字符&#8220;48&#8221;所有的行）<br>grep <span style="color: #ff00ff;">"471"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出字符&#8220;471&#8221;所在的行）<br>grep <span style="color: #ff00ff;">"48&lt;tab&gt;;"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出以字符&#8220;48&#8221;开头，并在字符&#8220;48&#8221;后是一个tab键所在的行<br>grep <span style="color: #ff00ff;">"48[34]"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出以字符&#8220;48&#8221;开头，第三个字符是&#8220;3&#8221;或是&#8220;4&#8221;的所有的行）<br>grep <span style="color: #ff00ff;">"^[^48]"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出行首不是字符&#8220;48&#8221;的行）<br>grep <span style="color: #ff00ff;">"[Mm]ay"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 设置大小写查找：显示输出第一个字符以&#8220;M&#8221;或&#8220;m&#8221;开头，以字符&#8220;ay&#8221;结束的行）<br>grep <span style="color: #ff00ff;">"K&#8230;D"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出第一个字符是&#8220;K&#8221;，第二、三、四是任意字符，第五个字符是&#8220;D&#8221;所在的行）<br>grep <span style="color: #ff00ff;">"[A-Z][9]D"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出第一个字符的范围是&#8220;A<span style="color: #0000cc;">-</span>D&#8221;，第二个字符是&#8220;9&#8221;，第三个字符的是&#8220;D&#8221;的所有的行<br>grep <span style="color: #ff00ff;">"[35]..1998"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示第一个字符是3或5，第二三个字符是任意，以1998结尾的所有行<br>grep <span style="color: #ff00ff;">"4\{2,\}"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 模式出现几率查找：显示输出字符&#8220;4&#8221;至少重复出现两次的所有行<br>grep <span style="color: #ff00ff;">"9\{3,\}"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 模式出现几率查找：显示输出字符&#8220;9&#8221;至少重复出现三次的所有行<br>grep <span style="color: #ff00ff;">"9\{2,3\}"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 模式出现几率查找：显示输出字符&#8220;9&#8221;重复出现的次数在一定范围内，重复出现2次或3次所有行<br>grep <span style="color: #0000cc;">-</span>n <span style="color: #ff00ff;">"^$"</span> <span style="color: #0000ff;">test</span><span style="color: #0000cc;">.</span>txt 显示输出空行的行号<br>ls <span style="color: #0000cc;">-</span>l <span style="color: #0000cc;">|</span>grep <span style="color: #ff00ff;">"^d"</span> 如果要查询目录列表中的目录 同：ls <span style="color: #0000cc;">-</span>d <span style="color: #0000cc;">*</span><br>ls <span style="color: #0000cc;">-</span>l <span style="color: #0000cc;">|</span>grep <span style="color: #ff00ff;">"^[^d]"</span> 在一个目录中查询不包含目录的所有文件(开头为非d)<br>ls <span style="color: #0000cc;">-</span>l <span style="color: #0000cc;">|</span>grpe <span style="color: #ff00ff;">"^d&#8230;..x..x"</span> 查询其他用户和用户组成员有可执行权限的目录集合</span></code><br><br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>      <img src ="http://www.cppblog.com/API/aggbug/144418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-04-17 22:16 <a href="http://www.cppblog.com/API/archive/2011/04/17/144418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core文件配置</title><link>http://www.cppblog.com/API/archive/2011/04/16/144345.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sat, 16 Apr 2011 02:43:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/04/16/144345.html</guid><wfw:comment>http://www.cppblog.com/API/comments/144345.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/04/16/144345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/144345.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/144345.html</trackback:ping><description><![CDATA[如何打开core dump呢？最简单的方法是用户在自己的~/.bash_profile中加入ulimit -S -c unlimited &gt; /dev/null 2&gt;&amp;1，这样设置后允许当前用户生成没有大小限制的core dump文件。此外还有两种系统级修改生成core dump的方法。<br><br>第一种方法是修改/etc/profile，把ulimit那一行改为<br><br>ulimit -S -c unlimited &gt; /dev/null 2&gt;&amp;1<br><br>这样设置后系统允许所有用户生成没有大小限制的core dump文件。这样做的优点是不需要重起系统，缺点是无法控制只让某些用户生成core dump文件。<br><br>第二种方法是修改/etc/security/limits.conf文件。很多系统上限都可以通过修改这个文件改变，如最大子进程个数，最大打开文件数等等。这个文件有详细的注释，对如何修改这个文件做了说明。如果想对所有用户打开core dump，可以加入一行<br><br>* soft 　core　 0<br><br><br><img src ="http://www.cppblog.com/API/aggbug/144345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-04-16 10:43 <a href="http://www.cppblog.com/API/archive/2011/04/16/144345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux命令终极系列之（find与xargs）</title><link>http://www.cppblog.com/API/archive/2011/04/16/144344.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sat, 16 Apr 2011 01:58:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/04/16/144344.html</guid><wfw:comment>http://www.cppblog.com/API/comments/144344.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/04/16/144344.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/144344.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/144344.html</trackback:ping><description><![CDATA[<font id="1" size="4"><strong>一、find 命令格式<br>
</strong></font>
<p><font id="1.1" size="3"><strong><br>
1、find命令的一般形式为；<br>
</strong></font></p>
<div class="codeblock"><code>find pathname -options [-print -exec -ok ...]</code></div>
<p><font id="1.2" size="3"><strong><br>
2、find命令的参数；<br>
</strong></font></p>
<div class="codeblock"><code>pathname: find命令所查找的目录路径。例如用.来表示当前目录，用/来表示系统根目录。<br>-print： find命令将匹配的文件输出到标准输出。<br>-exec： find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {&nbsp; } \;，注意{&nbsp;&nbsp; }和\；之间的空格。<br>-ok： 和-exec的作用相同，只不过以一种更为安全的模式来执行该参数所给出的shell命令，在执行每一个命令之前，都会给出提示，让用户来确定是否执行。</code></div>
<p><font id="1.3" size="3"><strong><br>
3、find命令选项<br>
</strong></font><br>
</p>
<div class="codeblock"><code>-name <br><br>按照文件名查找文件。<br><br>-perm <br>按照文件权限来查找文件。<br><br>-prune <br>使用这一选项可以使find命令不在当前指定的目录中查找，如果同时使用-depth选项，那么-prune将被find命令忽略。<br><br>-user <br>按照文件属主来查找文件。<br><br>-group <br>按照文件所属的组来查找文件。<br><br>-mtime -n +n <br>按照文件的更改时间来查找文件， - n表示文件更改时间距现在n天以内，+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项，但它们都和-m time选项。<br><br>-nogroup <br>查找无有效所属组的文件，即该文件所属的组在/etc/groups中不存在。<br><br>-nouser <br>查找无有效属主的文件，即该文件的属主在/etc/passwd中不存在。<br>-newer file1 ! file2 <br><br>查找更改时间比文件file1新但比文件file2旧的文件。<br>-type <br><br>查找某一类型的文件，诸如：<br><br>b - 块设备文件。<br>d - 目录。<br>c - 字符设备文件。<br>p - 管道文件。<br>l - 符号链接文件。<br>f - 普通文件。<br><br>-size n：[c] 查找文件长度为n块的文件，带有c时表示文件长度以字节计。<br>-depth：在查找文件时，首先查找当前目录中的文件，然后再在其子目录中查找。<br>-fstype：查找位于某一类型文件系统中的文件，这些文件系统类型通常可以在配置文件/etc/fstab中找到，该配置文件中包含了本系统中有关文件系统的信息。<br><br>-mount：在查找文件时不跨越文件系统mount点。<br>-follow：如果find命令遇到符号链接文件，就跟踪至链接所指向的文件。<br>-cpio：对匹配的文件使用cpio命令，将这些文件备份到磁带设备中。</code></div>
<p>另外,下面三个的区别:<br>
</p>
<div class="codeblock"><code>&nbsp;&nbsp; -amin n<br>　　查找系统中最后N分钟访问的文件<br><br>　　-atime n<br>　　查找系统中最后n*24小时访问的文件<br><br>　　-cmin n<br>　　查找系统中最后N分钟被改变文件状态的文件<br><br>　　-ctime n<br>　　查找系统中最后n*24小时被改变文件状态的文件<br><br>&nbsp;&nbsp; 　-mmin n<br>　　查找系统中最后N分钟被改变文件数据的文件<br><br>　　-mtime n<br>　　查找系统中最后n*24小时被改变文件数据的文件</code></div>
<p><font id="1.4" size="3"><strong><br>
4、使用exec或ok来执行shell命令<br>
</strong></font></p>
<p>    使用find时，只要把想要的操作写在一个文件里，就可以用exec来配合find查找，很方便的</p>
<p>    在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前，最好先用ls命令看一下，确认它们是所要删除的文件。</p>
<p>    exec选项后面跟随着所要执行的命令或脚本，然后是一对儿{ }，一个空格和一个\，最后是一个分号。为了使用exec选项，必须要同时使用print选项。如果验证一下find命令，会发现该命令只输出从当前路径起的相对路径及文件名。</p>
<p>    例如：为了用ls -l命令列出所匹配到的文件，可以把ls -l命令放在find命令的-exec选项中</p>
<div class="codeblock"><code># find . -type f -exec ls -l {&nbsp; } \;<br>-rw-r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34928 2003-02-25&nbsp; ./conf/httpd.conf<br>-rw-r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12959 2003-02-25&nbsp; ./conf/magic<br>-rw-r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 180 2003-02-25&nbsp; ./conf.d/README</code></div>
<p>上面的例子中，find命令匹配到了当前目录下的所有普通文件，并在-exec选项中使用ls -l命令将它们列出。<br>
在/logs目录中查找更改时间在5日以前的文件并删除它们：</p>
<div class="codeblock"><code>$ find logs -type f -mtime +5 -exec rm {&nbsp; } \;</code></div>
<p>    <strong>记住：</strong>在shell中用任何方式删除文件之前，应当先查看相应的文件，一定要小心！当使用诸如mv或rm命令时，可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。</p>
<p>在下面的例子中， find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件，并删除它们，只不过在删除之前先给出提示。</p>
<div class="codeblock"><code>$ find . -name "*.conf"&nbsp; -mtime +5 -ok rm {&nbsp; } \;<br>&lt; rm ... ./conf/httpd.conf &gt; ? n</code></div>
<p>按y键删除文件，按n键不删除。</p>
<p>任何形式的命令都可以在-exec选项中使用。</p>
<p>在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为&#8220; passwd*&#8221;的文件，例如passwd、passwd.old、passwd.bak，然后执行grep命令看看在这些文件中是否存在一个sam用户。</p>
<div class="codeblock"><code># find /etc -name "passwd*" -exec grep "sam" {&nbsp; } \;<br>sam:x:501:501::/usr/sam:/bin/bash</code></div>
<p><font id="2" size="4"><strong><br>
二、find命令的例子；<br>
</strong></font></p>
<p><font id="2.1" size="3"><strong><br>
1、查找当前用户主目录下的所有文件：<br>
</strong></font></p>
<p>下面两种方法都可以使用</p>
<div class="codeblock"><code>$ find $HOME -print<br>$ find ~ -print</code></div>
<br>
<font id="2.2" size="3"><strong><br>
2、让当前目录中文件属主具有读、写权限，并且文件所属组的用户和其他用户具有读权限的文件；<br>
</strong></font>
<div class="codeblock"><code>$ find . -type f -perm 644 -exec ls -l {&nbsp; } \;</code></div>
<p><font id="2.3" size="3"><strong><br>
3、为了查找系统中所有文件长度为0的普通文件，并列出它们的完整路径；<br>
</strong></font></p>
<div class="codeblock"><code>$ find / -type f -size 0 -exec ls -l {&nbsp; } \;</code></div>
<p><font id="2.4" size="3"><strong><br>
4、查找/var/logs目录中更改时间在7日以前的普通文件，并在删除之前询问它们；<br>
</strong></font></p>
<div class="codeblock"><code>$ find /var/logs -type f -mtime +7 -ok rm {&nbsp; } \;</code></div>
<p><font id="2.5" size="3"><strong><br>
5、为了查找系统中所有属于root组的文件；<br>
</strong></font></p>
<div class="codeblock"><code>$find . -group root -exec ls -l {&nbsp; } \;<br>-rw-r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 595 10月 31 01:09 ./fie1</code></div>
<p><font id="2.6" size="3"><strong><br>
6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。<br>
</strong></font></p>
<p>该命令只检查三位数字，所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ，才能使用下面这个命令</p>
<div class="codeblock"><code>$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7&nbsp; -ok<br>rm {&nbsp; } \;<br>&lt; rm ... ./admin.log001 &gt; ? n<br>&lt; rm ... ./admin.log002 &gt; ? n<br>&lt; rm ... ./admin.log042 &gt; ? n<br>&lt; rm ... ./admin.log942 &gt; ? n</code></div>
<p><font id="2.7" size="3"><strong><br>
7、为了查找当前文件系统中的所有目录并排序；<br>
</strong></font></p>
<div class="codeblock"><code>$ find . -type d | sort</code></div>
<p><font id="2.8" size="3"><strong><br>
8、为了查找系统中所有的rmt磁带设备；<br>
</strong></font></p>
<div class="codeblock"><code>$ find /dev/rmt -print</code></div>
<p><font id="3" size="4"><strong><br>
三、xargs<br>
</strong></font></p>
<p>xargs - build and execute command lines from standard input</p>
<p>在使用find命令的-exec选项处理匹配到的文件时，
find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制，这样在find命令运行几分钟之后，就会出现
溢出错误。错误信息通常是&#8220;参数列太长&#8221;或&#8220;参数列溢出&#8221;。这就是xargs命令的用处所在，特别是与find命令一起使用。</p>
<p>    find命令把匹配到的文件传递给xargs命令，而xargs命令每次只获取一部分文件而不是全部，不像-exec选项那样。这样它可以先处理最先获取的一部分文件，然后是下一批，并如此继续下去。</p>
<p>    在有些系统中，使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程，并非将匹配到的文件全部作为参数一次执行；这样在有些情况下就会出现进程过多，系统性能下降的问题，因而效率不高；</p>
<p>    而使用xargs命令则只有一个进程。另外，在使用xargs命令时，究竟是一次获取所有的参数，还是分批取得参数，以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。</p>
<p>来看看xargs命令是如何同find命令一起使用的，并给出一些例子。</p>
<p>下面的例子查找系统中的每一个普通文件，然后使用xargs命令来测试它们分别属于哪类文件</p>
<div class="codeblock"><code>#find . -type f -print | xargs file<br>./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text<br>./.kde/Autostart/.directory:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISO-8859 text\<br>......</code></div>
<p>在整个系统中查找内存信息转储文件(core dump) ，然后把结果保存到/tmp/core.log 文件中：</p>
<div class="codeblock"><code>$ find / -name "core" -print | xargs echo "" &gt;/tmp/core.log</code></div>
<p>上面这个执行太慢，我改成在当前目录下查找</p>
<div class="codeblock"><code>#find . -name "file*" -print | xargs echo "" &gt; /temp/core.log<br># cat /temp/core.log<br>./file6</code></div>
<p>在当前目录下查找所有用户具有读、写和执行权限的文件，并收回相应的写权限：</p>
<div class="codeblock"><code># ls -l<br>drwxrwxrwx&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096 10月 30 20:14 file6<br>-rwxrwxrwx&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 http3.conf<br>-rwxrwxrwx&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 httpd.conf<br><br># find . -perm -7 -print | xargs chmod o-w<br># ls -l<br>drwxrwxr-x&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096 10月 30 20:14 file6<br>-rwxrwxr-x&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 http3.conf<br>-rwxrwxr-x&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 httpd.conf</code></div>
<p>用grep命令在所有的普通文件中搜索hostname这个词：</p>
<div class="codeblock"><code># find . -type f -print | xargs grep "hostname"<br>./httpd1.conf:#&nbsp;&nbsp;&nbsp;&nbsp; different IP addresses or hostnames and have them handled by the<br>./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames<br>on your</code></div>
<p>用grep命令在当前目录下的所有普通文件中搜索hostnames这个词：</p>
<div class="codeblock"><code># find . -name \* -type f -print | xargs grep "hostnames"<br>./httpd1.conf:#&nbsp;&nbsp;&nbsp;&nbsp; different IP addresses or hostnames and have them handled by the<br>./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames<br>on your</code></div>
<p>注意，在上面的例子中， \用来取消find命令中的*在shell中的特殊含义。</p>
<p>find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。</p>
<p><font id="4" size="4"><strong><br>
四、find 命令的参数<br>
</strong></font></p>
<p>下面是find一些常用参数的例子，有用到的时候查查就行了，像上面前几个贴子，都用到了其中的的一些参数，也可以用man或查看论坛里其它贴子有find的命令手册</p>
<p><font id="4.1" size="3"><strong><br>
1、使用name选项<br>
</strong></font></p>
<p>文件名选项是find命令最常用的选项，要么单独使用该选项，要么和其他选项一起使用。</p>
<p>可以使用某种文件名模式来匹配文件，记住要用引号将文件名模式引起来。</p>
<p>不管当前路径是什么，如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件，使用~作为 'pathname'参数，波浪号~代表了你的$HOME目录。</p>
<div class="codeblock"><code>$ find ~ -name "*.txt" -print</code></div>
<p>想要在当前目录及子目录中查找所有的&#8216; *.txt&#8217;文件，可以用：</p>
<div class="codeblock"><code>$ find . -name "*.txt" -print</code></div>
<p>想要的当前目录及子目录中查找文件名以一个大写字母开头的文件，可以用：</p>
<div class="codeblock"><code>$ find . -name "[A-Z]*" -print</code></div>
<p>想要在/etc目录中查找文件名以host开头的文件，可以用：</p>
<div class="codeblock"><code>$ find /etc -name "host*" -print</code></div>
<p>想要查找$HOME目录中的文件，可以用：</p>
<div class="codeblock"><code>$ find ~ -name "*" -print 或find . -print</code></div>
<p>要想让系统高负荷运行，就从根目录开始查找所有的文件。</p>
<div class="codeblock"><code>$ find / -name "*" -print</code></div>
<p>如果想在当前目录查找文件名以两个小写字母开头，跟着是两个数字，最后是.txt的文件，下面的命令就能够返回名为ax37.txt的文件：</p>
<div class="codeblock"><code>$find . -name "[a-z][a-z][0--9][0--9].txt" -print</code></div>
<p><font id="4.2" size="3"><strong><br>
2、用perm选项<br>
</strong></font></p>
<p>按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。</p>
<p>如在当前目录下查找文件权限位为755的文件，即文件属主可以读、写、执行，其他用户可以读、执行的文件，可以用：</p>
<div class="codeblock"><code>$ find . -perm 755 -print</code></div>
<p>还有一种表达方法：在八进制数字前面要加一个横杠-，表示都匹配，如-007就相当于777，-006相当于666</p>
<div class="codeblock"><code># ls -l<br>-rwxrwxr-x&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 http3.conf<br>-rw-rw-rw-&nbsp;&nbsp;&nbsp; 1 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34890 10月 31 00:57 httpd1.conf<br>-rwxrwxr-x&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 httpd.conf<br>drw-rw-rw-&nbsp;&nbsp;&nbsp; 2 gem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096 10月 26 19:48 sam<br>-rw-rw-rw-&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2792 10月 31 20:19 temp<br><br># find . -perm 006<br># find . -perm -006<br>./sam<br>./httpd1.conf<br>./temp</code></div>
<p>-perm mode:文件许可正好符合mode</p>
<p>-perm +mode:文件许可部分符合mode</p>
<p>-perm -mode: 文件许可完全符合mode</p>
<p><font id="4.3" size="3"><strong><br>
3、忽略某个目录<br>
</strong></font></p>
<p>如果在查找文件时希望忽略某个目录，因为你知道那个目录中没有你所要查找的文件，那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心，因为如果你同时使用了-depth选项，那么-prune选项就会被find命令忽略。</p>
<p>如果希望在/apps目录下查找文件，但不希望在/apps/bin目录下查找，可以用：</p>
<div class="codeblock"><code>$ find /apps -path "/apps/bin" -prune -o -print</code></div>
<p><font id="4.4" size="3"><strong><br>
4、使用find查找文件的时候怎么避开某个文件目录<br>
</strong></font></p>
<p>比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件</p>
<div class="codeblock"><code>find /usr/sam -path "/usr/sam/dir1" -prune -o -print </code></div>
<div class="codeblock"><code>find [-path ..] [expression] 在路径列表的后面的是表达式</code></div>
<p>-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o<br>
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值，与 shell 的 &amp;&amp; 和 || 类似如果 -path
"/usr/sam" 为真，则求值 -prune , -prune 返回真，与逻辑表达式为真；否则不求值 -prune，与逻辑表达式为假。如果
-path "/usr/sam" -a -prune 为假，则求值 -print ，-print返回真，或逻辑表达式为真；否则不求值
-print，或逻辑表达式为真。</p>
<p>这个表达式组合特例可以用伪码写为</p>
<div class="codeblock"><code>if -path "/usr/sam"&nbsp; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -prune<br>else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -print</code></div>
<p>避开多个文件夹</p>
<div class="codeblock"><code>find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print</code></div>
<p>圆括号表示表达式的结合。<br>
</p>
<div class="codeblock"><code>\ 表示引用，即指示 shell 不对后面的字符作特殊解释，而留给 find 命令去解释其意义。</code></div>
<p>查找某一确定文件，-name等选项加在-o 之后</p>
<div class="codeblock"><code>#find /usr/sam&nbsp; \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print</code></div>
<p><font id="4.5" size="3"><strong><br>
5、使用user和nouser选项<br>
</strong></font></p>
<p>按文件属主查找文件，如在$HOME目录中查找文件属主为sam的文件，可以用：</p>
<div class="codeblock"><code>$ find ~ -user sam -print</code></div>
<p>在/etc目录下查找文件属主为uucp的文件：</p>
<div class="codeblock"><code>$ find /etc -user uucp -print</code></div>
<p>为了查找属主帐户已经被删除的文件，可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时，不必给出用户名； find命令能够为你完成相应的工作。</p>
<p>例如，希望在/home目录下查找所有的这类文件，可以用：<br>
</p>
<div class="codeblock"><code>$ find /home -nouser -print</code></div>
<p><font id="4.6" size="3"><strong><br>
6、使用group和nogroup选项<br>
</strong></font></p>
<p>就像user和nouser选项一样，针对文件所属于的用户组， find命令也具有同样的选项，为了在/apps目录下查找属于gem用户组的文件，可以用：</p>
<div class="codeblock"><code>$ find /apps -group gem -print</code></div>
<p>要查找没有有效所属用户组的所有文件，可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件</p>
<div class="codeblock"><code>$ find / -nogroup-print</code></div>
<p><font id="4.7" size="3"><strong><br>
7、按照更改时间或访问时间等查找文件<br>
</strong></font></p>
<p>如果希望按照更改时间来查找文件，可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了，很有可能某一个文件的长度在此期间增长迅速，这时就可以用mtime选项来查找这样的文件。</p>
<p>用减号-来限定更改时间在距今n日以内的文件，而用加号+来限定更改时间在距今n日以前的文件。</p>
<p>希望在系统根目录下查找更改时间在5日以内的文件，可以用：</p>
<div class="codeblock"><code>$ find / -mtime -5 -print</code></div>
<p>为了在/var/adm目录下查找更改时间在3日以前的文件，可以用：</p>
<div class="codeblock"><code>$ find /var/adm -mtime +3 -print</code></div>
<p><font id="4.8" size="3"><strong><br>
8、查找比某个文件新或旧的文件<br>
</strong></font></p>
<p>如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件，可以使用-newer选项。它的一般形式为：</p>
<div class="codeblock"><code>newest_file_name ! oldest_file_name</code></div>
<p>其中，！是逻辑非符号。</p>
<p>查找更改时间比文件sam新但比文件temp旧的文件：</p>
<p>例：有两个文件</p>
<div class="codeblock"><code>-rw-r--r--&nbsp;&nbsp;&nbsp; 1 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:07 fiel<br>-rw-rw-rw-&nbsp;&nbsp;&nbsp; 1 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34890 10月 31 00:57 httpd1.conf<br>-rwxrwxr-x&nbsp;&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 httpd.conf<br>drw-rw-rw-&nbsp;&nbsp;&nbsp; 2 gem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096 10月 26 19:48 sam<br>-rw-rw-rw-&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2792 10月 31 20:19 temp<br><br># find -newer httpd1.conf&nbsp; ! -newer temp -ls<br>1077669&nbsp;&nbsp;&nbsp; 0 -rwxrwxr-x&nbsp;&nbsp; 2 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:01 ./httpd.conf<br>1077671&nbsp;&nbsp;&nbsp; 4 -rw-rw-rw-&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2792 10月 31 20:19 ./temp<br>1077673&nbsp;&nbsp;&nbsp; 0 -rw-r--r--&nbsp;&nbsp; 1 sam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 10月 31 01:07 ./fiel</code></div>
<p>查找更改时间在比temp文件新的文件：</p>
<div class="codeblock"><code>$ find . -newer temp -print</code></div>
<br>
<font id="4.9" size="3"><strong><br>
9、使用type选项<br>
</strong></font>
<p>在/etc目录下查找所有的目录，可以用：</p>
<div class="codeblock"><code>$ find /etc -type d -print</code></div>
<p>在当前目录下查找除目录以外的所有类型的文件，可以用：<br>
</p>
<div class="codeblock"><code>$ find . ! -type d -print</code></div>
<p>在/etc目录下查找所有的符号链接文件，可以用<br>
</p>
<div class="codeblock"><code>$ find /etc -type l -print</code></div>
<p><font id="4.10" size="3"><strong><br>
10、使用size选项<br>
</strong></font></p>
<p>可以按照文件长度来查找文件，这里所指的文件长度既可以用块（block）来计量，也可以用字节来计量。以字节计量文件长度的表达形式为N c；以块计量文件长度只用数字表示即可。</p>
<p>在按照文件长度查找文件时，一般使用这种以字节表示的文件长度，在查看文件系统的大小，因为这时使用块来计量更容易转换。<br>
在当前目录下查找文件长度大于1 M字节的文件：<br>
</p>
<div class="codeblock"><code>$ find . -size +1000000c -print</code></div>
<p>在/home/apache目录下查找文件长度恰好为100字节的文件：</p>
<div class="codeblock"><code>$ find /home/apache -size 100c -print</code></div>
<p>在当前目录下查找长度超过10块的文件（一块等于512字节）： </p>
<div class="codeblock"><code>$ find . -size +10 -print</code></div>
<p><font id="4.11" size="3"><strong><br>
11、使用depth选项<br>
</strong></font></p>
<p>在使用find命令时，可能希望先匹配所有的文件，再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是，当在使用find命令向磁带上备份文件系统时，希望首先备份所有的文件，其次再备份子目录中的文件。</p>
<p>在下面的例子中， find命令从文件系统的根目录开始，查找一个名为CON.FILE的文件。</p>
<p>它将首先匹配所有的文件然后再进入子目录中查找。</p>
<div class="codeblock"><code>$ find / -name "CON.FILE" -depth -print</code></div>
<p><font id="4.12" size="3"><strong><br>
12、使用mount选项<br>
</strong></font></p>
<p>在当前的文件系统中查找文件（不进入其他文件系统），可以使用find命令的mount选项。</p>
<p>从当前目录开始查找位于本文件系统中文件名以XC结尾的文件：</p>
<div class="codeblock"><code>$ find . -name "*.XC" -mount -print</code></div>
<p><br></p><img src ="http://www.cppblog.com/API/aggbug/144344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-04-16 09:58 <a href="http://www.cppblog.com/API/archive/2011/04/16/144344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux中的Crontab</title><link>http://www.cppblog.com/API/archive/2011/04/16/144341.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sat, 16 Apr 2011 00:26:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/04/16/144341.html</guid><wfw:comment>http://www.cppblog.com/API/comments/144341.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/04/16/144341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/144341.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/144341.html</trackback:ping><description><![CDATA[<p><strong>1.crontab命令选项:</strong> <br>
-u指定一个用户,<br>
-l列出某个用户的任务计划,<br>
-r删除某个用户的任务,<br>
-e编辑某个用户的任务</p>
<p><strong>2.cron配置文件（文件位置：/etc/crontab）语法:</strong> <br>
分&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  小时&nbsp;&nbsp;  日&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  星期&nbsp;&nbsp;&nbsp;&nbsp;  命令<br>
0-59&nbsp;&nbsp;  0-23&nbsp;&nbsp;  1-31&nbsp;&nbsp;  1-12&nbsp;&nbsp;&nbsp;&nbsp;  0-6&nbsp;&nbsp;&nbsp;&nbsp;  command&nbsp;&nbsp;&nbsp;&nbsp;  (取值范围,0表示周日一般一行对应一个任务)</p>
<p><strong>3.记住几个特殊符号的含义:</strong> <br>
&#8220;*&#8221;代表取值范围内的数字,<br>
&#8220;/&#8221;代表&#8221;每&#8221;,<br>
&#8220;-&#8221;代表从某个数字到某个数字,<br>
&#8220;,&#8221;分开几个离散的数字</p>
<p><strong>4.配置文件的写法</strong> <br>
可以使用crontab -e命令来编辑,也可以直接修改/etc/crontab文件<br>
具体格式如下：<br>
Minute Hour Day Month Dayofweek&nbsp;&nbsp;  command<br>
分钟&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;  命令<br>
每个字段代表的含义如下：<br>
Minute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每个小时的第几分钟执行该任务<br>
Hour&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每天的第几个小时执行该任务<br>
Day&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每月的第几天执行该任务<br>
Month&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每年的第几个月执行该任务<br>
DayOfWeek&nbsp;&nbsp;&nbsp;&nbsp;  每周的第几天执行该任务<br>
Command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定要执行的程序<br>
在这些字段里，除了&#8220;Command&#8221;是每次都必须指定的字段以外，其它字段皆为可选字段，可视需要决定。对于不指定的字段，要用&#8220;*&#8221;来填补其位置。<br>
举例如下：<br>
5&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定每小时的第5分钟执行一次ls命令<br>
30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;  &nbsp; *&nbsp;&nbsp;  &nbsp;&nbsp;  ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定每天的 5:30 执行ls命令<br>
30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;   *&nbsp;&nbsp;&nbsp;&nbsp; * &nbsp;&nbsp;&nbsp;&nbsp;  ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定每月8号的7：30分执行ls命令<br>
30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;        *&nbsp;&nbsp;  &nbsp;&nbsp;  ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定每年的6月8日5：30执行ls命令<br>
30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          *&nbsp;&nbsp;&nbsp;&nbsp;      0&nbsp;&nbsp;  &nbsp;&nbsp;  ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
指定每星期日的6:30执行ls命令[注 0表示星期天，1表示星期1，以此类推，也可以用英文:sun表示周天，mon表示周一等。]<br>
30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10,20&nbsp; *    &nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;  &nbsp;&nbsp;  ls&nbsp;&nbsp;&nbsp;&nbsp;  每月10号及20号的3：30执行ls命令[注：&#8220;，&#8221;用来连接多个不连续的时段]<br>
25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8-11&nbsp; *&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;  *&nbsp; &nbsp; &nbsp;    ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每天8-11点的第25分钟执行ls命令[注：&#8220;-&#8221;用来连接连续的时段]<br>
*/15&nbsp;&nbsp;    *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;    * &nbsp;&nbsp; &nbsp;    ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]<br>
30    &nbsp;&nbsp;&nbsp;&nbsp;  6&nbsp;&nbsp; &nbsp; &nbsp; */10&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;      *&nbsp;&nbsp;&nbsp;    ls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  每个月中，每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6：30执行一次ls命令。 ]<br>
50  &nbsp;&nbsp;&nbsp;&nbsp;    7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;      *&nbsp;&nbsp;&nbsp;&nbsp;  root&nbsp;&nbsp;&nbsp;&nbsp;
run-parts&nbsp;&nbsp;&nbsp;&nbsp;  /etc/cron.daily&nbsp;&nbsp;  每天7：50以root
身份执行/etc/cron.daily目录中的所有可执行文件</p>
<p>&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; [ 注：run-parts参数表示，执行后面目录中的所有可执行文件。</p>
<p><br></p>
<p style="color: red;">下面是Linux 上crontab手册中的知识点：</p>
<p><strong>1. crontab文件&#8220;正式行&#8221;的开始</strong></p>
<p>空行、以空格或者&#8220;tab&#8221;开行的行，被cron(daemon)忽略。</p>
<p>以#开始的行，作为注释被cron(daemon)忽略。</p>
<p>&#8220;注释&#8221;不允许与&#8220;命令&#8221;放在同一行（作为命令的注释），会被作为&#8220;第六段&#8221;，被cron(daemon)执行。</p>
<p>同样的，也不能放在设置环境变量的同一行。</p>
<p><strong>2. 在crontab文件中指定环境变量</strong></p>
<p>设置变量使用</p>
<p>name = value</p>
<p>这样的格式，&#8221;=&#8221;号左右的空格不是必须的。</p>
<p>几个变量默认已经被设置，比如：</p>
<p>SHELL=/bin/sh<br>
HOEM=/home/nnix<br>
LOGNAME=nnix</p>
<p>其中SHELL和HOME可以重新设定，LOGNAME则不可（大概跟确定crontab文件的位置有关）。</p>
<p>默认，crontab会把执行的输出发送给crontab的所有者，除非重新设定变量：</p>
<p>MAILTO=other_or_email</p>
<p>另外，当crontab发送输入时的邮件编码，可以通过设置变量 CONTENT_TYPE 和 CONTENT_TRANSFER_ENCODING 来使用正确的编码来发送邮件。</p>
<p><strong>3. crontab 文件的分段</strong></p>
<p>依次分别是</p>
<ul>
    <li>分（0-59）</li>
    <li>时（0-23）</li>
    <li>日（1-31）</li>
    <li>月（1-23，或者英文名）</li>
    <li>周（0-6，或者英文名，0表示周日）</li>
    <li>要执行的内容</li>
</ul>
<p><strong>4. 前五段：时间和日期</strong></p>
<p>1）表示任意：* 号表示 &#8220;任意&#8221;（first-last)。</p>
<p>2）指定数字，表示指定的时间。</p>
<p>3）指定段，表示&#8220;开始-结束&#8221;内包含的数：比如3-6,表示3，4，5，6</p>
<p>4）指定列表：比如 &#8220;1,2,3,4&#8243;,&#8221;0-4,8-12&#8243;</p>
<p>5）指定&#8220;步长&#8221;：8-14/2 表示8，10，12，14</p>
<p><strong>5. 模糊的第六段：</strong></p>
<p>1）除去前五段，从第六段开始到换行符或者&#8220;%&#8221;为止，为要执行的命令。</p>
<p>2）默认第六段将被/bin/sh执行，除非在crontab文件中指定了非/bin/sh的SHELL变量。</p>
<p>3）第六段中的&#8221;%&#8221;号，除非前面加&#8221;\&#8221;号转交，否则，&#8220;%&#8221;号将结束命令行、换行的意义，并且其后的内容会被做为标准输入发送给前面的命令。</p>
<p><strong>6. 冲突的逻辑</strong></p>
<p>日期可以用月限定，也可以用&#8220;星期&#8221;指定，如果两个段有冲突（比如这两段不同时为&#8220;*&#8221;），那么，第六段的命令将在匹配任何一个的情况下运行，比如</p>
<p>&#8220;30 4 1,15 * 5&#8243;，将在每月的1号和15号 加 每个周五，上午4：30运行。</p>
<p><strong>7. crontab文件中的神密符号&#8220;%&#8221;</strong></p>
<p>可能会遇到的一个问题是，在第六段中需要使用date生成日志文件名，比如：</p>
<p>0   4   *   *   *   /opt/cron/mysql_dump.sh    &gt; /srv/logs/`date +%y-%m-%d`.dump.log</p>
<p>这时会发现crontab怎么也不运行这个mysql_dump.sh，也看不到有日志生成。这是因为在crontab文件中，&#8221;%&#8221;是有特殊含义 的。假如不需要&#8220;%&#8221;的特殊作用，需要使用转义符转义。上面应该写成：</p>
<p>0   4   *   *   *   /opt/cron/mysql_dump.sh    &gt; /srv/logs/`date +\%y-\%m-\%d`.dump.log</p>
<p>&#8220;%&#8221;在crontab文件中，有&#8220;结束命令行&#8221;、&#8220;换行&#8221;、&#8220;重定向&#8221;的作用，比如：</p>
<p>0  22  * * 1-5  mail -s &#8220;It&#8217;s 10:00 pm&#8221; joe%Joe,%%Where are your kids?%</p>
<p>将会在周一至周五的22:00发送一分内容为：</p>
<p>Joe,&lt;换行&gt;<br>
&lt;换行&gt;<br>
Where are your kids?&lt;换行&gt;</p>
<p><strong>8. 不能理解的特殊用法</strong></p>
<p>@reboot    :    Run once, at startup.</p>
<p>为了达到在开机后运行，且只运行一次的目的，除了这个，恐怕无法通过前五段的设置来实现吧？</p>
<p>cron是linux下定时执行工具，可在完全无人工干预的情况下作业。可以用一下命令来手动开启或关闭该任务： <br>
<br>
/sbin/service crond start 启动服务 <br>
/sbin/service crond stop 关闭服务 <br>
/sbin/service crond restart 重新启动服务 <br>
/sbin/service crond reload 重新加载服务 <br>
<font size="3">你也可以将这个服务在系统启动的时候自动启动:</font></p>
<p><font size="3">　　在/etc/rc.d/rc.local这个脚本的末尾加上:</font></p>
<p><font size="+0"><font size="+0">　　/sbin/service crond start</font></font></p>
<p><font size="+0"><font size="+0">　现在Cron这个服务已经在进程里面了，我们就可以用这个服务了</font></font></p>
<p><font size="+0"><font size="+0">crontab -u root -e可以编辑制定用户</font></font></p>
<p><font size="+0"><font size="+0">每次编辑完某个用户的cron设置后，cron自动在/var/spool
/cron下生成一个与此用户同名的文件，此用户的cron信息都记录在这个文件中，这个文件是不可以直接编辑的，只可以用crontab -e
来编辑。cron启动后每过一份钟读一次这个文件，检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。</font></font></p>
<p><font size="+0"><font size="+0">　　2.编辑/etc/crontab 文件配置cron</font></font></p>
<p><font size="+0"><font size="+0">　　cron服务每分钟不仅要读一次/var/spool/cron内的所有文
件，还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的，而编辑
/etc/crontab是针对系统的任务。此文件的文件格式是:</font></font></p>
<p><font size="+0"><font size="+0">　　SHELL=/bin/bash</font></font></p>
<p><font size="+0"><font size="+0">　　PATH=/sbin:/bin:/usr/sbin:/usr/bin</font></font></p>
<p><font size="+0"><font size="+0">　　MAILTO=root //如果出现错误，或者有数据输出，数据作为邮件发给这个帐号</font></font></p>
<p><font size="+0"><font size="+0">　　HOME=/ //使用者运行的路径,这里是根目录</font></font></p>
<p><font size="+0"><font size="+0">　　# run-parts</font></font></p>
<p><font size="+0"><font size="+0">　　01 * * * * root /home/bluesky/test.sh&gt;&gt;test.log //每小时执行</font></font><font size="+0"><font size="+0">test.sh</font></font><font size="+0"><font size="+0">的脚本</font></font></p>
<p><font size="+0"><font size="+0">　　02 4 * * * root&nbsp; </font></font><font size="+0"><font size="+0">/home/bluesky/test.sh</font></font><font size="+0"><font size="+0">//每天执行</font></font><font size="+0"><font size="+0">test.sh</font></font><font size="+0"><font size="+0">内的脚本</font></font></p>
<p><font size="+0"><font size="+0">　　22 4 * * 0 root&nbsp; </font></font><font size="+0"><font size="+0">/home/bluesky/test.sh </font></font><font size="+0"><font size="+0">//每星期执行</font></font><font size="+0"><font size="+0">test.sh</font></font><font size="+0"><font size="+0">内的脚本</font></font></p>
<p><font size="+0"><font size="+0">　　42 4 1 * * root run-parts </font></font><font size="+0"><font size="+0">/home/bluesky/test.sh</font></font><font size="+0"><font size="+0"> //每月去执行</font></font><font size="+0"><font size="+0">test.sh</font></font><font size="+0"><font size="+0">内的脚本</font></font></p>
<p><font size="+0"><font size="+0">　　大家注意"run-parts"这个参数了，如果去掉这个参数的话，后面就可以写要运行的某个脚本名，而不是文件夹名了。</font></font></p>
<br><br> <img src ="http://www.cppblog.com/API/aggbug/144341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-04-16 08:26 <a href="http://www.cppblog.com/API/archive/2011/04/16/144341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fedora自动挂载windows分区</title><link>http://www.cppblog.com/API/archive/2011/04/10/143863.html</link><dc:creator>C++技术中心</dc:creator><author>C++技术中心</author><pubDate>Sun, 10 Apr 2011 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/API/archive/2011/04/10/143863.html</guid><wfw:comment>http://www.cppblog.com/API/comments/143863.html</wfw:comment><comments>http://www.cppblog.com/API/archive/2011/04/10/143863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/API/comments/commentRss/143863.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/API/services/trackbacks/143863.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">&nbsp;一.起源<br>&nbsp;&nbsp;&nbsp; 自己的T400上装windows7用了一段时间，发现经常卡，特别是那个IE8，平时我喜欢装上杂七杂八的软件。<br>可能软件装太多，系统自启动的程序也太多，不用的软件都挂在后台，占用了大量的CPU与内存资源。所以<br>心血来潮，准备以后用fedora系统了。不过最主要的原因是由于自己的工作转向了windows平台的开发，担心<br>多年积累的linux 知识给忘掉了。所以我的个人电脑上以后都用fedora了。因为我装的是双系统。我划了30G<br>的分区给fedora14。其他的windows 分区还是保留着的。在feodra下，是可以直接访问windows的ntfs分区。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是每次在fedora点击进入windows分区时，经常要输入root密码。这是因为当你点击windows分区的图标时<br>做了类似的mount命令，这个命令只有root才有权限。&nbsp; 这样每次用起来就不大方便了（其实我还有另一个不大<br>方便的原因，这里就不告诉你了，哈哈）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天我们的核心问题是如何在fedora 启动时就挂载好了windows分区。<br><br>二.其中的一个方法<br>&nbsp;&nbsp; 1. 这里介绍一下mount命令。比如，我要挂载一个分区。可以用以下命令看到：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">dev<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls&nbsp;</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我这里可以有看到sda1,sda2,sda3..,这就是所谓的分区。假设我挂载sda5分区，挂载到/media/Install目录,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令如下：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">mkdir</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">media</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Install</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mount&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">dev</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sda5&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">media</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Install</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">t&nbsp;ntfs&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;</span><span style="COLOR: #0000ff">umask</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">0000</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;uid</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">500</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;case_sensitive</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">false&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;nls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">gb2312</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先创建一个/media/Install目录，把sda5分区，挂载到这个Install目录下。<br>&nbsp;&nbsp; 2.我们来看看，这些参数：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t代表要挂载的分区格式，这里是ntfs<br>&nbsp;&nbsp;&nbsp;&nbsp; -o umask=000表示：这个大家可以了解一下chmod，chmod的含义是可以拥用的权限。但是umask正好相反，<br>&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; 表示不可以有某权限。在linux下权限可以表示为:rwx<span style="COLOR: red">rwx</span>rwx，有三组rwx，分别代表<br>&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; 拥用者权限，所属组权限，其他用户权限。rwx分别代表可读，可写，可执行。rwx值为<br>&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; 4,2,1。然后如果只有可读可执行，那么就是4+1=5. 假设用chmod表示一个拥有者，<br>&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; 所属组，其他用户拥用可读可写不可执行。那么值为770，而对应的umask应该是000。<br>&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; 所以这里的umask=007表示任何用户都有权限读写但不能执行。<br>&nbsp;&nbsp;&nbsp; -o uid=500表示：挂载文件的归属用户。uid可以在/etc/passwd文件中查看<br>&nbsp;&nbsp; <span style="COLOR: #000000"></span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;case_sensitive</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">false表示：</span>希望Linux对于NTFS卷具有和Windows相同的表现，那么就应将case_sensitive选项设<br>&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; 置为false。将选项设置为true将使驱动具有和Linux类似的表现（默认设置）<br>&nbsp;&nbsp; -o nls=gb2312表示：决定字符是如何被显示的<br><br>&nbsp; 3. 现在知道了命令的使用，如何让系统启动的时候运行该命令呢。可以执行以下命令<br>&nbsp;&nbsp;&nbsp;&nbsp; 先切换到root用户下 <br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">su&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;root</span></div>
<br>&nbsp;&nbsp;&nbsp; 然后<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">vi&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">etc</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">rc</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">d</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">rc</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">local</span></div>
<br>&nbsp;&nbsp;&nbsp; 在文件尾加入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #000000">mount&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">dev</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sda5&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">media</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Install</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">t&nbsp;ntfs&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;</span><span style="COLOR: #0000ff">umask</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">0000</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;uid</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">500</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;case_sensitive</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">false&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;nls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">gb2312<br>&nbsp;&nbsp; 注意：先在/media下建立Install目录。<br><br>三.这样挂载是有问题的。这是为什么呢。因为这里挂载的sda5假设对应的是windows下的D盘。但也有可能变成E盘。这是<br>&nbsp;&nbsp;&nbsp; 因为</span>装置档案名称有时会因为 BIOS 的设定或插入次序而改变，引起混乱。所以，必须用一个唯一可以标识的值来标识，那<br>&nbsp;&nbsp; 就是UUID。当然UUID其实也是可以人为更改的。注意以下命令都要在root下运行:<br>&nbsp;&nbsp; 1. 查看分区的UUID<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">blkid&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">s&nbsp;UUID</span></div>
<span style="FONT-WEIGHT: bold"><br><br></span>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">df&nbsp;&nbsp; #df命令可以查看的所有的已经挂载的分区<br></span></div>
<br>&nbsp;&nbsp; 2. 改变UUID<br>设定 UUID 可以使用命令「<code>tune2fs -U <em>UUID</em> <em>装置档案</em></code>」:
<pre><strong>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">tune2fs&nbsp;</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">-</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">U&nbsp;51f7e9a4</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">-</strong></span><span style="COLOR: #800000"><strong xmlns="http://www.w3.org/1999/xhtml">5154</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">-</strong></span><span style="COLOR: #800000"><strong xmlns="http://www.w3.org/1999/xhtml">4e29</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">-</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">a7a6</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">-</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">208417290b85&nbsp;</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">/</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">dev</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">/</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">sda</strong></span></div>
</strong></pre>
<p>-U 的参数如果为 random 表示直接产生一个随意的新 UUID： </p>
<pre><strong>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">tune2fs&nbsp;</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">-</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">U&nbsp;random&nbsp;</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">/</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">dev</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">/</strong></span><span style="COLOR: #000000"><strong xmlns="http://www.w3.org/1999/xhtml">sda</strong></span></div>
</strong></pre>
<p>-U 的参数如果为 time 表示直接依当前时间产生一个新的 UUID： </p>
<span style="FONT-FAMILY: monospace"><span style="FONT-WEIGHT: bold">
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000; FONT-WEIGHT: normal">tune2fs&nbsp;-U&nbsp;</span><span style="COLOR: #0000ff; FONT-WEIGHT: normal">time</span><span style="COLOR: #000000; FONT-WEIGHT: normal">&nbsp;/dev/</span><span style="COLOR: #000000"><span style="FONT-WEIGHT: normal">sda1</span><br></span></div>
<br></span></span>
<p>-U 的参数如果为 clear 表示清除档案系统的 UUID： </p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">tune2fs&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">U&nbsp;clear&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">dev</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sda1</span></div>
<br>
<div style="FLOAT: right; MARGIN-LEFT: 5px" class=editsection>[<a title="Edit section: IBM JFS" href="http://wiki.debian.org.hk/wiki/index.php?title=Manage_filesystem_with_UUID&amp;action=edit&amp;section=6">编辑</a>]</div>
&nbsp; 3.那么我可以修改上面的mount命令，使用以下：<br>&nbsp;
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">mount&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">U 26A41C22A41BF353&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">media</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Install</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">t&nbsp;ntfs&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;</span><span style="COLOR: #0000ff">umask</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">0000</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;uid</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">500</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;case_sensitive</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">false&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;nls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">gb2312<br></span></div>
<br><br><br><br><br><br></span>
<img src ="http://www.cppblog.com/API/aggbug/143863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/API/" target="_blank">C++技术中心</a> 2011-04-10 12:00 <a href="http://www.cppblog.com/API/archive/2011/04/10/143863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>