<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title><![CDATA[天德池]]></title>
  <subtitle><![CDATA[这里不是洗澡的地方]]></subtitle>
  <link href="/atom.xml" rel="self"/>
  <link href="http://tiandechi.com/"/>
  <updated>2015-06-22T03:15:12.000Z</updated>
  <id>http://tiandechi.com/</id>
  
  <author>
    <name><![CDATA[钢仔]]></name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title><![CDATA[Linux命令行下”!”的十个神奇用法]]></title>
    <link href="http://tiandechi.com/2015/06/22/Linux%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%8B%E2%80%9D-%E2%80%9D%E7%9A%84%E5%8D%81%E4%B8%AA%E7%A5%9E%E5%A5%87%E7%94%A8%E6%B3%95/"/>
    <id>http://tiandechi.com/2015/06/22/Linux命令行下”-”的十个神奇用法/</id>
    <published>2015-06-22T02:15:47.000Z</published>
    <updated>2015-06-22T03:15:12.000Z</updated>
    <content type="html"><![CDATA[<p>Linux 系统中，“!” 符号或者操作符通常被用做逻辑否定的操作符，同时也通过一些调整和改动命令来从历史记录中找出你需要的命令行。下面演示的命令行在bash Shell中都已经明确检查过可用了。不过我没有在其他的 Shell 解释器下测试过，不过我相信这些命令也不会在其他的解释器下运行。那么现在就让我们学习一下 “!” 这神奇而独特的用法吧！</p>
<a id="more"></a>
<h1 id="从历史记录中使用命令号来运行命令">从历史记录中使用命令号来运行命令</h1><p>你也许从没意识到过可以从命令行历史记录(之前执行过的命令)里执行一条命令，首先输入 “history” 命令得到命令的序号。 </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">history</span></span><br></pre></td></tr></table></figure>
<p><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1etcnryoruag20mn0e7aaj.gif" alt="1"></p>
<p>这时你可以通过命令 history 的输出中的命令序号来执行一条命令。</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>!<span class="number">1551</span></span><br></pre></td></tr></table></figure>
<p><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1etcnt6gynjg20mn0e7di0.gif" alt="2"></p>
<p>上面可以看到它执行了号码为1551的 top 命令，这种执行方式对执行某些特别长的命令非常有用，你只要使用”!”符号加上命令的序号就能执行该命令啦。</p>
<h1 id="执行指定的之前执行过的命令">执行指定的之前执行过的命令</h1><p>你可以运行 !-1、!-2 或者 !-7 等命令来执行你记录序列中的倒数第一条命令、倒数第二条命令已经倒数第七条等等。。。和上面的方式一样，你需要先用 history 命令来列出命令列表。其实这个命令非常有用，你可以通过它来确定没有执行过某些错误命令比如 “rm command &gt;file” 或者别的危险指令。这里给出了执行倒数第六个、第八个和第十个命令的效果。</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>history</span><br><span class="line"><span class="variable">$ </span>!-<span class="number">6</span></span><br><span class="line"><span class="variable">$ </span>!-<span class="number">8</span></span><br><span class="line"><span class="variable">$ </span>!-<span class="number">10</span></span><br></pre></td></tr></table></figure>
<p><img src="http://ww3.sinaimg.cn/large/6e8d8f65gw1etcnwm2xaog20mn0e7myv.gif" alt="3"></p>
<h1 id="向一条新命令传递旧命令的参数避免重复输入">向一条新命令传递旧命令的参数避免重复输入</h1><p>比如说我需要列出 ‘/home/$USER/Binary/firefox’ 这个目录。</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>ls /home/<span class="variable">$USER</span>/<span class="constant">Binary/</span>firefox</span><br></pre></td></tr></table></figure>
<p>但是这个时候我又想用 “ls-l“查看这个目录下的具体信息，那么我需要重新输入上面的命令吗？当然不需要，你只要用下面这个命令：</p>
<figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="keyword">ls</span> -<span class="keyword">l</span> !$</span><br></pre></td></tr></table></figure>
<p>“!$” 符号可以将上一条命令的参数传递给下一条命令参数：</p>
<p><img src="http://ww3.sinaimg.cn/large/6e8d8f65gw1etcnyqxe63g20mn0e7nbh.gif" alt="4"></p>
<h1 id="如何用(!)处理两个以上的参数?例如我在桌面上创建了一个_1-txt_文件">如何用(!)处理两个以上的参数?例如我在桌面上创建了一个 1.txt 文件</h1><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ touch <span class="regexp">/home/</span>avi<span class="regexp">/Desktop/</span><span class="number">1</span>.txt</span><br></pre></td></tr></table></figure>
<p>然后使用CP命令把它复制到 ‘home/avi/Downloads’ 目录</p>
<figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ cp <span class="regexp">/home/</span>avi<span class="regexp">/Desktop/</span><span class="number">1</span>.txt <span class="regexp">/home/</span>avi<span class="regexp">/downloads</span></span><br></pre></td></tr></table></figure>
<p>这样我们就向CP命令传递了两个参数。第一个是 ‘/home/avi/Desktop/1.txt’ ，第二个是’/home/avi/Downloads’，为了区分它们，我们 使用 echo 来打印每个参数。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">echo</span> <span class="string">"1st Argument is : !^"</span></span><br><span class="line">$ <span class="built_in">echo</span> <span class="string">"2nd Argument is : !cp:2"</span></span><br></pre></td></tr></table></figure>
<p>可以注意到第一个参数可以使用 “!^” 来表示，剩下的参数就可以使用 “命令名：参数序号”这种方式来表示，比如 “!cp:2″。再举个例子，如果你执行的某个命令为 “xyz”，命令 后面有5个参数而你想调用第四个参数，就可以使用 “!xyz:4″ 来调用它。当然，你可以使用 “!* “ 来表示所有参数。</p>
<p><img src="http://ww3.sinaimg.cn/large/6e8d8f65jw1etco4ln4jug20mn0e7mz3.gif" alt="5"></p>
<h1 id="通过关键词来执行之前的命令">通过关键词来执行之前的命令</h1><p>我们可以通过执行关键词来执行之前的命令。可以按照下面的命令来理解：</p>
<figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ ls <span class="regexp">/home &gt; /</span>dev/<span class="literal">null</span>                         [Command <span class="number">1</span>]</span><br><span class="line">$ ls -l <span class="regexp">/home/</span>avi<span class="regexp">/Desktop &gt; /</span>dev/<span class="literal">null</span>          [Command <span class="number">2</span>] </span><br><span class="line">$ ls -la <span class="regexp">/home/</span>avi<span class="regexp">/Downloads &gt; /</span>dev/<span class="literal">null</span>       [Command <span class="number">3</span>]</span><br><span class="line">$ ls -lA <span class="regexp">/usr/</span>bin &gt; <span class="regexp">/dev/</span><span class="literal">null</span>                  [Command <span class="number">4</span>]</span><br></pre></td></tr></table></figure>
<p>上面是相同的ls命令对应了不同参数和文件夹。此外我们将每一个标准输出都传递到了 ‘/dev/null’ 因为我们并不希望处理程序的标准输出。现在我们可以调用命令的关键词来实现它们。</p>
<figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ ! <span class="keyword">ls</span>                                         [Command 1]</span><br><span class="line">$ ! <span class="keyword">ls</span> -<span class="keyword">l</span>                                      [Command 2] </span><br><span class="line">$ ! <span class="keyword">ls</span> -<span class="keyword">la</span>                                     [Command 3]</span><br><span class="line">$ ! <span class="keyword">ls</span> -<span class="keyword">lA</span>                                     [Command 4]</span><br></pre></td></tr></table></figure>
<p>当你使用 “ls” 关键词来执行之前命令的时候，你一定会被标准输出给惊讶到。</p>
<p><img src="http://ww4.sinaimg.cn/large/6e8d8f65jw1etcofh7u9wg20mn0e7myt.gif" alt="6"></p>
<h1 id="非常实用的_!!_操作符">非常实用的 !! 操作符</h1><p>你可以使用(!!)来运行或者改变之前的命令。它会调用最近使用的命令来调整当前命令，给大家展示一下使用场景。</p>
<p>昨天我运行了一个获取IP的Shell命令：</p>
<figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ip addr show | <span class="keyword">grep</span> inet | <span class="keyword">grep</span> -v <span class="string">'inet6'</span> | <span class="keyword">grep</span> -v <span class="string">'127.0.0.1'</span> | awk <span class="string">'&#123;print $2&#125;'</span> | cut -f <span class="number">1</span> -d<span class="regexp">/</span></span><br></pre></td></tr></table></figure>
<p>突然我意识到需要将结果重定向到 ip.txt 中，这时你应该想到用 “UP” 键恢复上一个命令再加上 ‘&gt;ip.txt‘ 命令来重定向进去：</p>
<figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ip addr show | <span class="keyword">grep</span> inet | <span class="keyword">grep</span> -v <span class="string">'inet6'</span> | <span class="keyword">grep</span> -v <span class="string">'127.0.0.1'</span> | awk <span class="string">'&#123;print $2&#125;'</span> | cut -f1 -d<span class="regexp">/ &gt; ip.txt</span></span><br></pre></td></tr></table></figure>
<p>感谢这次救命的”UP” 键。那么再考虑下这个场景，如果我需要运行下面的这个脚本：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ifconfig | grep <span class="string">"inet addr:"</span> | awk <span class="string">'&#123;print $2&#125;'</span> | grep -v <span class="string">'127.0.0.1'</span> | cut <span class="operator">-f</span>2 <span class="operator">-d</span>:</span><br></pre></td></tr></table></figure>
<p>当我运行它的时候突然报出了”bash:ifconfig:command not found”错误，我意识到可能是我设定了这个命令需要root权限来运行它。那么现在怎么办？需要重新登录root账号来执行它么？这种情况下使用”up”键也并不管用。所以这里我们使用 “!!” 命令来选择调用这条命令。</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>su -c <span class="string">"!!"</span> root</span><br></pre></td></tr></table></figure>
<p>显而易见的是 su 是用来选择执行用户的， -c 是用来表示执行具体命令的，最重要的部分 “!!” 代替了你最后一次运行的命令。然后输入你的root密码即可运行它了。</p>
<p><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1etcomn1mpfg20mn0e73z6.gif" alt="7"></p>
<p>我相信下面的场景非常适合 “!!”  的使用。</p>
<p>当你使用普通的账户来执行 apt-get 的时候，常常会报错提示你没有权限执行。</p>
<figure class="highlight processing"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ apt-<span class="built_in">get</span> upgrade &amp;&amp; apt-<span class="built_in">get</span> <span class="built_in">dist</span>-upgrade</span><br></pre></td></tr></table></figure>
<p>哈哈不用担心，这时候就可以使用下面的命令来成功执行了：</p>
<figure class="highlight erlang-repl"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="function_or_atom">su</span> -<span class="function_or_atom">c</span> <span class="exclamation_mark">!</span><span class="exclamation_mark">!</span></span><br></pre></td></tr></table></figure>
<p>同样有类似的场景：如果普通用户没有权限，即可这样运行：</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>su -c <span class="string">'service apache2 start'</span></span><br><span class="line"><span class="comment"># or</span></span><br><span class="line"><span class="variable">$ </span>su -c <span class="string">'/etc/init.d/apache2 start'</span></span><br><span class="line"><span class="comment"># or</span></span><br><span class="line"><span class="variable">$ </span>su -c <span class="string">'systemctl start apache2'</span></span><br></pre></td></tr></table></figure>
<h1 id="使用_!(文件名)_的方式来避免命令对某个文件的影响">使用 !(文件名) 的方式来避免命令对某个文件的影响</h1><p>这里的 “!” 符号相当于逻辑否定来使用，用来避免对加了 “!” 前缀的文件产生影响。</p>
<p>A.从目录中删除除 2.txt 外的所有文件:</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>rm !(<span class="number">2</span>.txt)</span><br></pre></td></tr></table></figure>
<p>B.从目录中删除以 pdf 为后缀的文件:</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>rm !(*.pdf)</span><br></pre></td></tr></table></figure>
<h1 id="检查某个目录是否存在，如果存在就将其打印">检查某个目录是否存在，如果存在就将其打印</h1><p>这里使用 ‘! -d’  命令来判断目录是否为空，同时使用 “&amp;&amp;” 和 “||” 命令来打印判断目录是否存在：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ [ ! <span class="operator">-d</span> /home/avi/Tecmint ] &amp;&amp; <span class="built_in">printf</span> <span class="string">'\nno such /home/avi/Tecmint directory exist\n'</span> || <span class="built_in">printf</span> <span class="string">'\n/home/avi/Tecmint directory exist\n'</span></span><br></pre></td></tr></table></figure>
<h1 id="检测目录是否是否为空，如果为空则退出">检测目录是否是否为空，如果为空则退出</h1><p>和上面的命令类似。这里是检测目录是否为空，如果为空则退出命令</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ [ ! <span class="operator">-d</span> /home/avi/Tecmint ] &amp;&amp; <span class="built_in">exit</span></span><br></pre></td></tr></table></figure>
<h1 id="检测目录是否为空，如果为空则在_home_目录中重新创建目录">检测目录是否为空，如果为空则在 home 目录中重新创建目录</h1><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ [ ! -d <span class="regexp">/home/</span>avi<span class="regexp">/Tecmint ] &amp;&amp; mkdir /</span>home<span class="regexp">/avi/</span>Tecmint</span><br></pre></td></tr></table></figure>
<p><a href="http://www.linuxidc.com/Linux/2015-05/117774.htm" target="_blank" rel="external">source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>Linux 系统中，“!” 符号或者操作符通常被用做逻辑否定的操作符，同时也通过一些调整和改动命令来从历史记录中找出你需要的命令行。下面演示的命令行在bash Shell中都已经明确检查过可用了。不过我没有在其他的 Shell 解释器下测试过，不过我相信这些命令也不会在其他的解释器下运行。那么现在就让我们学习一下 “!” 这神奇而独特的用法吧！</p>]]>
    
    </summary>
    
      <category term="commands" scheme="http://tiandechi.com/tags/commands/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[shell of vi mode]]></title>
    <link href="http://tiandechi.com/2015/06/12/shell-of-vi-mode/"/>
    <id>http://tiandechi.com/2015/06/12/shell-of-vi-mode/</id>
    <published>2015-06-12T14:11:10.000Z</published>
    <updated>2015-06-12T14:28:57.000Z</updated>
    <content type="html"><![CDATA[<p>在shell里加入vi模式<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ~</span><br><span class="line"><span class="built_in">echo</span> <span class="string">'set editing-mode vi'</span>&gt;.inputrc</span><br><span class="line"><span class="built_in">source</span> .inputrc</span><br></pre></td></tr></table></figure></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>在shell里加入vi模式<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</s]]>
    </summary>
    
      <category term="shell" scheme="http://tiandechi.com/tags/shell/"/>
    
      <category term="vi mode" scheme="http://tiandechi.com/tags/vi-mode/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[一沾酒就脸红的人能锻炼出酒量吗？]]></title>
    <link href="http://tiandechi.com/2015/05/23/%E4%B8%80%E6%B2%BE%E9%85%92%E5%B0%B1%E8%84%B8%E7%BA%A2%E7%9A%84%E4%BA%BA%E8%83%BD%E9%94%BB%E7%82%BC%E5%87%BA%E9%85%92%E9%87%8F%E5%90%97%EF%BC%9F/"/>
    <id>http://tiandechi.com/2015/05/23/一沾酒就脸红的人能锻炼出酒量吗？/</id>
    <published>2015-05-23T04:32:46.000Z</published>
    <updated>2015-05-23T04:32:57.000Z</updated>
    <content type="html"><![CDATA[<p>先把结论放上来，就一句话：<br><strong>喝酒容易脸红是基因缺陷引起的，练酒量无法弥补基因缺陷。</strong><br>以下具体说说这个问题。<br><a id="more"></a></p>
<ol>
<li>虽然有很多人说过了，但还是先说一下酒精在体内的代谢过程。酒精，也就是乙醇，主要是在肝脏代谢，第一步是乙醇被代谢成乙醛，第二步是乙醛被代谢成乙酸，第三步是乙酸被代谢成二氧化碳和水。在整个过程中，起关键作用的主要是第一步里面的乙醇脱氢酶（ADH）和第二步里面的乙醛脱氢酶（ALDH）。<br>所以说酒量是酶决定的，而酶又是基因产生的，因此问题的核心在于基因。知乎上很多回答都提到了ALDH变异，却忽略了ADH变异，这个稍后会提到。</li>
<li>说完了酒精代谢，那我们继续说说脸红是怎么回事。脸红并不是乙醛直接引起的，乙醛会刺激肾上腺素和去甲肾上腺素分泌，而这两个激素会引起面部潮红、心跳加快等症状。所以喝酒上脸和生气时脸红脖子粗，本质上其实是一致的。</li>
<li>现在说说为什么有的人千杯不倒，而有的人一杯啤酒就脸红。原因很简单，乙醛代谢缓慢，或者产生迅速，都可以导致喝酒容易脸红。<br>乙醛的产生依赖于ADH的作用，这时候我们就要提一提杜康基因了。杜康基因是ADH1B的一个变种，大约存在于70%的汉族人体内，而在酒量很好的毛子和蒙古大汗身上，极少出现这个基因。携带杜康基因的人，乙醇代谢速度是其他人的13倍左右，因此乙醛在体内迅速产生。如果这些乙醛没有被迅速代谢成乙酸，那么就容易在体内堆积，出现喝酒脸红的情况。<br>不幸的是，不少中国人都无法将乙醛迅速代谢掉。<br>这也是基因变异引起的，这个基因叫乙醛脱氢酶2变异体——ALDH2<em>2。<br>众所周知，人有一对等位基因，携带一个ALDH2</em>2 基因的人（杂合子），酶活性只有正常的6%左右；而两个基因全是ALDH2<em>2的人，酶活性几乎为零。对于后者来说，喝酒几乎是一杯倒的事情，因此这部分人一般滴酒不沾。容易出问题的是杂合子，这部分人也是最危险的饮酒者，虽然乙醛对他们的伤害很大，但由于体内仍然有一点酶活性，因此常常会没有自知之明地勉强自己去“练酒量”。<br>携带ALDH2</em>2杂合子的人群，长期少量喝酒的话，食道癌发病率是正常人的8倍；而若是长期酗酒的话，这个发病率飙升至114倍。关于酒量能不能练这个问题，你们看看这个数据大概就知道了。<br>更不幸的是，中国人携带ALDH2<em>2的比率非常高，大约有18%的中国人携带这个基因，其中最高的是广东的汉族，高达31%，而在欧美白人里面，几乎没人携带这个基因。<br>补充一点，ALDH2基因可用做研究人类迁徙的生物学标记。ALDH2</em>504Lys基因在几乎只在东亚人群上出现，携带一个该等位基因的人对乙醛的代谢能力就会大幅降低。下面这张图片表示人群中携带该基因的频率，从这张图片(Li et al, 2009.)可以看出中国东南部汉族人群是最高频的。实际上，闽南汉族人中有高达29%的人携带该基因。<br>(The geographic distribution of ALDH2<em>504Lys allele frequency)<br>你不需要去医院做专门的基因检测，这里提供一个简单的自测方法：<br>第一个问题：你喝完一杯啤酒（大约180mL）后,会不会很快出现脸红？<br>第二个问题：在你开始喝酒后的头几年，你有没有问题一的情况？<br>如果这两个问题中的任意一个你的答案是“YES”，那么你就极有可能是ALDH2</em>2携带者。<br>中国和喝酒有关的两个关键基因都出现了变异，不上脸都难。所谓的天赋异禀，大概指的就是这么一回事。</li>
<li>最后一个问题：喝酒脸红的人，酒量到底能不能练？<br>答案是不能，你的大脑也许可以逐渐耐受喝酒所带来的各种反应，比如以前一杯倒，喝了十年之后可以坚持喝三瓶才吐，但是你的胃、食道、肝脏等诸多器官都在日复一日的遭受乙醛和乙醇的破坏，因为你的基因是无法改变的。你能不能喝酒，在你还没出生之前就已经被决定了。<br>总之就一句话。<br><strong>不行别逞能</strong><br>参考文献：<br>Li, H., Mukherjee, N., Soundararajan, U., Tárnok, Z., Barta, C., Khaliq, S., ... &amp; Kidd, K. K. (2007). Geographically Separate Increases in the Frequency of the Derived&lt; i&gt; ADH1B<em> 47His Allele in Eastern and Western Asia. The American Journal of Human Genetics, 81(4), 842-846.<br>Li, H., Borinskaya, S., Yoshimura, K., Kal’ina, N., Marusin, A., Stepanov, V. A., ... &amp; Kidd, K. K. (2009). Refined geographic distribution of the oriental ALDH2</em> 504Lys (nee 487Lys) variant. Annals of human genetics, 73(3), 335-345.<br>Brooks, P. J., Enoch, M. A., Goldman, D., Li, T. K., &amp; Yokoyama, A. (2009). The alcohol flushing response: an unrecognized risk factor for esophageal cancer from alcohol consumption. PLoS medicine, 6(3), e1000050.</li>
</ol>
<p><a href="http://www.zhihu.com/question/20608227" target="_blank" rel="external">Source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>先把结论放上来，就一句话：<br><strong>喝酒容易脸红是基因缺陷引起的，练酒量无法弥补基因缺陷。</strong><br>以下具体说说这个问题。<br>]]>
    
    </summary>
    
  </entry>
  
  <entry>
    <title><![CDATA[18个PPT演讲的技巧，让你的提案能力提高N倍]]></title>
    <link href="http://tiandechi.com/2015/05/23/18%E4%B8%AAPPT%E6%BC%94%E8%AE%B2%E7%9A%84%E6%8A%80%E5%B7%A7%EF%BC%8C%E8%AE%A9%E4%BD%A0%E7%9A%84%E6%8F%90%E6%A1%88%E8%83%BD%E5%8A%9B%E6%8F%90%E9%AB%98N%E5%80%8D/"/>
    <id>http://tiandechi.com/2015/05/23/18个PPT演讲的技巧，让你的提案能力提高N倍/</id>
    <published>2015-05-23T04:32:23.000Z</published>
    <updated>2015-05-23T04:32:33.000Z</updated>
    <content type="html"><![CDATA[<p>如何成为一个演讲高手呢?在现在这个年代，PPT是必不可少的，乔布斯的经典演讲就是使用大屏幕幻灯片。下面的18个技巧或许可以帮助你提高PPT演讲技巧，也希望将要进行毕业答辩的同学可以有一些收获，帮助你获得最佳的表现，祝福之。一起来看看吧。<br><a id="more"></a></p>
<h1 id="10-20-30原则">10-20-30原则</h1><p>这是Guy Kawasaki(湾区著名的风险投资家，同时也是位充满激情、睿智和幽默的演讲家)提出的一个幻灯片制作和演讲原则，即一个Powerpoint不能超过10张幻灯片，演讲总长不能超过20分钟，而且幻灯片的字体要大于30号。他说，不管你的想法是否能够颠覆世界，你必须要在有限的时间里，用较少的幻灯片和精炼的语言将其精华传达给听众。</p>
<h1 id="有趣的演讲">有趣的演讲</h1><p>演讲要讲求寓教于乐。我不是指做演讲时要像猴子一样又蹦又跳，但是同文章或杂志相比，人们期望在演讲中感受到你的激情，而不是枯燥无味的背诵。</p>
<h1 id="放慢速度">放慢速度</h1><p>紧张或没经验的演讲者更容易在演讲时像打机关枪一样说个不停。试着放慢你的语速，并且通过增加一些停顿来达到强调的效果。</p>
<h1 id="眼神交流">眼神交流</h1><p>与所有听众进行眼神交流。销售人员都知道，你不能把所有的注意力都盯在做决定的人身上，因为秘书和助理也在一定程度上影响老板做决定(注：总是将注意集中在一人，会让对方感到不舒服)。</p>
<h1 id="用15个词做总结">用15个词做总结</h1><p>你能把你的想法用15个词总结出来吗?如果不能，那就再总结。演讲对信息的传递并非理想中的那么强有力，所以在演讲中不断重复这15个词的总结可以达到强调和加深记忆的效果。</p>
<h1 id="20-20原则">20-20原则</h1><p>另外一条幻灯片制作原则。这条原则指的是，演讲中你要有20张幻灯片，并且每张幻灯片只演讲20秒。其目的就是逼使你做到简练，避免听众听得不耐烦。</p>
<h1 id="不要读幻灯片">不要读幻灯片</h1><p>很多人都认为自己可以脱稿演讲，可事实上却常常回头看屏幕。读幻灯片，只会不断打断你的演讲思路，这也间接地告诉听众你根本就不理解自己要讲的内容，从而对你的演讲失去信心和兴趣。</p>
<h1 id="演讲就像讲故事">演讲就像讲故事</h1><p>如果你的演讲比较长，那最好加入一些小故事、双关语和奇闻轶事等来串联整个演讲，同时也帮助阐述观点。优秀的演讲者都知道怎样将小故事和要阐述观点联系起来，从而达到吸引观众的目的。</p>
<h1 id="提高音量">提高音量</h1><p>演讲最忌讳听众无法听到演讲者在讲什么。虽然现在都有麦克风和扩音器了，但是你仍然要确保使所有听众都能听到你。提高音量不是说要你喊，正确的做法就是挺直身体，从肺部而不是从喉咙里发出更为清晰的声音。</p>
<h1 id="不要事先计划手势">不要事先计划手势</h1><p>演讲中的任何手势都应该是你要传达的信息的延伸，它是帮助你传递信息中的情感来。事先计划手势会看起来很不自然，刻意为之时还会和其他自然的肢体语言不搭配。如果你不知道该做什么手势，那把手随意地放到身体两侧就好了(不要用手指着听众!)。</p>
<h1 id="“这是个不错的问题”">“这是个不错的问题”</h1><p>通过使用“这真是个不错的问题”、“我很高兴你提出这个问题”等语句来为自己争取时间以组织回答的时间。听众一般不会察觉这样客套的话，而且你要避免“恩”、“啊”等等口头语。</p>
<h1 id="吸气而不是呼气">吸气而不是呼气</h1><p>当你感觉要说“呃”、“啊”等语气词时(过多语气词只会让演讲变得糟糕)，可以停顿一下或者深吸一口气。虽然停顿会显得有些尴尬，但是听众会很少注意到的。</p>
<h1 id="提早到会场（尽可能的早）">提早到会场（尽可能的早）</h1><p>不要等到听众都坐好了，你才慢吞吞地调试好投影仪和幻灯片。提早到达演讲地点，熟悉一下场景，检查电脑和投影设备，确保不会出现异常的境况。而且这有助于消除紧张感。</p>
<h1 id="熟能生巧">熟能生巧</h1><p>参加一些提高和锻炼演讲和交谈技巧的组织。这些锻炼会使你上台演讲时显得更有能力和自信。</p>
<h1 id="避免道歉">避免道歉</h1><p>只有做错事情时才需要道歉。不要为自己的能力不足、紧张和准备不充分道歉，这只会使听众觉得你没自信。再者，多数情况下，听众并不会注意到你的紧张和小错误。</p>
<h1 id="当你错误时一定要道歉">当你错误时一定要道歉</h1><p>虽然要避免道歉，当你在传达信息时包涵了错误的观点时，或者有其他明显错误的地方，一定要道歉。保持自信是当然的，但是过度自信就会出问题了。</p>
<h1 id="以听众的角度出发">以听众的角度出发</h1><p>要从听众的立场来撰写演讲稿和思考问题。哪些内容对于听众比较难理解;哪些内容会使听众感到繁琐?总是要记得，对听众来说，这里面表达的内容有什么意义。</p>
<h1 id="乐在其中">乐在其中</h1><p>将你的激情注入到演讲中去，乐在其中!</p>
]]></content>
    <summary type="html">
    <![CDATA[<p>如何成为一个演讲高手呢?在现在这个年代，PPT是必不可少的，乔布斯的经典演讲就是使用大屏幕幻灯片。下面的18个技巧或许可以帮助你提高PPT演讲技巧，也希望将要进行毕业答辩的同学可以有一些收获，帮助你获得最佳的表现，祝福之。一起来看看吧。<br>]]>
    
    </summary>
    
  </entry>
  
  <entry>
    <title><![CDATA[装逼技能：演讲中让你高大上的7个手势]]></title>
    <link href="http://tiandechi.com/2015/05/23/%E8%A3%85%E9%80%BC%E6%8A%80%E8%83%BD%EF%BC%9A%E6%BC%94%E8%AE%B2%E4%B8%AD%E8%AE%A9%E4%BD%A0%E9%AB%98%E5%A4%A7%E4%B8%8A%E7%9A%847%E4%B8%AA%E6%89%8B%E5%8A%BF/"/>
    <id>http://tiandechi.com/2015/05/23/装逼技能：演讲中让你高大上的7个手势/</id>
    <published>2015-05-23T04:31:49.000Z</published>
    <updated>2015-05-26T12:05:21.000Z</updated>
    <content type="html"><![CDATA[<p><img src="http://ww1.sinaimg.cn/large/6e8d8f65jw1eshwpswe5zj20go0aygm2.jpg" alt="top.jpg"><br>你肯定在某个大学或者某个TED的演讲中见过这样一些手势：台上的那个人试图解释一些重要的历史联系，抽象艺术，科学或人文进步的宏大理论时将手像一个倒放的爪一样举在他们面前，手指缓缓转动就像有一个隐形的拨号盘。这就是所谓“辩证法”手势，如果你想要成为一个真正的思想领袖你就一定要掌握它们。<br>爱丽丝·M·威廉姆斯和约翰逊·茉莉创建了这样一个Tumblr Blog：手势词汇的批判与研究(link)——通过观察演讲中出现的这些手势然后将它们汇编起来让这些高大上的手势能真正走入老百姓的生活。<br>下面就让我们来看看这七种在演讲中极其常用的高大上的手势：<br><a id="more"></a></p>
<ol>
<li>辩证法手势<br><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1eshht6i5vqg20ic0c8ncc.gif" alt="1.gif"><br>“这是一个辩证关系，现在我会开始解释它。”<br>用在从一件事转移到另一个时。极具感染力。</li>
<li>临界涡动c<br><img src="http://ww2.sinaimg.cn/large/6e8d8f65gw1eshhuu5gimg20ic0c8ar7.gif" alt="2.gif"><br>“我读过太多马克思的文章以至于我都不能说出话来了。” - 加速和重复，直到思路重新打开。</li>
<li>反手拍击<br><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1eshhv5yzqhg20ic0c8gyg.gif" alt="3.gif"><br>“我知道我刚刚就说过，但我还是会再说一遍。” – 当你的关键点似乎没有引起对象反应的时候用以增强它。</li>
<li>微小辩证法手势<br><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1eshhvkllfjg20ic0c8qjg.gif" alt="4.gif"><br>“我正在做一个非常精细的区分。” – 当使用特地挑选的小细节的时候，或者当意识到“辩证法”手势使用过多的时候。</li>
<li>指向<br><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1eshhvv1bbzg20ic0c8gvf.gif" alt="5.gif"><br>需要引导大家的注意力到某一个事物或者人上的时候。</li>
<li>扫货架<br><img src="http://ww3.sinaimg.cn/large/6e8d8f65gw1eshhw7urumg20ic0c8ncc.gif" alt="6.gif"><br>在说明层次结构的时候使用。</li>
<li>捡起小点子<br><img src="http://ww3.sinaimg.cn/large/6e8d8f65gw1eshhwo4iyjg20ic0c81c8.gif" alt="7.gif"><br>只有坐在听众前的时候会使用，效果就是字面上的意思。<br>他们的Tumblr站里提到，对于这些手势的运用需要足够的练习，例如第七种需要你想象推开一个虚拟的书架上的书以查找盖在后面的内容。而熟练使用这些手势能使你的演讲变得更加高大上。</li>
</ol>
<p><a href="http://jandan.net/2014/01/22/hand-gestures.html" target="_blank" rel="external">Source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p><img src="http://ww1.sinaimg.cn/large/6e8d8f65jw1eshwpswe5zj20go0aygm2.jpg" alt="top.jpg"><br>你肯定在某个大学或者某个TED的演讲中见过这样一些手势：台上的那个人试图解释一些重要的历史联系，抽象艺术，科学或人文进步的宏大理论时将手像一个倒放的爪一样举在他们面前，手指缓缓转动就像有一个隐形的拨号盘。这就是所谓“辩证法”手势，如果你想要成为一个真正的思想领袖你就一定要掌握它们。<br>爱丽丝·M·威廉姆斯和约翰逊·茉莉创建了这样一个Tumblr Blog：手势词汇的批判与研究(link)——通过观察演讲中出现的这些手势然后将它们汇编起来让这些高大上的手势能真正走入老百姓的生活。<br>下面就让我们来看看这七种在演讲中极其常用的高大上的手势：<br>]]>
    
    </summary>
    
  </entry>
  
  <entry>
    <title><![CDATA[18个高大上的浏览器小技巧]]></title>
    <link href="http://tiandechi.com/2015/05/23/18%E4%B8%AA%E9%AB%98%E5%A4%A7%E4%B8%8A%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%E5%B0%8F%E6%8A%80%E5%B7%A7/"/>
    <id>http://tiandechi.com/2015/05/23/18个高大上的浏览器小技巧/</id>
    <published>2015-05-23T04:30:38.000Z</published>
    <updated>2015-05-26T12:00:39.000Z</updated>
    <content type="html"><![CDATA[<p><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1eshhy28ejzj20go0a0t9c.jpg" alt="head.jpg"><br>注：以下仅适用于 Chrome/Firefox 等网络浏览器<br><a id="more"></a></p>
<ol>
<li>Ctrl+Shift+T 打开最近关闭的标签页</li>
<li>在图片上按住S时点击鼠标右键，启动Google Image搜索相关图片</li>
<li>把图片拖放到搜索框时，可以搜索相关图片(实测在打开Google Image时有效)<br><img src="http://ww3.sinaimg.cn/large/6e8d8f65gw1eshhz2seqpg20hd0d0qv5.gif" alt="3.gif"></li>
<li>输入网址时，按Ctrl+回车键补全 .com</li>
<li>按住Ctrl键(Mac用户按Command键)点击超链接，将在新标签打开页面</li>
<li><p>在地址栏输入以下代码，可以把空标签页变成写字板(Chrome/Firefox有效)：</p>
<figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">data:text/<span class="tag">html</span>,&lt;<span class="tag">html</span> contenteditable&gt;</span><br></pre></td></tr></table></figure>
</li>
<li><p>而且这个写字板还可以继续折腾，比如变成暗色调(夜晚模式)。输入以下代码(Chrome有效，Firefox无效)：</p>
<figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">data:text/<span class="tag">html</span>,&lt;<span class="tag">body</span> contenteditable style=<span class="string">"background:#111;color:#FFF;line-height:1.4;max-width:80rem;margin:0 auto;padding:2rem;"</span>&gt;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1eshhz9sbc1g20hd09fgpe.gif" alt="7.gif"> </p>
<ol>
<li><p>不跳转 Google.com.hk 强制打开 Google.com，只需输入：</p>
<figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">google.<span class="keyword">com</span>/ncr</span><br></pre></td></tr></table></figure>
</li>
<li><p>Ctrl+Shift+N 打开一个新浏览器窗口</p>
</li>
<li>关闭Facebook的视频自动播放：打开设置页 facebook.com/settings，点击左边栏的 video，选择 off。<br><img src="http://ww2.sinaimg.cn/large/6e8d8f65gw1eshhzvbc8bg20dw09r1kx.gif" alt="10.gif"> </li>
<li>Gmail里某联系人纠缠不休，可以点击 more(更多操作)下拉的mute(忽略)将该邮件对话屏蔽<br><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1eshi09c3fng20hd0ab17g.gif" alt="11.gif"> </li>
<li>在地址栏直接搜索某演员的贝肯数(演艺界的六度分隔指数)，输入“人名+Bacon number”即可</li>
<li>在Google搜索框里输入“google in 1998”可以打开复古版的Google主页<br><img src="http://ww2.sinaimg.cn/large/6e8d8f65gw1eshi0pwgzig20hd0a0e3i.gif" alt="13.gif"> </li>
<li>在Google搜索框里输入“do a barrel roll”并搜索可以Google页面表演一个桶滚动作。同样的彩蛋有“tilt”, “recursion”和“anagram”(后面两个测试无效)<br><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1eshi1ax422g20hd0a11kx.gif" alt="14.gif"> </li>
<li>在 Google Image里搜索“Atari Breakout”会打开一个复古打砖块游戏<br><img src="http://ww2.sinaimg.cn/large/6e8d8f65gw1eshi1tvs8ig20hd0a4qop.gif" alt="15.gif"> </li>
<li>在Google搜索框里输入“zerg rush”会激活星际争霸的一个相关小游戏，用鼠标点击消灭屏幕上的“O”<br><img src="http://ww2.sinaimg.cn/large/6e8d8f65gw1eshi2cc0ing20hd0a37it.gif" alt="16.gif"> </li>
<li>键盘商 daskeyboard.com 为了推广它的网站做了一个小彩蛋，点击它页脚里Connet的Destroy this Site后会出现一个三角形箭头，可以用方向键或WASD操控，按空格射击来“摧毁”页面元素。<br><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1eshi3cp8zcg20hd09pu0x.gif" alt="17.gif"> </li>
<li>煎蛋小编最爱的 Digg.com 也有个彩蛋，在它的首页输入Konami code(上上下下左右左右BA)有奇怪的事情发生，还有会熟悉的魂斗罗音乐响起。<br>Wired.co.uk 和 Condé Nast UK 也支持 Konami code。<br><img src="http://ww1.sinaimg.cn/large/6e8d8f65gw1eshi3t2e9og20hd09xe0c.gif" alt="tail.gif"> </li>
</ol>
<p><a href="http://jandan.net/2014/05/12/internet-tricks.html" target="_blank" rel="external">Source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p><img src="http://ww4.sinaimg.cn/large/6e8d8f65gw1eshhy28ejzj20go0a0t9c.jpg" alt="head.jpg"><br>注：以下仅适用于 Chrome/Firefox 等网络浏览器<br>]]>
    
    </summary>
    
  </entry>
  
  <entry>
    <title><![CDATA[11个让你吃惊的Linux终端命令]]></title>
    <link href="http://tiandechi.com/2015/05/20/11%E4%B8%AA%E8%AE%A9%E4%BD%A0%E5%90%83%E6%83%8A%E7%9A%84Linux%E7%BB%88%E7%AB%AF%E5%91%BD%E4%BB%A4/"/>
    <id>http://tiandechi.com/2015/05/20/11个让你吃惊的Linux终端命令/</id>
    <published>2015-05-20T10:48:19.000Z</published>
    <updated>2015-05-20T11:11:49.000Z</updated>
    <content type="html"><![CDATA[<h1 id="命令行日常系快捷键">命令行日常系快捷键</h1><p>如下的快捷方式非常有用，能够极大的提升你的工作效率：</p>
<ul>
<li>CTRL + U - 剪切光标前的内容</li>
<li>CTRL + K - 剪切光标至行末的内容</li>
<li>CTRL + Y - 粘贴</li>
<li>CTRL + E - 移动光标到行末</li>
<li>CTRL + A - 移动光标到行首</li>
<li>ALT + F - 跳向下一个空格</li>
<li>ALT + B - 跳回上一个空格</li>
<li>ALT + Backspace - 删除前一个单词</li>
<li>CTRL + W - 剪切光标后一个单词</li>
<li>Shift + Insert - 向终端内粘贴文本</li>
</ul>
<h1 id="SUDO_!!">SUDO !!</h1><a id="more"></a>
<p>如果你还不知道这个命令，我觉得你应该好好感谢我，因为如果你不知道的话，那每次你在输入长串命令后看到“permission denied”后一定会痛苦不堪。<br><figure class="highlight erlang-repl"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function_or_atom">sudo</span> <span class="exclamation_mark">!</span><span class="exclamation_mark">!</span>  #会用 <span class="function_or_atom">sudo</span> 的形式运行上一条命令</span><br></pre></td></tr></table></figure></p>
<h1 id="暂停并在后台运行命令">暂停并在后台运行命令</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">CTRL + Z <span class="comment"># 暂停应用程序</span></span><br><span class="line"><span class="built_in">fg</span> <span class="comment"># 重新将程序唤到前台</span></span><br></pre></td></tr></table></figure>
<h1 id="使用nohup">使用nohup</h1><p>在登出SSH会话后仍运行命令<br>如果你用ssh登录别的机器时，nohup命令真的非常有用。<br>那么怎么使用nohup呢？<br>想象一下你使用ssh远程登录到另一台电脑上，你运行了一条非常耗时的命令然后退出了ssh会话，不过命令仍在执行。而nohup可以将这一场景变成现实。</p>
<h1 id="‘在’特定的时间运行Linux命令">‘在’特定的时间运行Linux命令</h1><p>‘nohup’命令在你用SSH连接到服务器，并在上面保持执行SSH登出前任务的时候十分有用。<br>想一下如果你需要在特定的时间执行相同的命令，这种情况该怎么办呢？<br>命令‘at’就能妥善解决这一情况。以下是‘at’使用示例。<br><figure class="highlight livecodeserver"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">at</span> <span class="number">10</span>:<span class="number">38</span> PM Fri</span><br><span class="line"><span class="keyword">at</span>&gt; cowsay <span class="string">'hello'</span></span><br><span class="line"><span class="keyword">at</span>&gt; CTRL + D</span><br></pre></td></tr></table></figure></p>
<p>上面的命令能在周五下午10时38分运行程序cowsay。<br>使用的语法就是‘at’后追加日期时间。当at&gt;提示符出现后就可以输入你想在那个时间运行的命令了。<br>CTRL + D 返回终端。<br>还有许多日期和时间的格式，都需要你好好翻一翻‘at’的man手册来找到更多的使用方式。</p>
<h1 id="Man手册">Man手册</h1><p>Man手册会为你列出命令和参数的使用大纲，教你如何使用她们。Man手册看起来沉闷呆板。（我思忖她们也不是被设计来娱乐我们的）。<br>不过这不代表你不能做些什么来使她们变得漂亮些。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">export</span> PAGER=most</span><br></pre></td></tr></table></figure></p>
<p>你需要安装 ‘most’；她会使你的你的man手册的色彩更加绚丽。<br>你可以用以下命令给man手册设定指定的行长：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">export</span> MANWIDTH=<span class="number">80</span></span><br></pre></td></tr></table></figure></p>
<p>最后，如果你有一个可用的浏览器，你可以使用-H在默认浏览器中打开任意的man页。<br><figure class="highlight livecodeserver"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">man -H &lt;<span class="command"><span class="keyword">command</span>&gt;</span></span><br></pre></td></tr></table></figure></p>
<p>注意啦，以上的命令只有在你将默认的浏览器设置到环境变量$BROWSER中了之后才效果哟。</p>
<h1 id="使用htop查看和管理进程">使用htop查看和管理进程</h1><p>你用哪个命令找出电脑上正在运行的进程的呢？我敢打赌是‘ps’并在其后加不同的参数来得到你所想要的不同输出。<br>安装‘htop’吧！绝对让你相见恨晚。<br>htop在终端中将进程以列表的方式呈现，有点类似于Windows中的任务管理器。你可以使用功能键的组合来切换排列的方式和展示出来的项。你也可以在htop中直接杀死进程。<br>在终端中简单的输入htop即可运行。<br><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">htop</span><br></pre></td></tr></table></figure></p>
<h1 id="使用ranger浏览文件系统">使用ranger浏览文件系统</h1><p>如果说htop是命令行进程控制的好帮手，那么ranger就是命令行浏览文件系统的好帮手。<br>你在用之前可能需要先安装，不过一旦安装了以后就可以在命令行输入以下命令启动她：<br><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ranger</span><br></pre></td></tr></table></figure></p>
<p>在命令行窗口中ranger和一些别的文件管理器很像，但是相比上下结构布局，她是左右结构的，这意味着你按左方向键你将前进到上一个文件夹，而右方向键则会切换到下一个。<br>在使用前ranger的man手册还是值得一读的，这样你就可以用快捷键操作ranger了。</p>
<h1 id="取消关机">取消关机</h1><p>无论是在命令行还是图形用户界面关机后，才发现自己不是真的想要关机。<br><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title">shutdown</span> -c</span><br></pre></td></tr></table></figure></p>
<p>需要注意的是，如果关机已经开始则有可能来不及停止关机。<br>以下是另一个可以尝试命令：<br><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title">pkill</span> shutdown</span><br></pre></td></tr></table></figure></p>
<h1 id="杀死挂起进程">杀死挂起进程</h1><p>想象一下，你正在运行的应用程序不明原因的僵死了。<br>你可以使用<br><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title">ps</span> -ef</span><br></pre></td></tr></table></figure></p>
<p>来找到该进程后杀掉或者使用‘htop’。<br>有一个更快、更容易的命令叫做 <strong>xkill</strong> 。<br>简单的在终端中输入以下命令并在窗口中点击你想杀死的应用程序。<br><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">xkill</span><br></pre></td></tr></table></figure></p>
<p>那如果整个系统挂掉了怎么办呢？<br>按住键盘上的‘alt’和‘sysrq’不放，然后慢慢输入以下键：<br><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">REISUB</span><br></pre></td></tr></table></figure></p>
<p>这样不按电源键你的计算机也能重启了。</p>
<h1 id="下载Youtube视频">下载Youtube视频</h1><p>一般来说我们大多数人都喜欢看Youtube的视频，也会通过钟爱的播放器播放Youtube的流媒体。<br>如果你需要离线一段时间（比如：从苏格兰南部坐飞机到英格兰南部旅游的这段时间）那么你可能希望下载一些视频到存储设备中，到闲暇时观看。<br>你所要做的就是从包管理器中安装 <strong>youtube-dl</strong> 。<br>你可以用以下命令使用 <strong>youtube-dl</strong> ：<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">youtube-<span class="tag">dl</span> url-to-video</span><br></pre></td></tr></table></figure></p>
<p>你可以在Youtubu视频页面点击分享链接得到视频的url。只要简单的复制链接在粘帖到命令行就行了（要用shift + insert快捷键哟）。</p>
<h1 id="总结">总结</h1><p>希望你在这篇文章中得到帮助，并且在这11条中找到至少一条让你惊叹“原来可以这样”的技巧。</p>
<p><a href="http://www.linuxidc.com/Linux/2015-05/117414.htm" target="_blank" rel="external">来源</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<h1 id="命令行日常系快捷键">命令行日常系快捷键</h1><p>如下的快捷方式非常有用，能够极大的提升你的工作效率：</p>
<ul>
<li>CTRL + U - 剪切光标前的内容</li>
<li>CTRL + K - 剪切光标至行末的内容</li>
<li>CTRL + Y - 粘贴</li>
<li>CTRL + E - 移动光标到行末</li>
<li>CTRL + A - 移动光标到行首</li>
<li>ALT + F - 跳向下一个空格</li>
<li>ALT + B - 跳回上一个空格</li>
<li>ALT + Backspace - 删除前一个单词</li>
<li>CTRL + W - 剪切光标后一个单词</li>
<li>Shift + Insert - 向终端内粘贴文本</li>
</ul>
<h1 id="SUDO_!!">SUDO !!</h1>]]>
    
    </summary>
    
      <category term="commands" scheme="http://tiandechi.com/tags/commands/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[SQLServer分割字符串]]></title>
    <link href="http://tiandechi.com/2015/05/20/SQLServer%E5%88%86%E5%89%B2%E5%AD%97%E7%AC%A6%E4%B8%B2/"/>
    <id>http://tiandechi.com/2015/05/20/SQLServer分割字符串/</id>
    <published>2015-05-20T10:46:52.000Z</published>
    <updated>2015-05-20T10:48:00.000Z</updated>
    <content type="html"><![CDATA[<figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="constant">CREATE</span> function [dbo].[<span class="constant">SplitStr</span>]</span><br><span class="line">(</span><br><span class="line">     <span class="variable">@SourceStr</span> nvarchar(<span class="number">4000</span>),</span><br><span class="line">     <span class="variable">@Split</span> nvarchar(<span class="number">1</span>)</span><br><span class="line">)</span><br><span class="line">     returns <span class="variable">@temp</span> table (<span class="constant">Result</span> nvarchar(<span class="number">4000</span>))</span><br><span class="line">as</span><br><span class="line"><span class="keyword">begin</span></span><br><span class="line">     declare <span class="variable">@ch</span> as nvarchar(<span class="number">4000</span>)</span><br><span class="line">     set          <span class="variable">@SourceStr</span>=<span class="variable">@SourceStr</span>+<span class="variable">@Split</span></span><br><span class="line">    </span><br><span class="line">     <span class="keyword">if</span>(<span class="constant">CHARINDEX</span>(<span class="variable">@Split</span>,<span class="variable">@SourceStr</span>,<span class="number">1</span>)&lt;=<span class="number">0</span>)</span><br><span class="line">     <span class="keyword">begin</span></span><br><span class="line">          insert <span class="variable">@temp</span> values(<span class="variable">@SourceStr</span>)</span><br><span class="line">          <span class="keyword">return</span></span><br><span class="line">     <span class="keyword">end</span></span><br><span class="line">    </span><br><span class="line">     <span class="keyword">while</span>(<span class="variable">@SourceStr</span>&lt;&gt;<span class="constant">N</span><span class="string">''</span>)</span><br><span class="line">     <span class="keyword">begin</span></span><br><span class="line">          set          <span class="variable">@ch</span>=<span class="constant">LEFT</span>(<span class="variable">@SourceStr</span>,<span class="constant">CHARINDEX</span>(<span class="variable">@Split</span>,<span class="variable">@SourceStr</span>,<span class="number">1</span>)-<span class="number">1</span>)</span><br><span class="line">          insert     <span class="variable">@temp</span> values(<span class="variable">@ch</span>)</span><br><span class="line">          set          <span class="variable">@SourceStr</span>=<span class="constant">STUFF</span>(<span class="variable">@SourceStr</span>,<span class="number">1</span>,<span class="constant">CHARINDEX</span>(<span class="variable">@Split</span>,<span class="variable">@SourceStr</span>,<span class="number">1</span>),<span class="constant">N</span><span class="string">''</span>)</span><br><span class="line">     <span class="keyword">end</span></span><br><span class="line">     <span class="keyword">return</span></span><br><span class="line"><span class="keyword">end</span></span><br><span class="line">--select * from splitstr(<span class="constant">N</span><span class="string">'表白怕被拒绝？,拒绝了连朋友都做不成？,那就别表白了,还可以做朋友,做个朋友还可以借钱,借了钱再表白,表白被拒绝了,朋友做不成了,那就不用还钱了,(///▽///)'</span>,<span class="string">','</span>)</span><br><span class="line"><span class="constant">GO</span></span><br></pre></td></tr></table></figure>
]]></content>
    <summary type="html">
    <![CDATA[<figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class=]]>
    </summary>
    
      <category term="SQLServer" scheme="http://tiandechi.com/tags/SQLServer/"/>
    
      <category term="Database" scheme="http://tiandechi.com/categories/Database/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[如何在Linux下创建一个不可变更的文件]]></title>
    <link href="http://tiandechi.com/2015/05/20/%E5%A6%82%E4%BD%95%E5%9C%A8Linux%E4%B8%8B%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%8F%AF%E5%8F%98%E6%9B%B4%E7%9A%84%E6%96%87%E4%BB%B6/"/>
    <id>http://tiandechi.com/2015/05/20/如何在Linux下创建一个不可变更的文件/</id>
    <published>2015-05-20T10:44:08.000Z</published>
    <updated>2015-05-20T10:46:31.000Z</updated>
    <content type="html"><![CDATA[<p>假如你想对Linux中的一些重要文件做写保护，这样它们就不能被删除或者被篡改成之前的版本或者其他东西，或者在其他情况下，你可能想避免某些配置文件被软件自动修改。使用chown和chmod命令修改文件的归属关系或者权限位是处理这种情况的一个解决方法，但这并不完美，因为这样无法避免有root权限的操作。这时chattr就派上用场了。</p>
<p>chattr是一个可以设置或取消文件的标志位的Linux命令，它和标准的文件权限（读、写、执行）是分离的。与此相关的另一个命令是lsattr，它可以显示文件的哪些标志位被设置上了。最初只有EXT文件系统（EXT2/3/4）支持chattr和lsattr所管理的标志位，但现在很多其他的原生的Linux文件系统都支持了，比如XFS、Btrfs、ReiserFS等等。</p>
<p>在这个教程中，我会示范如果使用chattr来让Linux中的文件不可变更。</p>
<p>chattr和lsattr命令是e2fsprogs包的一部分，它在所有现代Linux发行版都预装了。</p>
<p>下面是chattr的基本语法。<br><a id="more"></a><br><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ chattr [<span class="link_label">-RVf</span>][<span class="link_reference">操作符</span>][<span class="link_label">标志位</span>]文件...</span><br></pre></td></tr></table></figure></p>
<p>其中操作符可以是“+”（把选定的标志位添加到标志位列表）、“-”（从标志位列表中移除选定的标志位）、或者“=”（强制使用选定的标志位）。</p>
<p>下面是一些可用的标志位。</p>
<p>a: 只能以零来安全删除。（LCTT 译注：一般情况文件被删后内容不会被修改，追加模式打开。<br>A: 不能更新atime（文件访问时间）。<br>c: 当被写入磁盘时被自动压缩。<br>C: 关掉“写时复制”。<br>i: 不可变更。<br>s: 通过自动归改标志位会使得文件被删后原有内容被“0”取代）</p>
<p>&quot;不可变更&quot;标志位</p>
<p>为了让一个文件不可变更，你需要按照如下方法为这个文件添加“不可变更”标志位。例如，对/etc/passwd文件做写保护：<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo chattr +<span class="tag">i</span> /etc/passwd</span><br></pre></td></tr></table></figure></p>
<p>注意设置或取消一个文件的“不可变更”标志位是需要root用户权限的。现在检查该文件“不可变更”标志位是否被添加上了。<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>lsattr /etc/passwd</span><br></pre></td></tr></table></figure></p>
<p>一旦文件被设置为不可变更，任何用户都将无法修改该文件。即使是root用户也不可以修改、删除、覆盖、移动或者重命名这个文件。如果你想再次修改这个文件，需要先把“不可变更”标志位取消了。</p>
<p>用如下命令取消“不可变更”标志位：<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo chattr -<span class="tag">i</span> /etc/passwd</span><br></pre></td></tr></table></figure></p>
<p>如果你想让一个目录（比如/etc）连同它下边的所有内容不可变更，使用“-R”选项：<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo chattr -R +<span class="tag">i</span> /etc</span><br></pre></td></tr></table></figure></p>
<p>“只可追加”标志位</p>
<p>另一个有用的的标志位是“只可追加”，它只允许文件内容被追加的方式修改。你不能覆盖或者删除一个设置了“只可追加”标志位的文件。这个标志位在你想避免日志文件被意外清理掉的情况很有用。</p>
<p>和“不可变更”标志位类似，你可以使用如下命令让文件变成“只可追加”模式：<br><figure class="highlight lasso"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo chattr <span class="subst">+</span>a /<span class="built_in">var</span>/<span class="keyword">log</span>/syslog</span><br></pre></td></tr></table></figure></p>
<p>注意当你复制一个“不可变更”或者“只可追加”的文件到其他地方后，新文件不会保留这些标志位！</p>
<p>结论</p>
<p>在这个教程中，我展示了如何使用chattr和lsattr命令来管理额外的文件标志位，来避免文件被篡改（意外或者其他情况）的方法。注意你不能将chattr作为一个安全措施，因为“不可变更”标志位可以很容易被取消掉。解决这个问题的一个可能的方式是限制chattr命令自身的可用性，或者去掉CAPLINUXIMMUTABLE内核权能标志。关于chattr以及可用的标志位的更多细节，请参考它的man手册。</p>
<p><a href="http://www.linuxidc.com/Linux/2015-05/117712.htm" target="_blank" rel="external">Source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>假如你想对Linux中的一些重要文件做写保护，这样它们就不能被删除或者被篡改成之前的版本或者其他东西，或者在其他情况下，你可能想避免某些配置文件被软件自动修改。使用chown和chmod命令修改文件的归属关系或者权限位是处理这种情况的一个解决方法，但这并不完美，因为这样无法避免有root权限的操作。这时chattr就派上用场了。</p>
<p>chattr是一个可以设置或取消文件的标志位的Linux命令，它和标准的文件权限（读、写、执行）是分离的。与此相关的另一个命令是lsattr，它可以显示文件的哪些标志位被设置上了。最初只有EXT文件系统（EXT2/3/4）支持chattr和lsattr所管理的标志位，但现在很多其他的原生的Linux文件系统都支持了，比如XFS、Btrfs、ReiserFS等等。</p>
<p>在这个教程中，我会示范如果使用chattr来让Linux中的文件不可变更。</p>
<p>chattr和lsattr命令是e2fsprogs包的一部分，它在所有现代Linux发行版都预装了。</p>
<p>下面是chattr的基本语法。<br>]]>
    
    </summary>
    
      <category term="chattr" scheme="http://tiandechi.com/tags/chattr/"/>
    
      <category term="lsattr" scheme="http://tiandechi.com/tags/lsattr/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[Linux的五个查找命令]]></title>
    <link href="http://tiandechi.com/2015/05/20/Linux%E7%9A%84%E4%BA%94%E4%B8%AA%E6%9F%A5%E6%89%BE%E5%91%BD%E4%BB%A4/"/>
    <id>http://tiandechi.com/2015/05/20/Linux的五个查找命令/</id>
    <published>2015-05-20T10:32:47.000Z</published>
    <updated>2015-05-20T10:44:39.000Z</updated>
    <content type="html"><![CDATA[<p>最近，我在学习Linux，下面是一些笔记。</p>
<p>使用电脑的时候，经常需要查找文件。</p>
<p>在Linux中，有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令，你可以看看自己知道几条。大多数程序员，可能经常使用其中的2到3条，对这5条命令都很熟悉的人应该是不多的。</p>
<a id="more"></a>
<h1 id="find">find</h1><p>find是最常见和最强大的查找命令，你可以用它找到任何你想找的文件。<br>find的使用格式如下：<br><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">　　$ find <span class="tag">&lt;<span class="title">指定目录</span>&gt;</span> <span class="tag">&lt;<span class="title">指定条件</span>&gt;</span> <span class="tag">&lt;<span class="title">指定动作</span>&gt;</span></span><br><span class="line"></span><br><span class="line">　　- <span class="tag">&lt;<span class="title">指定目录</span>&gt;</span>： 所要搜索的目录及其所有子目录。默认为当前目录。</span><br><span class="line"></span><br><span class="line">　　- <span class="tag">&lt;<span class="title">指定条件</span>&gt;</span>： 所要搜索的文件的特征。</span><br><span class="line"></span><br><span class="line">　　- <span class="tag">&lt;<span class="title">指定动作</span>&gt;</span>： 对搜索结果进行特定的处理。</span><br></pre></td></tr></table></figure></p>
<p>如果什么参数也不加，find默认搜索当前目录及其子目录，并且不过滤任何结果（也就是返回所有文件），将它们全都显示在屏幕上。<br>find的使用实例：<br><figure class="highlight applescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ find . -<span class="property">name</span> '<span class="keyword">my</span>*'</span><br></pre></td></tr></table></figure></p>
<p>搜索当前目录（含子目录，以下同）中，所有文件名以my开头的文件。<br><figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ <span class="keyword">find</span> . -name <span class="string">'my*'</span> -<span class="keyword">ls</span></span><br></pre></td></tr></table></figure></p>
<p>搜索当前目录中，所有文件名以my开头的文件，并显示它们的详细信息。<br><figure class="highlight dos"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ <span class="built_in">find</span> . -<span class="built_in">type</span> f -mmin -<span class="number">10</span></span><br></pre></td></tr></table></figure></p>
<p>搜索当前目录中，所有过去10分钟中更新过的普通文件。如果不加-type f参数，则搜索普通文件+特殊文件+目录。</p>
<h1 id="locate">locate</h1><p>locate命令其实是&quot;find -name&quot;的另一种写法，但是要比后者快得多，原因在于它不搜索具体目录，而是搜索一个数据库（/var/lib/locatedb），这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库，并且每天自动更新一次，所以使用locate命令查不到最新变动过的文件。为了避免这种情况，可以在使用locate之前，先使用updatedb命令，手动更新数据库。</p>
<p>locate命令的使用实例：<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　<span class="variable">$ </span>locate /etc/sh</span><br></pre></td></tr></table></figure></p>
<p>搜索etc目录下所有以sh开头的文件。<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　<span class="variable">$ </span>locate ~<span class="regexp">/m</span></span><br></pre></td></tr></table></figure></p>
<p>搜索用户主目录下，所有以m开头的文件。<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ locate -<span class="tag">i</span> ~/m</span><br></pre></td></tr></table></figure></p>
<p>搜索用户主目录下，所有以m开头的文件，并且忽略大小写。</p>
<h1 id="whereis">whereis</h1><p>whereis命令只能用于程序名的搜索，而且只搜索二进制文件（参数-b）、man说明文件（参数-m）和源代码文件（参数-s）。如果省略参数，则返回所有信息。<br>whereis命令的使用实例：<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　<span class="variable">$ </span>whereis grep</span><br></pre></td></tr></table></figure></p>
<h1 id="which">which</h1><p>which命令的作用是，在PATH变量指定的路径中，搜索某个系统命令的位置，并且返回第一个搜索结果。也就是说，使用which命令，就可以看到某个系统命令是否存在，以及执行的到底是哪一个位置的命令。</p>
<p>which命令的使用实例：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ <span class="built_in">which</span> grep</span><br></pre></td></tr></table></figure></p>
<h1 id="type">type</h1><p>type命令其实不能算查找命令，它是用来区分某个命令到底是由shell自带的，还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令，那么使用-p参数，会显示该命令的路径，相当于which命令。</p>
<p>type命令的使用实例：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ <span class="built_in">type</span> <span class="built_in">cd</span></span><br></pre></td></tr></table></figure></p>
<p>系统会提示，cd是shell的自带命令（build-in）。<br><figure class="highlight fsharp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ <span class="class"><span class="keyword">type</span> <span class="title">grep</span></span></span><br></pre></td></tr></table></figure></p>
<p>系统会提示，grep是一个外部命令，并显示该命令的路径。<br><figure class="highlight fsharp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">　　$ <span class="class"><span class="keyword">type</span> -<span class="title">p</span> <span class="title">grep</span></span></span><br></pre></td></tr></table></figure></p>
<p>加上-p参数后，就相当于which命令。</p>
<p><a href="http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html" target="_blank" rel="external">Source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>最近，我在学习Linux，下面是一些笔记。</p>
<p>使用电脑的时候，经常需要查找文件。</p>
<p>在Linux中，有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令，你可以看看自己知道几条。大多数程序员，可能经常使用其中的2到3条，对这5条命令都很熟悉的人应该是不多的。</p>]]>
    
    </summary>
    
      <category term="find" scheme="http://tiandechi.com/tags/find/"/>
    
      <category term="locate" scheme="http://tiandechi.com/tags/locate/"/>
    
      <category term="type" scheme="http://tiandechi.com/tags/type/"/>
    
      <category term="whereis" scheme="http://tiandechi.com/tags/whereis/"/>
    
      <category term="which" scheme="http://tiandechi.com/tags/which/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[Windows 7 & Debian 双系统]]></title>
    <link href="http://tiandechi.com/2015/05/18/Windows-7-Debian-%E5%8F%8C%E7%B3%BB%E7%BB%9F/"/>
    <id>http://tiandechi.com/2015/05/18/Windows-7-Debian-双系统/</id>
    <published>2015-05-18T10:20:53.000Z</published>
    <updated>2015-07-27T15:07:56.000Z</updated>
    <content type="html"><![CDATA[<p><strong>建议在 Linux 下使用一段时间后，再参阅本教程，不然小白会摸不着头脑的。</strong></p>
<h1 id="准备：">准备：</h1><ol>
<li>电脑 #至少一台</li>
<li>U盘 &amp; [移动硬盘,NAS]</li>
<li>下载 Win7 &amp; Debian 的 ISO 安装镜像，备份到移动硬盘<a id="more"></a>
</li>
</ol>
<h1 id="首先安装_Windows_7">首先安装 Windows 7</h1><p><strong>注意：如果当前系统即为 win7 且不想要重装可以跳过这一节。</strong><br><strong>但是硬盘要留出用于装 Debian 的 空分区。（使用 磁盘管理 或是 Diskgenius）</strong></p>
<ol>
<li>将现在系统下自己需要的文件备份到移动硬盘</li>
<li><p><a href="http://blog.chinaunix.net/uid-10328574-id-3526642.html" target="_blank" rel="external">将 ISO 写入 U盘</a><br>windows 下可用 UltraISO 工具；<br><strong>建议下载好主板的驱动到制作好的U盘中。装机后手动安装驱动，避免很多问题</strong><br><strong>万能驱动包 也可以...</strong></p>
<p><strong>Linux 下：</strong></p>
<figure class="highlight vala"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="preprocessor">#1.用 fdisk 在 U盘 上建立一个 ntfs 分区，编辑 flag ，勾上 boot 选项</span></span><br><span class="line"><span class="preprocessor">#2.然后 mkfs.ntfs 格式化</span></span><br><span class="line"><span class="preprocessor">#3.挂载 win7 的 iso 和新建的 ntfs 分区，并将 iso 的全部内容复制到 ntfs 分区</span></span><br><span class="line"><span class="preprocessor">#4.编译安装ms-sys</span></span><br><span class="line"><span class="preprocessor">#ms-sys是一个写mbr的工具，起到让系统知道能够引导 win7 安装的作用，至关重要. 到 ms-sys.sourceforge.net 下载</span></span><br><span class="line"><span class="preprocessor">#5.运行以下命令写入 mbr ：</span></span><br><span class="line">ms-sys -<span class="number">7</span> /dev/sdX #其中的 -<span class="number">7</span> 参数指 win7 , sdX 指的是U盘对应的盘符</span><br></pre></td></tr></table></figure>
</li>
<li><p>重启， Bios 里改变 硬盘模式 由 AHCI 到 IDE，引导选择 U盘<br>因为必要驱动没装，所以需要 IDE兼容模式，装好系统后可以改回来。</p>
</li>
<li>安装 Windows</li>
<li><a href="http://jingyan.baidu.com/article/e4511cf31556a02b855eaf4c.html" target="_blank" rel="external">Win7 开启 AHCI</a><br>1.在BIOS里SATA模式为IDE的状态下，进入系统后在运行里输入regedit,打开注册表编辑器，依次打开注册表，修改 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci 下的 start ，把数值数据改为0<br>2.重新启动，在 BIOS 里改成 AHCI 模式，进入系统后会发现新硬件，不用理会，直接安装 AHCI 驱动（ win7 一般联网会自动安装，如没有自动安装，请到主板或笔记本官网下载主板或者单独的 AHCI 驱动）</li>
</ol>
<h1 id="安装Debian"><a href="http://m.blog.chinaunix.net/uid-10995039-id-3142803.html/" target="_blank" rel="external">安装Debian</a></h1><ol>
<li>制作 U盘启动盘<br>使用 UltraISO 即可，此处不再赘述。</li>
<li>U盘引导 开始安装<br><strong>grub 要装在 Linux 所在的分区</strong>（我安装在/dev/sda5）<br>此处不需要在 BIOS 改 硬盘模式， Linux 内核已集成 AHCI 驱动。</li>
<li>重新启动，进入 Win7</li>
</ol>
<h1 id="制作启动引导选项">制作启动引导选项</h1><ol>
<li>安装 EasyBCD</li>
<li>打开 EasyBCD，点击 添加新条目</li>
<li>操作系统: Linux/BSD<br> 类型: GRUB(Legacy)<br> 名称: [自己填]<br> 驱动器： [装 Debian 的那个分区]<br> 【添加条目】</li>
<li>重启，<strong>操作系统选择界面</strong>就有 [自己填] 这个启动选项了。</li>
</ol>
]]></content>
    <summary type="html">
    <![CDATA[<p><strong>建议在 Linux 下使用一段时间后，再参阅本教程，不然小白会摸不着头脑的。</strong></p>
<h1 id="准备：">准备：</h1><ol>
<li>电脑 #至少一台</li>
<li>U盘 &amp; [移动硬盘,NAS]</li>
<li>下载 Win7 &amp; Debian 的 ISO 安装镜像，备份到移动硬盘]]>
    
    </summary>
    
      <category term="Debian" scheme="http://tiandechi.com/tags/Debian/"/>
    
      <category term="Windows" scheme="http://tiandechi.com/tags/Windows/"/>
    
      <category term="OS" scheme="http://tiandechi.com/categories/OS/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[Debian下iceweasel安装flash player]]></title>
    <link href="http://tiandechi.com/2015/05/18/Debian%E4%B8%8Biceweasel%E5%AE%89%E8%A3%85flash-player/"/>
    <id>http://tiandechi.com/2015/05/18/Debian下iceweasel安装flash-player/</id>
    <published>2015-05-18T10:19:02.000Z</published>
    <updated>2015-05-18T10:20:07.000Z</updated>
    <content type="html"><![CDATA[<p>下载 Flash Player<br>解压会得到一个.so文件<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="id">#mkdir</span> -<span class="tag">p</span> ~/.mozilla/plugins/</span><br><span class="line">cp libflashplayer<span class="class">.so</span> ~/.mozilla/plugins/</span><br><span class="line">cp libflashplayer<span class="class">.so</span> /usr/lib/iceweasel/</span><br></pre></td></tr></table></figure></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>下载 Flash Player<br>解压会得到一个.so文件<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><sp]]>
    </summary>
    
      <category term="Debian" scheme="http://tiandechi.com/tags/Debian/"/>
    
      <category term="flash player" scheme="http://tiandechi.com/tags/flash-player/"/>
    
      <category term="iceweasel" scheme="http://tiandechi.com/tags/iceweasel/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[常用正则表达式]]></title>
    <link href="http://tiandechi.com/2015/05/18/%E5%B8%B8%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/"/>
    <id>http://tiandechi.com/2015/05/18/常用正则表达式/</id>
    <published>2015-05-18T10:04:29.000Z</published>
    <updated>2015-05-18T10:53:09.000Z</updated>
    <content type="html"><![CDATA[<pre><code>说明：正则表达式通常用于两种任务：<span class="number">1</span>.验证，<span class="number">2</span>.搜索/替换。用于验证时，通常需要在前后分别加上^和<span class="variable">$，</span>以匹配整个待验证字符串；搜索/替换时是否加上此限定则根据搜索的要求而定，此外，也有可能要在前后加上\b而不是^和<span class="variable">$。</span>此表所列的常用正则表达式，除个别外均未在前后加上任何限定，请根据需要，自行处理。
</code></pre><a id="more"></a>
<table><br><tr><br><th>说明</th><br><th>正则表达式</th><br></tr><br><tr><br><td>网址（URL）</td><br><td><spanclass="regex">[a-zA-z]+://[^\s]<em></em></spanclass="regex"></td><br></tr><br><tr><br><td>IP地址(IPAddress)</td><br><td><spanclass="regex">((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)</spanclass="regex"></td><br></tr><br><tr><br><td>电子邮件(Email)</td><br><td><spanclass="regex">\w+([-+.]\w+)@\w+([-.]\w+)<em>.\w+([-.]\w+)</em></spanclass="regex"></td><br></tr><br><tr><br><td>QQ号码</td><br><td><spanclass="regex">[1-9]\d{4,}</spanclass="regex"></td><br></tr><br><tr><br><td>HTML标记(包含内容或自闭合)</td><br><td><spanclass="regex">&lt;(.<em>)(.</em>)&gt;.<em>&lt;\/\1&gt;|&lt;(.</em>)\/&gt;</spanclass="regex"></td><br></tr><br><tr><br><td>密码(由数字/大写字母/小写字母/标点符号组成，四种都必有，8位以上)</td><br><td><spanclass="regex">(?=^.{8,}$)(?=.<em>\d)(?=.</em>\W+)(?=.<em>[A-Z])(?=.</em>[a-z])(?!.<em>\n).</em>$</spanclass="regex"></td><br></tr><br><tr><br><td>日期(年-月-日)</td><br><td><spanclass="regex">(\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))</spanclass="regex"></td><br></tr><br><tr><br><td>日期(月/日/年)</td><br><td><spanclass="regex">((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})</spanclass="regex"></td><br></tr><br><tr><br><td>时间(小时:分钟,24小时制)</td><br><td><spanclass="regex">((1|0?)[0-9]|2[0-3]):([0-5][0-9])</spanclass="regex"></td><br></tr><br><tr><br><td>汉字(字符)</td><br><td><spanclass="regex">[\u4e00-\u9fa5]</spanclass="regex"></td><br></tr><br><tr><br><td>中文及全角标点符号(字符)</td><br><td><spanclass="regex">[\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]</spanclass="regex"></td><br></tr><br><tr><br><td>中国大陆固定电话号码</td><br><td><spanclass="regex">(\d{4}-|\d{3}-)?(\d{8}|\d{7})</spanclass="regex"></td><br></tr><br><tr><br><td>中国大陆手机号码</td><br><td><spanclass="regex">1\d{10}</spanclass="regex"></td><br></tr><br><tr><br><td>中国大陆邮政编码</td><br><td><spanclass="regex">[1-9]\d{5}</spanclass="regex"></td><br></tr><br><tr><br><td>中国大陆身份证号(15位或18位)</td><br><td><spanclass="regex">\d{15}(\d\d[0-9xX])?</spanclass="regex"></td><br></tr><br><tr><br><td>非负整数(正整数或零)</td><br><td><spanclass="regex">\d+</spanclass="regex"></td><br></tr><br><tr><br><td>正整数</td><br><td><spanclass="regex">[0-9]<em>[1-9][0-9]</em></spanclass="regex"></td><br></tr><br><tr><br><td>负整数</td><br><td><spanclass="regex">-[0-9]<em>[1-9][0-9]</em></spanclass="regex"></td><br></tr><br><tr><br><td>整数</td><br><td><spanclass="regex">-?\d+</spanclass="regex"></td><br></tr><br><tr><br><td>小数</td><br><td><spanclass="regex">(-?\d+)(.\d+)?</spanclass="regex"></td><br></tr><br><tr><br><td>不包含abc的单词</td><br><td><spanclass="regex">\b((?!abc)\w)+\b</spanclass="regex"></td><br></tr><br></table>

<p><a href="http://deerchao.net/tutorials/regex/common.htm" target="_blank" rel="external">来源</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<pre><code>说明：正则表达式通常用于两种任务：<span class="number">1</span>.验证，<span class="number">2</span>.搜索/替换。用于验证时，通常需要在前后分别加上^和<span class="variable">$，</span>以匹配整个待验证字符串；搜索/替换时是否加上此限定则根据搜索的要求而定，此外，也有可能要在前后加上\b而不是^和<span class="variable">$。</span>此表所列的常用正则表达式，除个别外均未在前后加上任何限定，请根据需要，自行处理。
</code></pre>]]>
    
    </summary>
    
      <category term="regex" scheme="http://tiandechi.com/tags/regex/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[Linux dd命令制作U盘系统启动盘]]></title>
    <link href="http://tiandechi.com/2015/05/10/Linux-dd%E5%91%BD%E4%BB%A4%E5%88%B6%E4%BD%9CU%E7%9B%98%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E7%9B%98/"/>
    <id>http://tiandechi.com/2015/05/10/Linux-dd命令制作U盘系统启动盘/</id>
    <published>2015-05-10T05:26:41.000Z</published>
    <updated>2015-05-10T05:28:54.000Z</updated>
    <content type="html"><![CDATA[<p>作U盘系统启动盘，Ubuntu下有个图形界面工具Startup Disk Creator，简单易用，但是缺点就是只能制作Ubuntu的启动盘，别的系统不支持。那么我想在Ubuntu下作Fedora的系统启动盘要怎么办呢？不要紧，有dd命令呢！</p>
<p>dd命令是用来拷贝文件的命令，它可以自动转换成对应的格式。在玩树莓派的时候，我们也是用dd命令烧写系统的，还记得吧？<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo <span class="tag">dd</span> bs=<span class="number">4</span>M <span class="keyword">if</span>=~/raspberrypi/<span class="number">2014</span>-<span class="number">09</span>-<span class="number">09</span>-wheezy-raspbian<span class="class">.img</span> of=/dev/sdb &amp;&amp; sync</span><br></pre></td></tr></table></figure></p>
<p>dd命令简单用法就是这样，那么我们还可以用它烧写光盘和作其他系统的启动U盘。<br><a id="more"></a><br>在玩树莓派时烧写的文件是img格式的系统镜像，而我们要制作Fedora等Linux发行版通常是iso格式的文件，不要紧，formatting的问题就交给dd命令吧。<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="tag">dd</span> --help</span><br><span class="line">Usage: <span class="tag">dd</span> [OPERAND]...</span><br><span class="line">or: <span class="tag">dd</span> OPTION</span><br><span class="line">Copy <span class="tag">a</span> file, converting and formatting according to the operands.</span><br></pre></td></tr></table></figure></p>
<h1 id="过程都是类似的，首先要umount自己的U盘：">过程都是类似的，首先要umount自己的U盘：</h1><figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ df -h</span><br><span class="line">Filesystem Size Used Avail Use% Mounted on</span><br><span class="line"><span class="regexp">/dev/</span>sdb1 <span class="number">3.8</span>G <span class="number">880</span>K <span class="number">3.8</span>G <span class="number">1</span>% <span class="regexp">/media/</span>linc/<span class="number">87</span>CD-<span class="number">7</span>F86</span><br><span class="line"></span><br><span class="line">$ umount <span class="regexp">/dev/</span>sdb1</span><br></pre></td></tr></table></figure>
<h1 id="然后就是dd命令烧写：">然后就是dd命令烧写：</h1><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ sudo <span class="tag">dd</span> bs=<span class="number">4</span>M <span class="keyword">if</span>=~/linux_images/Fedora-Live-Workstation-i686-<span class="number">21</span>-<span class="number">5</span><span class="class">.iso</span> of=/dev/sdb &amp;&amp; sync</span><br><span class="line">[sudo] password <span class="keyword">for</span> linc:</span><br><span class="line"><span class="number">318</span>+<span class="number">1</span> records <span class="keyword">in</span></span><br><span class="line"><span class="number">318</span>+<span class="number">1</span> records out</span><br><span class="line"><span class="number">1336934400</span> bytes (<span class="number">1.3</span> GB) copied, <span class="number">171.331</span> s, <span class="number">7.8</span> MB/s</span><br></pre></td></tr></table></figure>
<p><strong>注意，dd命令中的目标是sdb，没有标号。</strong></p>
<p><a href="http://www.linuxidc.com/Linux/2015-02/113585.htm" target="_blank" rel="external">source</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>作U盘系统启动盘，Ubuntu下有个图形界面工具Startup Disk Creator，简单易用，但是缺点就是只能制作Ubuntu的启动盘，别的系统不支持。那么我想在Ubuntu下作Fedora的系统启动盘要怎么办呢？不要紧，有dd命令呢！</p>
<p>dd命令是用来拷贝文件的命令，它可以自动转换成对应的格式。在玩树莓派的时候，我们也是用dd命令烧写系统的，还记得吧？<br><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo <span class="tag">dd</span> bs=<span class="number">4</span>M <span class="keyword">if</span>=~/raspberrypi/<span class="number">2014</span>-<span class="number">09</span>-<span class="number">09</span>-wheezy-raspbian<span class="class">.img</span> of=/dev/sdb &amp;&amp; sync</span><br></pre></td></tr></table></figure></p>
<p>dd命令简单用法就是这样，那么我们还可以用它烧写光盘和作其他系统的启动U盘。<br>]]>
    
    </summary>
    
      <category term="dd" scheme="http://tiandechi.com/tags/dd/"/>
    
      <category term="启动盘" scheme="http://tiandechi.com/tags/%E5%90%AF%E5%8A%A8%E7%9B%98/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[查看Debian的版本信息]]></title>
    <link href="http://tiandechi.com/2015/05/10/%E6%9F%A5%E7%9C%8BDebian%E7%9A%84%E7%89%88%E6%9C%AC%E4%BF%A1%E6%81%AF/"/>
    <id>http://tiandechi.com/2015/05/10/查看Debian的版本信息/</id>
    <published>2015-05-10T05:06:47.000Z</published>
    <updated>2015-05-10T05:08:04.000Z</updated>
    <content type="html"><![CDATA[<figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">$ lsb_release -a</span><br><span class="line">No LSB modules are available.</span><br><span class="line">Distributor <span class="string">ID:</span> Debian</span><br><span class="line"><span class="string">Description:</span> Debian GNU/Linux testing (squeeze)</span><br><span class="line"><span class="string">Release:</span> testing</span><br><span class="line"><span class="string">Codename:</span> squeeze</span><br><span class="line"></span><br><span class="line">$ cat <span class="regexp">/etc/</span>debian_version</span><br><span class="line">squeeze/sid</span><br></pre></td></tr></table></figure>
<p>/usr/share/doc/base-files/FAQ:</p>
<p>Q. Ok, but how do I know which distribution I&#39;m running?</p>
<p>A. If you are running testing or unstable, then /etc/debian_version is<br>not a reliable way to know that anymore. Looking at the contents of<br>your /etc/apt/sources.list file is probably a much better way.</p>
<p>其他相关的或有趣的包还有：<br><a id="more"></a><br>base-files</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="variable">$ </span>linuxinfo<span class="variable">$ </span>linuxlogo</span><br></pre></td></tr></table></figure>
<p>查看内核版本：</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">cat /<span class="keyword">proc</span>/version</span><br><span class="line"></span><br><span class="line">uname -a</span><br></pre></td></tr></table></figure>
<p><a href="http://www.cnblogs.com/lbsx/archive/2010/12/29/1920989.html" target="_blank" rel="external">来源</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">$ lsb_release -a</span><br><span class="line">No LSB modules are available.</span><br><span class="line">Distributor <span class="string">ID:</span> Debian</span><br><span class="line"><span class="string">Description:</span> Debian GNU/Linux testing (squeeze)</span><br><span class="line"><span class="string">Release:</span> testing</span><br><span class="line"><span class="string">Codename:</span> squeeze</span><br><span class="line"></span><br><span class="line">$ cat <span class="regexp">/etc/</span>debian_version</span><br><span class="line">squeeze/sid</span><br></pre></td></tr></table></figure>
<p>/usr/share/doc/base-files/FAQ:</p>
<p>Q. Ok, but how do I know which distribution I&#39;m running?</p>
<p>A. If you are running testing or unstable, then /etc/debian_version is<br>not a reliable way to know that anymore. Looking at the contents of<br>your /etc/apt/sources.list file is probably a much better way.</p>
<p>其他相关的或有趣的包还有：<br>]]>
    
    </summary>
    
      <category term="Debian" scheme="http://tiandechi.com/tags/Debian/"/>
    
      <category term="version" scheme="http://tiandechi.com/tags/version/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[How to disable Network Manager on Linux]]></title>
    <link href="http://tiandechi.com/2015/05/10/How-to-disable-Network-Manager-on-Linux/"/>
    <id>http://tiandechi.com/2015/05/10/How-to-disable-Network-Manager-on-Linux/</id>
    <published>2015-05-10T05:03:43.000Z</published>
    <updated>2015-05-10T05:12:30.000Z</updated>
    <content type="html"><![CDATA[<p>Network Manager is a feature-rich network configuration service which is used by default in most Linux desktop environments nowadays. It provides automatic configuration of (wired/wireless) network interfaces, as well as VPN, mobile broadband and even Bluetooth connections. Network Manager is smart enough to automatically switch to the best (or the most recent) connection network, and can inform other applications of up-to-date network events via D-Bus API.</p>
<p>While Network Manager comes with various sophisticated features, you might just prefer the old plain network service. There could be several reasons to do so. For one, you may wish to have more control over network management, instead of relying on purely automatic configuration and switch-over, which may or may not suit your needs. Besides, Network Manager is not suitable for advanced networking setup, such as multi-homing to more than one wired connections, forwarding network traffic, configuring Linux bridge or aliases, etc.<br><a id="more"></a><br>In general, Network Manager is designed to keep a typical end-user Linux box connected at all times with the best possible connection with minimum intervention by users. If such automation is not needed in your Linux environment, you can turn off Network Manager.</p>
<p>This tutorial describes how to disable Network Manager in various Linux desktop environments.<br>Check Which Network Interfaces are Managed by Network Manager</p>
<p>To check if Network Manager is managing any network interface, you can use nmcli, which is a command line utility that comes with Network Manager.<br><figure class="highlight fortran"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ nmcli dev <span class="keyword">status</span></span><br><span class="line"></span><br><span class="line">DEVICE     <span class="keyword">TYPE</span>              STATE</span><br><span class="line">eth1      <span class="number">802</span>-<span class="number">3</span>-ethernet   connected</span><br><span class="line">eth0      <span class="number">802</span>-<span class="number">3</span>-ethernet   connected</span><br></pre></td></tr></table></figure></p>
<p>The above command will list all existing network interfaces along with their STATE. If STATE is shown as &quot;unmanaged&quot;, this means Network Manager is NOT controlling a corresponding interface. If STATE displays any other values (e.g., &quot;connected&quot;), it implies that a given interface is managed by Network Manager.<br>Disable Network Manager Completely</p>
<p>Here is how to disable Network Manager completely, so that Network Manager stops running on your Linux system.</p>
<h1 id="To_disable_Network_Manager_on_Debian:">To disable Network Manager on Debian:</h1><figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ sudo /etc/init.<span class="keyword">d</span>/network-manager stop</span><br><span class="line">$ sudo <span class="keyword">update</span>-rc.<span class="keyword">d</span> network-manager remove</span><br></pre></td></tr></table></figure>
<h1 id="To_disable_Network_Manager_on_Ubuntu_or_Linux_Mint:">To disable Network Manager on Ubuntu or Linux Mint:</h1><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>sudo stop network-manager</span><br><span class="line"><span class="variable">$ </span>echo <span class="string">"manual"</span> | sudo tee /etc/init/network-manager.override</span><br></pre></td></tr></table></figure>
<p>After disabling Network Manager on Debian or Ubuntu, use /etc/network/interfaces to configure network interfaces.</p>
<h1 id="To_disable_Network_Manager_on_Fedora:">To disable Network Manager on Fedora:</h1><figure class="highlight puppet"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ sudo systemctl <span class="literal">stop</span> <span class="constant">Network</span>Manager.<span class="keyword">service</span></span><br><span class="line">$ sudo systemctl disable <span class="constant">Network</span>Manager.<span class="keyword">service</span></span><br></pre></td></tr></table></figure>
<h1 id="To_disable_Network_Manager_on_CentOS:">To disable Network Manager on CentOS:</h1><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>sudo service <span class="constant">NetworkManager </span>stop</span><br><span class="line"><span class="variable">$ </span>sudo chkconfig <span class="constant">NetworkManager </span>off</span><br></pre></td></tr></table></figure>
<p>After disabling Network Manager on Fedora or CentOS, use /etc/sysconfig/network-scripts/ifcfg-ethX files to configure network interfaces.<br>Disable Network Manager for a Particular Network Interface on Debian, Ubuntu or Linux Mint</p>
<p>To disable Network Manager only for eth1 on Debian, Ubuntu or Linux Mint, you can do the following.</p>
<p>First, open the Network Manager configuration file in /etc/NetworkManager with a text editor, and set &quot;managed=false&quot;, typically shown under [ifupdown].<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>sudo vi /etc/<span class="constant">NetworkManager/NetworkManager.</span>conf</span><br><span class="line"></span><br><span class="line">[ifupdown]</span><br><span class="line">managed=<span class="keyword">false</span></span><br></pre></td></tr></table></figure></p>
<p>Then in /etc/network/interfaces, add information about the interface you want to disable Network Manager for. In this example, the interface is eth1, and we are using static IP configuration.<br><figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">$ sudo vi /etc/network/interfaces</span><br><span class="line"></span><br><span class="line"><span class="comment"># The loopback network interface</span></span><br><span class="line"><span class="type">auto</span> lo</span><br><span class="line">iface lo inet loopback</span><br><span class="line"></span><br><span class="line"><span class="comment"># network interface not managed by Network Manager</span></span><br><span class="line">allow-hotplug eth1</span><br><span class="line">iface eth1 inet <span class="keyword">static</span></span><br><span class="line">address <span class="number">10</span>.<span class="number">0</span>.<span class="number">0</span>.<span class="number">10</span></span><br><span class="line">netmask <span class="number">255</span>.<span class="number">255</span>.<span class="number">255</span>.<span class="number">0</span></span><br><span class="line">gateway <span class="number">10</span>.<span class="number">0</span>.<span class="number">0</span>.<span class="number">1</span></span><br><span class="line">dns-nameservers <span class="number">8</span>.<span class="number">8</span>.<span class="number">8</span>.<span class="number">8</span></span><br></pre></td></tr></table></figure></p>
<p>Then Network Manager automatically ignore any interfaces specified in /etc/network/interfaces, and stop managing them.</p>
<p>After rebooting, verify that Network Manager is successfully disabled for eth1.<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$ </span>nmcli dev status</span><br></pre></td></tr></table></figure></p>
<p>Disable Network Manager for a Particular Network Interface on Fedora or CentOS</p>
<p>The following steps will disable Network Manager for eth1 on Fedora, CentOS or RHEL.</p>
<p>Create an interface configuration file for eth1 (if not exist), and add &quot;NM_CONTROLLED=no&quot;.</p>
<p>Enable network service so that eth1 is activated by network service automatically upon boot.<br><figure class="highlight applescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo chkconfig network <span class="function_start"><span class="keyword">on</span></span></span><br></pre></td></tr></table></figure></p>
<p>Upon rebooting, verify that Network Manager is successfully disabled for eth1 with nmcli command.<br>$ nmcli dev status<br><a href="http://xmodulo.com/disable-network-manager-linux.html" target="_blank" rel="external">来源</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>Network Manager is a feature-rich network configuration service which is used by default in most Linux desktop environments nowadays. It provides automatic configuration of (wired/wireless) network interfaces, as well as VPN, mobile broadband and even Bluetooth connections. Network Manager is smart enough to automatically switch to the best (or the most recent) connection network, and can inform other applications of up-to-date network events via D-Bus API.</p>
<p>While Network Manager comes with various sophisticated features, you might just prefer the old plain network service. There could be several reasons to do so. For one, you may wish to have more control over network management, instead of relying on purely automatic configuration and switch-over, which may or may not suit your needs. Besides, Network Manager is not suitable for advanced networking setup, such as multi-homing to more than one wired connections, forwarding network traffic, configuring Linux bridge or aliases, etc.<br>]]>
    
    </summary>
    
      <category term="network-manager" scheme="http://tiandechi.com/tags/network-manager/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[Linux环境获取系统性能数据]]></title>
    <link href="http://tiandechi.com/2015/05/10/Linux%E7%8E%AF%E5%A2%83%E8%8E%B7%E5%8F%96%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E6%95%B0%E6%8D%AE/"/>
    <id>http://tiandechi.com/2015/05/10/Linux环境获取系统性能数据/</id>
    <published>2015-05-10T05:01:52.000Z</published>
    <updated>2015-05-10T05:03:03.000Z</updated>
    <content type="html"><![CDATA[<h1 id="CPU利用率">CPU利用率</h1><p>/proc/stat文件里包含系统cpu使用情况，2-8列对应的CPU消耗含义是用户态消耗(user)、用户态nice消耗(nice)、内 核态消耗(sys)、空闲时间(idle)、等待IO消耗(iowait)、硬件中断消耗(hardirq)、软中断消耗(softirq)。（man proc）</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">$ cat /<span class="keyword">proc</span>/stat</span><br><span class="line">cpu  <span class="number">2339504870</span> <span class="number">2641995</span> <span class="number">716723851</span> <span class="number">70316975284</span> <span class="number">7219566</span> <span class="number">328971</span> <span class="number">304057999</span> <span class="number">0</span> <span class="number">0</span></span><br><span class="line">cpu0 <span class="number">211214357</span> <span class="number">275710</span> <span class="number">57674236</span> <span class="number">2778331292</span> <span class="number">3688175</span> <span class="number">10421</span> <span class="number">12279511</span> <span class="number">0</span> <span class="number">0</span></span><br><span class="line">cpu1 <span class="number">140100049</span> <span class="number">278788</span> <span class="number">47142039</span> <span class="number">2857686940</span> <span class="number">180452</span> <span class="number">32028</span> <span class="number">14960093</span> <span class="number">0</span> <span class="number">0</span></span><br><span class="line">...</span><br></pre></td></tr></table></figure>
<p>要计算t1~t2时间内系统的cpu利用率，需要在t1、t2时刻分别采集cpu使用信息<br><a id="more"></a><br><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">t1_all = t1<span class="list">(<span class="keyword">user</span> + nice + sys + idle + iowait + hardirq + sortirq)</span></span><br><span class="line">t1_used = t1<span class="list">(<span class="keyword">user</span> + nice + sys + iowait + hardirq + sortirq)</span></span><br><span class="line">t2_all = t2<span class="list">(<span class="keyword">user</span> + nice + sys + idle + iowait + hardirq + sortirq</span><br><span class="line">t2_used = t2<span class="list">(<span class="keyword">user</span> + nice + sys + iowait + hardirq + sortirq)</span></span><br><span class="line"></span><br><span class="line">cpu_usage = <span class="list">(<span class="keyword">t2_used</span> - t1_used)</span> / <span class="list">(<span class="keyword">t2_all</span> - t1_all)</span></span></span><br></pre></td></tr></table></figure></p>
<h1 id="进程CPU利用率">进程CPU利用率</h1><p>/proc/$pid/stat文件里包含某个进程的cpu使用信息，14、15、16、17列对应进程用户态消耗(user)、内核态消耗(sys)、用户态等待子进程的消耗(user_child)、内核态等待子进程的消耗(sys_child)。</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">$cat /<span class="keyword">proc</span>/<span class="number">24076</span>/stat</span><br><span class="line"><span class="number">24076</span> (redis-server) S <span class="number">1</span> <span class="number">24076</span> <span class="number">24076</span> <span class="number">0</span> -<span class="number">1</span> <span class="number">4202560</span> <span class="number">5755</span> <span class="number">147</span> <span class="number">0</span> <span class="number">0</span> <span class="number">1864</span> <span class="number">3298</span> <span class="number">0</span> <span class="number">0</span> <span class="number">20</span> <span class="number">0</span> <span class="number">3</span> <span class="number">0</span> <span class="number">70238536</span> <span class="number">159555584</span> <span class="number">5145</span> <span class="number">18446744073709551615</span> <span class="number">1</span> <span class="number">1</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">4097</span> <span class="number">17610</span> <span class="number">18446744073709551615</span> <span class="number">0</span> <span class="number">0</span> <span class="number">17</span> <span class="number">4</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span></span><br></pre></td></tr></table></figure>
<p>t1、t2时刻分别采集/proc/stat、/proc/$pid/stat，获取总的cpu消耗，以及进程的cpu消耗<br><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">t1_all = t1<span class="list">(<span class="keyword">user</span> + nice + sys + idle + iowait + hardirq + sortirq)</span></span><br><span class="line">t1_pid = t1<span class="list">(<span class="keyword">user</span> + sys + user_child + sys_child)</span></span><br><span class="line">t2_all = t2<span class="list">(<span class="keyword">user</span> + nice + sys + idle + iowait + hardirq + sortirq)</span></span><br><span class="line">t2_pid = t2<span class="list">(<span class="keyword">user</span> + sys + user_child + sys_child)</span></span><br><span class="line"></span><br><span class="line">pid_cpu_usage = <span class="list">(<span class="keyword">t2_pid</span> - t1_pid)</span> / <span class="list">(<span class="keyword">t2_all</span> - t1_all)</span></span><br></pre></td></tr></table></figure></p>
<h1 id="内存利用率">内存利用率</h1><p>/proc/meminfo文件里包含系统内存使用信息</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ cat /<span class="keyword">proc</span>/meminfo</span><br><span class="line"><span class="type">MemTotal</span>:       <span class="number">198450624</span> kB</span><br><span class="line"><span class="type">MemFree</span>:        <span class="number">184950332</span> kB</span><br><span class="line"></span><br><span class="line">mem_usage = <span class="number">1</span> - <span class="type">MemFree</span> / <span class="type">MemTotal</span></span><br></pre></td></tr></table></figure>
<h1 id="系统load">系统load</h1><p>/proc/uptime的前3列包含了最近1min、5min、15min系统的平均load（正在运行或等待IO的进程数，进程state为R或D）</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$cat /<span class="keyword">proc</span>/loadavg</span><br><span class="line"><span class="number">0</span>.<span class="number">02</span> <span class="number">0</span>.<span class="number">09</span> <span class="number">0</span>.<span class="number">08</span> <span class="number">1</span>/<span class="number">2362</span> <span class="number">855</span></span><br></pre></td></tr></table></figure>
<h1 id="网卡流量信息">网卡流量信息</h1><p>/proc/net/dev包含所有网卡的流量信息，第1、2、10、11列分别代表网卡当前接受字节数（recv_bytes）、接受包个数(recv_packets)、发送字节数(send_bytes)、发送个数(send_packets)。</p>
<figure class="highlight tcl"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$cat</span> /<span class="keyword">proc</span>/net/dev<span class="symbol"></span><br><span class="line">Inter-|</span> <span class="symbol">  Receive</span>                                                |<span class="symbol">  Transmit</span></span><br><span class="line"><span class="symbol"> face</span> |bytes<span class="symbol">    packets</span> errs<span class="symbol"> drop</span> fifo<span class="symbol"> frame</span> compressed<span class="symbol"> multicast|bytes</span> <span class="symbol">   packets</span> errs<span class="symbol"> drop</span> fifo<span class="symbol"> colls</span> <span class="symbol">    carrier</span> compressed<span class="symbol"></span><br><span class="line"> lo:25047448261</span> 37947893    0    0    0     0          0         0 25047448261 37947893    0    0    0     0       0          0<span class="symbol"></span><br><span class="line"> eth0:2566932970457</span> 7620547348    0    0    2     0          0     62732 728662220296 6145797287    0    0    0     0       0          0<span class="symbol"></span><br><span class="line"> eth1:2023304550582</span> 7268848253    0    0    0     0          0     77924 742443231982 6129090809    0    0    0     0       0          0</span><br></pre></td></tr></table></figure>
<p>t1~t2时间内的平均流量为<br><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">avg_recv_bytes = <span class="list">(<span class="keyword">t2_recv_bytes</span> - t1_recv_bytes)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span></span><br><span class="line">avg_send_bytes = <span class="list">(<span class="keyword">t2_send_bytes</span> - t1_send_bytes)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span></span><br></pre></td></tr></table></figure></p>
<h1 id="磁盘（文件系统）空间信息">磁盘（文件系统）空间信息</h1><p>通过statfs系统调用可获取当前文件系统的空间占用情况</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">struct</span> statfs &#123;</span><br><span class="line">    <span class="keyword">long</span>    f_type;     <span class="comment">/* type of file system (see below) */</span></span><br><span class="line">    <span class="keyword">long</span>    f_bsize;    <span class="comment">/* optimal transfer block size */</span></span><br><span class="line">    <span class="keyword">long</span>    f_blocks;   <span class="comment">/* total data blocks in file system */</span></span><br><span class="line">    <span class="keyword">long</span>    f_bfree;    <span class="comment">/* free blocks in fs */</span></span><br><span class="line">    <span class="keyword">long</span>    f_bavail;   <span class="comment">/* free blocks avail to non-superuser */</span></span><br><span class="line">    ...</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line">disk_usage = <span class="number">1</span> - f_bfree / f_blocks</span><br></pre></td></tr></table></figure>
<h1 id="磁盘读写信息">磁盘读写信息</h1><p>/proc/diskstats包含磁盘的IO信息，第4-9列分别为当前磁盘读次数(read)，磁盘读扇区数(read_sec)、磁盘读毫秒数(read_ms)、磁盘写次数(write)、磁盘写扇区数(write_sec)、磁盘写毫秒数(write_ms)。</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$cat /<span class="keyword">proc</span>/diskstats</span><br><span class="line"><span class="number">8</span>       <span class="number">4</span> sda4 <span class="number">3</span> <span class="number">0</span> <span class="number">12</span> <span class="number">8</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">8</span> <span class="number">8</span></span><br><span class="line"><span class="number">8</span>       <span class="number">5</span> sda5 <span class="number">87928</span> <span class="number">55284</span> <span class="number">2842138</span> <span class="number">17349</span> <span class="number">1230958</span> <span class="number">7932106</span> <span class="number">73380432</span> <span class="number">4931382</span> <span class="number">0</span> <span class="number">503343</span> <span class="number">4947504</span></span><br><span class="line"><span class="number">8</span>      <span class="number">16</span> sdb <span class="number">393</span> <span class="number">35</span> <span class="number">3418</span> <span class="number">37</span> <span class="number">17</span> <span class="number">2</span> <span class="number">152</span> <span class="number">0</span> <span class="number">0</span> <span class="number">37</span> <span class="number">37</span></span><br><span class="line"><span class="number">8</span>      <span class="number">32</span> sdc <span class="number">788</span> <span class="number">114</span> <span class="number">10690</span> <span class="number">10132</span> <span class="number">14550036</span> <span class="number">226568635</span> <span class="number">1929026928</span> <span class="number">623148463</span> <span class="number">0</span> <span class="number">4917530</span> <span class="number">623154797</span></span><br></pre></td></tr></table></figure>
<p>t1~t2时间内磁盘平均读写次数、扇区数、IO利用率计算如下<br><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">avg_read = <span class="list">(<span class="keyword">t2_read</span> - t1_read)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span></span><br><span class="line">avg_read_sec = <span class="list">(<span class="keyword">t2_read_sec</span> - t1_read_sec)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span></span><br><span class="line">avg_write = <span class="list">(<span class="keyword">t2_write</span> - t1_write)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span></span><br><span class="line">avg_write_sec = <span class="list">(<span class="keyword">t2_write_sec</span> - t1_write_sec)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span></span><br><span class="line">io_util = <span class="list">(<span class="keyword">t2_read_ms</span> + t2_write_ms - t1_read_ms - t1_write_ms)</span> / <span class="list">(<span class="keyword">t2</span> - t1)</span> <span class="list">(<span class="keyword">t1</span>~t2时间段内IO</span></span><br></pre></td></tr></table></figure></p>
<p><a href="http://www.linuxidc.com/Linux/2015-05/117278.htm" target="_blank" rel="external">来源</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<h1 id="CPU利用率">CPU利用率</h1><p>/proc/stat文件里包含系统cpu使用情况，2-8列对应的CPU消耗含义是用户态消耗(user)、用户态nice消耗(nice)、内 核态消耗(sys)、空闲时间(idle)、等待IO消耗(iowait)、硬件中断消耗(hardirq)、软中断消耗(softirq)。（man proc）</p>
<figure class="highlight nimrod"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">$ cat /<span class="keyword">proc</span>/stat</span><br><span class="line">cpu  <span class="number">2339504870</span> <span class="number">2641995</span> <span class="number">716723851</span> <span class="number">70316975284</span> <span class="number">7219566</span> <span class="number">328971</span> <span class="number">304057999</span> <span class="number">0</span> <span class="number">0</span></span><br><span class="line">cpu0 <span class="number">211214357</span> <span class="number">275710</span> <span class="number">57674236</span> <span class="number">2778331292</span> <span class="number">3688175</span> <span class="number">10421</span> <span class="number">12279511</span> <span class="number">0</span> <span class="number">0</span></span><br><span class="line">cpu1 <span class="number">140100049</span> <span class="number">278788</span> <span class="number">47142039</span> <span class="number">2857686940</span> <span class="number">180452</span> <span class="number">32028</span> <span class="number">14960093</span> <span class="number">0</span> <span class="number">0</span></span><br><span class="line">...</span><br></pre></td></tr></table></figure>
<p>要计算t1~t2时间内系统的cpu利用率，需要在t1、t2时刻分别采集cpu使用信息<br>]]>
    
    </summary>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[win7 32位与64位下载地址存档]]></title>
    <link href="http://tiandechi.com/2015/05/10/win7-32%E4%BD%8D%E4%B8%8E64%E4%BD%8D%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80%E5%AD%98%E6%A1%A3/"/>
    <id>http://tiandechi.com/2015/05/10/win7-32位与64位下载地址存档/</id>
    <published>2015-05-10T04:58:22.000Z</published>
    <updated>2015-05-10T05:12:20.000Z</updated>
    <content type="html"><![CDATA[<h1 id="Windows_7_简体中文旗舰版_x86_(32位_MSDN_RTM正式版)">Windows 7 简体中文旗舰版 x86 (32位 MSDN RTM正式版)</h1><p><a href="ed2k://%7Cfile%7Ccn_windows_7_ultimate_with_sp1_x86_dvd_618763.iso%7C2651877376%7CD6A0D9FDB8C67A65B92B4C1AC197109C%7C/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_Ultimate_(x64)-DVD(English)">Windows 7 Ultimate (x64)-DVD(English)</h1><p><a href="ed2k://|file|en_windows_7_ultimate_x64_dvd_X15-65922.iso|3224686592|6719AFC5486F38BE75F2DF39C8527113|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_Ultimate_N_(x64)-DVD(English)">Windows 7 Ultimate N (x64)-DVD(English)</h1><p><a href="ed2k://|file|en_windows_7_ultimate_n_x64_dvd_x16-13641.iso|2908555264|C014B86268602565B7880933B41F21AC|/" target="_blank" rel="external">下载地址</a><br><a id="more"></a></p>
<h1 id="Windows_7_Ultimate_with_Service_Pack_1_(x64)-DVD(English)">Windows 7 Ultimate with Service Pack 1 (x64)-DVD(English)</h1><p><a href="ed2k://|file|en_windows_7_ultimate_with_sp1_x64_dvd_618240.iso|3319478272|004498E6851D90B5E025049604942C86|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_Ultimate_with_Service_Pack_1_(x64)-DVD(English)-1">Windows 7 Ultimate with Service Pack 1 (x64)-DVD(English)</h1><p><a href="ed2k://|file|en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso|3320903680|743598C64E635C72964CF02A3E0AD547|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_旗舰版_(x64)-DVD(简体中文)">Windows 7 旗舰版 (x64)-DVD(简体中文)</h1><p><a href="ed2k://|file|cn_windows_7_ultimate_x64_dvd_x15-66043.iso|3341268992|7DD7FA757CE6D2DB78B6901F81A6907A|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_旗舰版_含SP1(x64)-DVD(简体中文)">Windows 7 旗舰版 含SP1(x64)-DVD(简体中文)</h1><p><a href="ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso|3419052032|56E90251E665E643C81168F6DD870BCB|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_旗舰版_含SP1(x64)-DVD(简体中文)-1">Windows 7 旗舰版 含SP1(x64)-DVD(简体中文)</h1><p><a href="ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_旗舰版_(x64)-DVD(中文-香港特别行政区)">Windows 7 旗舰版 (x64)-DVD(中文-香港特别行政区)</h1><p><a href="ed2k://|file|hk_windows_7_ultimate_x64_dvd_x15-65911.iso|3313936384|917F16D04FBBFDE763A35E2A32595AD9|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_旗舰版_(x64)-DVD(中文-香港特别行政区)-1">Windows 7 旗舰版 (x64)-DVD(中文-香港特别行政区)</h1><p><a href="ed2k://|file|hk_windows_7_ultimate_with_sp1_x64_dvd_618544.iso|3390910464|BE5F84D28F5DA939EEFDB9498D4F986D|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="Windows_7_旗舰版_(x64)-DVD(中文-香港特别行政区)-2">Windows 7 旗舰版 (x64)-DVD(中文-香港特别行政区)</h1><p><a href="ed2k://|file|hk_windows_7_ultimate_with_sp1_x64_dvd_u_677411.iso|3392374784|C8DFF761AD8DD1B9137887954942B803|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="win7_32位旗舰版">win7 32位旗舰版</h1><p><a href="ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/" target="_blank" rel="external">下载地址</a></p>
<h1 id="win7_64位旗舰版">win7 64位旗舰版</h1><p><a href="ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/" target="_blank" rel="external">下载地址</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<h1 id="Windows_7_简体中文旗舰版_x86_(32位_MSDN_RTM正式版)">Windows 7 简体中文旗舰版 x86 (32位 MSDN RTM正式版)</h1><p><a href="ed2k://%7Cfile%7Ccn_windows_7_ultimate_with_sp1_x86_dvd_618763.iso%7C2651877376%7CD6A0D9FDB8C67A65B92B4C1AC197109C%7C/">下载地址</a></p>
<h1 id="Windows_7_Ultimate_(x64)-DVD(English)">Windows 7 Ultimate (x64)-DVD(English)</h1><p><a href="ed2k://|file|en_windows_7_ultimate_x64_dvd_X15-65922.iso|3224686592|6719AFC5486F38BE75F2DF39C8527113|/">下载地址</a></p>
<h1 id="Windows_7_Ultimate_N_(x64)-DVD(English)">Windows 7 Ultimate N (x64)-DVD(English)</h1><p><a href="ed2k://|file|en_windows_7_ultimate_n_x64_dvd_x16-13641.iso|2908555264|C014B86268602565B7880933B41F21AC|/">下载地址</a><br>]]>
    
    </summary>
    
      <category term="32位" scheme="http://tiandechi.com/tags/32%E4%BD%8D/"/>
    
      <category term="64位" scheme="http://tiandechi.com/tags/64%E4%BD%8D/"/>
    
      <category term="Downloads" scheme="http://tiandechi.com/tags/Downloads/"/>
    
      <category term="Win7" scheme="http://tiandechi.com/tags/Win7/"/>
    
      <category term="ed2k" scheme="http://tiandechi.com/tags/ed2k/"/>
    
      <category term="Windows" scheme="http://tiandechi.com/categories/Windows/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[regular expression tutorial in 30 minutes]]></title>
    <link href="http://tiandechi.com/2015/05/04/regular-expression-tutorial-in-30-minutes/"/>
    <id>http://tiandechi.com/2015/05/04/regular-expression-tutorial-in-30-minutes/</id>
    <published>2015-05-04T11:03:17.000Z</published>
    <updated>2015-05-04T03:07:54.000Z</updated>
    <content type="html"><![CDATA[<h1 id="本文目标">本文目标</h1><p>30分钟内让你明白正则表达式是什么，并对它有一些基本的了解，让你可以在自己的程序或网页里使用它。</p>
<h1 id="如何使用本教程">如何使用本教程</h1><p>别被下面那些复杂的表达式吓倒，只要跟着我一步一步来，你会发现正则表达式其实并没有想像中的那么困难。当然，如果你看完了这篇教程之后，发现自己明白了很多，却又几乎什么都记不得，那也是很正常的——我认为，没接触过正则表达式的人在看完这篇教程后，能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本的原理，以后你还需要多练习，多使用，才能熟练掌握正则表达式。<br>除了作为入门教程之外，本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说，这个目标还是完成得不错的——你看，我自己也没能把所有的东西记下来，不是吗？<br><a id="more"></a><br><strong>详情查看<a href="http://deerchao.net/tutorials/regex/regex.htm" target="_blank" rel="external">来源</a></strong></p>
<h1 id="正则表达式到底是什么东西？">正则表达式到底是什么东西？</h1><h1 id="入门">入门</h1><h1 id="测试正则表达式">测试正则表达式</h1><h1 id="元字符">元字符</h1><h1 id="字符转义">字符转义</h1><h1 id="重复">重复</h1><h1 id="字符类">字符类</h1><h1 id="分枝条件">分枝条件</h1><h1 id="反义">反义</h1><h1 id="分组">分组</h1><h1 id="后向引用">后向引用</h1><h1 id="零宽断言">零宽断言</h1><h1 id="负向零宽断言">负向零宽断言</h1><h1 id="注释">注释</h1><h1 id="贪婪与懒惰">贪婪与懒惰</h1><h1 id="处理选项">处理选项</h1><h1 id="平衡组/递归匹配">平衡组/递归匹配</h1><h1 id="还有些什么东西没提到">还有些什么东西没提到</h1><h1 id="联系作者">联系作者</h1><h1 id="网上的资源及本文参考文献">网上的资源及本文参考文献</h1><h1 id="更新纪录">更新纪录</h1>]]></content>
    <summary type="html">
    <![CDATA[<h1 id="本文目标">本文目标</h1><p>30分钟内让你明白正则表达式是什么，并对它有一些基本的了解，让你可以在自己的程序或网页里使用它。</p>
<h1 id="如何使用本教程">如何使用本教程</h1><p>别被下面那些复杂的表达式吓倒，只要跟着我一步一步来，你会发现正则表达式其实并没有想像中的那么困难。当然，如果你看完了这篇教程之后，发现自己明白了很多，却又几乎什么都记不得，那也是很正常的——我认为，没接触过正则表达式的人在看完这篇教程后，能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本的原理，以后你还需要多练习，多使用，才能熟练掌握正则表达式。<br>除了作为入门教程之外，本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说，这个目标还是完成得不错的——你看，我自己也没能把所有的东西记下来，不是吗？<br>]]>
    
    </summary>
    
      <category term="regular expression" scheme="http://tiandechi.com/tags/regular-expression/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
  <entry>
    <title><![CDATA[log in SSH with no password]]></title>
    <link href="http://tiandechi.com/2015/05/04/log-in-SSH-with-no-password/"/>
    <id>http://tiandechi.com/2015/05/04/log-in-SSH-with-no-password/</id>
    <published>2015-05-04T11:02:11.000Z</published>
    <updated>2015-05-04T03:08:58.000Z</updated>
    <content type="html"><![CDATA[<p>SSH无密码登录要使用公钥与私钥。Linux下可以用用ssh-keygen生成公钥/私钥对，下面我以CentOS为例。</p>
<p>有机器A(192.168.1.155)，B(192.168.1.181)。现想A通过ssh免密码登录到B。<br><a id="more"></a></p>
<h1 id="在A机下生成公钥/私钥对。">在A机下生成公钥/私钥对。</h1><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[linuxidc<span class="variable">@A</span> ~]<span class="variable">$ </span>ssh-keygen -t rsa -<span class="constant">P </span><span class="string">''</span></span><br></pre></td></tr></table></figure>
<p>-P表示密码，-P &#39;&#39; 就表示空密码，也可以不用-P参数，这样就要三车回车，用-P就一次回车。<br>它在/home/linuxidc下生成.ssh目录，.ssh下有id_rsa和id_rsa.pub。</p>
<h1 id="把A机下的id_rsa-pub复制到B机下，在B机的-ssh/authorized_keys文件里，我用scp复制。">把A机下的id_rsa.pub复制到B机下，在B机的.ssh/authorized_keys文件里，我用scp复制。</h1><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[linuxidc<span class="variable">@A</span> ~]<span class="variable">$ </span>scp .ssh/id_rsa.pub linuxidc<span class="variable">@192</span>.<span class="number">168.1</span>.<span class="number">181</span><span class="symbol">:/home/linuxidc/id_rsa</span>.pub </span><br><span class="line">linuxidc<span class="variable">@192</span>.<span class="number">168.1</span>.<span class="number">181</span><span class="string">'s password:</span><br><span class="line">id_rsa.pub 100% 223 0.2KB/s 00:00</span></span><br></pre></td></tr></table></figure>
<p>由于还没有免密码登录的，所以要输入密码。</p>
<h1 id="B机把从A机复制的id_rsa-pub添加到-ssh/authorzied_keys文件里。">B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。</h1><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[linuxidc<span class="variable">@B</span> ~]<span class="variable">$ </span>cat id_rsa.pub <span class="prompt">&gt;&gt; </span>.ssh/authorized_keys</span><br><span class="line">[linuxidc<span class="variable">@B</span> ~]<span class="variable">$ </span>chmod <span class="number">600</span> .ssh/authorized_keys</span><br></pre></td></tr></table></figure>
<p>authorized_keys的权限要是<strong>600</strong>。</p>
<h1 id="A机登录B机。">A机登录B机。</h1><figure class="highlight scheme"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="list">[<span class="keyword">linuxidc@A</span> ~]$ ssh <span class="number">192.168</span>.1.181</span><br><span class="line">The authenticity of host <span class="variable">'192.168.1.181</span> <span class="list">(<span class="keyword">192.168.1.181</span>)</span>' can<span class="variable">'t</span> be established.</span><br><span class="line">RSA key fingerprint is <span class="number">00</span>:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.</span><br><span class="line">Are you sure you want to continue connecting <span class="list">(<span class="keyword">yes/no</span>)</span>? yes</span><br><span class="line">Warning: Permanently added <span class="variable">'192.168.1.181</span>' <span class="list">(<span class="keyword">RSA</span>)</span> to the list of known hosts.</span><br><span class="line">Last login: Thu Jul <span class="number">3</span> <span class="number">09</span>:53:18 <span class="number">2008</span> from linuxidc</span><br><span class="line"><span class="list">[<span class="keyword">chenlb@B</span> ~]$</span></span></span><br></pre></td></tr></table></figure>
<p>第一次登录是时要你输入yes。</p>
<h1 id="现在A机可以无密码登录B机了。">现在A机可以无密码登录B机了。</h1><p>小结：登录的机子可有私钥，被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对，当然也可以用dsa(对应的文件是id_dsa，id_dsa.pub)</p>
<p>想让A，B机无密码互登录，那B机以上面同样的方式配置即可。</p>
<p><a href="http://www.linuxidc.com/Linux/2015-05/116908.htm" target="_blank" rel="external">来源</a></p>
]]></content>
    <summary type="html">
    <![CDATA[<p>SSH无密码登录要使用公钥与私钥。Linux下可以用用ssh-keygen生成公钥/私钥对，下面我以CentOS为例。</p>
<p>有机器A(192.168.1.155)，B(192.168.1.181)。现想A通过ssh免密码登录到B。<br>]]>
    
    </summary>
    
      <category term="SSH" scheme="http://tiandechi.com/tags/SSH/"/>
    
      <category term="Linux" scheme="http://tiandechi.com/categories/Linux/"/>
    
  </entry>
  
</feed>