来源《鸟哥的linux私房菜》
top:动态观察程序的变化
<code>[root</code><code>@linux</code> <code>~]</code><code># top [-d] | top [-bnp]</code>
<code>参数:</code>
<code>-d :后面可以接秒数,就是整个程序画面更新的秒数。预设是</code><code>5</code> <code>秒;</code>
<code>-b :以批次的方式执行 top ,还有更多的参数可以使用喔!</code>
<code>通常会搭配数据流重导向来将批次的结果输出成为档案。</code>
<code>-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。</code>
<code>-p :指定某些个</code><code>PID</code> <code>来进行观察监测而已。</code>
<code>在 top 执行过程当中可以使用的按键指令:</code>
<code>? :显示在 top 当中可以输入的按键指令;</code>
<code>P</code> <code>:以</code><code>CPU</code> <code>的使用资源排序显示;</code>
<code>M</code> <code>:以 Memory 的使用资源排序显示;</code>
<code>N</code> <code>:以</code><code>PID</code> <code>来排序喔!</code>
<code>T</code> <code>:由该 Process 使用的</code><code>CPU</code> <code>时间累积 (</code><code>TIME</code><code>+) 排序。</code>
<code>k :给予某个</code><code>PID</code> <code>一个讯号 (signal)</code>
<code>r :给予某个</code><code>PID</code> <code>重新制订一个 nice 值。</code>
范例1:每两秒钟更新一次 top ,观察整体信息
<code>[root</code><code>@linux</code> <code>~]</code><code># top -d 2</code>
<code>top -</code><code>18</code><code>:</code><code>30</code><code>:</code><code>36</code> <code>up</code><code>30</code> <code>days,</code><code>7</code> <code>min,</code><code>1</code> <code>user, load average:</code><code>0</code><code>.</code><code>42</code><code>,</code><code>0</code><code>.</code><code>48</code><code>,</code><code>0</code><code>.</code><code>45</code>
<code>Tasks:</code><code>163</code> <code>total,</code><code>1</code> <code>running,</code><code>161</code> <code>sleeping,</code><code>1</code> <code>stopped,</code><code>0</code> <code>zombie</code>
<code>Cpu(s):</code><code>4</code><code>.</code><code>7</code><code>% us,</code><code>4</code><code>.</code><code>0</code><code>% sy,</code><code>6</code><code>.</code><code>3</code><code>% ni,</code><code>82</code><code>.</code><code>5</code><code>% id,</code><code>0</code><code>.</code><code>4</code><code>% wa,</code><code>0</code><code>.</code><code>1</code><code>% hi,</code><code>2</code><code>.</code><code>0</code><code>% si</code>
<code>Mem: 1033592k total, 955252k used, 78340k free, 208648k buffers</code>
<code>Swap: 1052216k total, 728k used, 1051488k free, 360248k cached</code>
<code><==如果加入 k 或 r 时,就会有相关的字样出现在这里喔!</code>
<code>PID</code> <code>USER</code> <code>PR</code> <code>NI</code> <code>VIRT</code> <code>RES</code> <code>SHR</code> <code>S</code> <code>%</code><code>CPU</code> <code>%</code><code>MEM</code> <code>TIME</code><code>+</code><code>COMMAND</code>
<code>3981</code> <code>apache</code><code>34</code> <code>19</code> <code>84012</code> <code>11m</code><code>7352</code> <code>S</code> <code>17</code><code>.</code><code>3</code> <code>1</code><code>.</code><code>2</code> <code>0</code><code>:</code><code>00</code><code>.</code><code>09</code> <code>httpd</code>
<code>1454</code> <code>mysql</code><code>16</code> <code>0</code> <code>289m 40m</code><code>2228</code> <code>S</code> <code>3</code><code>.</code><code>8</code> <code>4</code><code>.</code><code>0</code> <code>115</code><code>:</code><code>01</code><code>.</code><code>32</code> <code>mysqld</code>
<code>3985</code> <code>dmtsai</code><code>15</code> <code>0</code> <code>2148</code> <code>904</code> <code>668</code> <code>R</code> <code>3</code><code>.</code><code>8</code> <code>0</code><code>.</code><code>1</code> <code>0</code><code>:</code><code>00</code><code>.</code><code>03</code> <code>top</code>
<code>1</code> <code>root</code><code>16</code> <code>0</code> <code>3552</code> <code>552</code> <code>472</code> <code>S</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>.</code><code>1</code> <code>0</code><code>:</code><code>08</code><code>.</code><code>90</code> <code>init</code>
<code>2</code> <code>root</code><code>RT</code> <code>0</code> <code>0</code> <code>0</code> <code>0</code> <code>S</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>:</code><code>52</code><code>.</code><code>76</code> <code>migration/</code><code>0</code>
<code>3</code> <code>root</code><code>34</code> <code>19</code> <code>0</code> <code>0</code> <code>0</code> <code>S</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>:</code><code>03</code><code>.</code><code>01</code> <code>ksoftirqd/</code><code>0</code>
范例2:将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt
<code>[root</code><code>@linux</code> <code>~]</code><code># top -b -n 2 > /tmp/top.txt</code>
<code># 这样一来,嘿嘿!就可以将 top 的信息存到 /tmp/top.txt 档案中了。</code>
范例3:假设 10604 是一个已经存在的 PID ,仅观察该程序?
<code>[root</code><code>@linux</code> <code>~]</code><code># top -d 2 -p10604</code>
<code>top -</code><code>13</code><code>:</code><code>53</code><code>:</code><code>00</code> <code>up</code><code>51</code> <code>days,</code><code>2</code><code>:</code><code>27</code><code>,</code><code>1</code> <code>user, load average:</code><code>0</code><code>.</code><code>00</code><code>,</code><code>0</code><code>.</code><code>00</code><code>,</code><code>0</code><code>.</code><code>00</code>
<code>Tasks:</code><code>1</code> <code>total,</code><code>0</code> <code>running,</code><code>1</code> <code>sleeping,</code><code>0</code> <code>stopped,</code><code>0</code> <code>zombie</code>
<code>Cpu(s):</code><code>0</code><code>.</code><code>0</code><code>% us,</code><code>0</code><code>.</code><code>0</code><code>% sy,</code><code>0</code><code>.</code><code>0</code><code>% ni,</code><code>100</code><code>.</code><code>0</code><code>% id,</code><code>0</code><code>.</code><code>0</code><code>% wa,</code><code>0</code><code>.</code><code>0</code><code>% hi,</code><code>0</code><code>.</code><code>0</code><code>% si</code>
<code>Mem: 385676k total, 371760k used, 13916k free, 131164k buffers</code>
<code>Swap: 1020116k total, 880k used, 1019236k free, 95772k cached</code>
<code>10604</code> <code>root</code><code>16</code> <code>0</code> <code>5396</code> <code>1544</code> <code>1244</code> <code>S</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>.</code><code>4</code> <code>0</code><code>:</code><code>00</code><code>.</code><code>07</code> <code>bash</code>
范例四:承上题,上面的 NI 值是 0 ,想要改成 10 的话?
<code># 在范例三的 top 画面当中直接按下 r 之后,会出现如下的图样!</code>
<code>PID</code> <code>to renice:</code><code>10604</code>
<code># 之后,可以输入 nice 值了!</code>
<code>Renice</code><code>PID</code> <code>10604</code> <code>to value:</code><code>10</code>
<code>10604</code> <code>root</code><code>30</code> <code>10</code> <code>5396</code> <code>1544</code> <code>1244</code> <code>S</code> <code>0</code><code>.</code><code>0</code> <code>0</code><code>.</code><code>4</code> <code>0</code><code>:</code><code>00</code><code>.</code><code>07</code> <code>bash</code>
<code>top 也是个挺不错的程序观察工具!但不同于 ps 是静态的结果输出, top 这个程序可以持续的监测 (monitor) 整个系统的程序工作状态,例如上面的范例一所示啊! 在预设的情况下,每次更新程序资源的时间为 </code><code>5</code> <code>秒,不过,可以使用 -d 来进行修改。 top 主要分为两个画面,上面的画面为整个系统的资源使用状态,基本上总共有六行, 显示的内容依序是:</code>
<code>• 第一行:显示系统已启动的时间、目前上线人数、系统整体的负载(load)。 比较需要注意的是系统的负载,三个数据分别代表</code><code>1</code><code>, </code><code>5</code><code>, </code><code>10</code> <code>分钟的平均负载。 一般来说,这个负载值应该不太可能超过 </code><code>1</code> <code>才对,除非您的系统很忙碌。 如果持续高于 </code><code>5</code> <code>的话,那么.....仔细的看看到底是那个程序在影响整体系统吧!</code>
<code>• 第二行:显示的是目前的观察程序数量,比较需要注意的是最后的 zombie 那个数值,如果不是 </code><code>0</code> <code>,嘿嘿!好好看看到底是那个 process 变成疆尸了吧?!</code>
<code>• 第三行:显示的是 </code><code>CPU</code> <code>的整体负载,每个项目可使用 ? 查阅。需要观察的是 id (idle) 的数值,一般来说,他应该要接近</code><code>100</code><code>% 才好,表示系统很少资源被使用啊! ^</code><code>_</code><code>^。</code>
<code>• 第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。</code>
<code>• 第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。 例如范例四就是一个简单的使用例子。</code>
<code>至于 top 底下的画面,则是每个 process 使用的资源情况。比较需要注意的是:</code>
<code>• </code><code>PID</code> <code>:每个 process 的 </code><code>ID</code> <code>啦!</code>
<code>• </code><code>USER</code><code>:该 process 所属的使用者;</code>
<code>• </code><code>PR</code> <code>:Priority 的简写,程序的优先执行顺序,越小越早被执行;</code>
<code>• </code><code>NI</code> <code>:Nice 的简写,与 Priority 有关,也是越小越早被执行;</code>
<code>• %</code><code>CPU</code><code>:</code><code>CPU</code> <code>的使用率;</code>
<code>• %</code><code>MEM</code><code>:内存的使用率;</code>
<code>• </code><code>TIME</code><code>+:</code><code>CPU</code> <code>使用时间的累加;</code>
<code>一般来说,如果鸟哥想要找出最损耗 </code><code>CPU</code> <code>资源的那个程序时,大多使用的就是 top 这支程序啦!然后强制以 </code><code>CPU</code> <code>使用资源来排序 (在 top 当中按下 </code><code>P</code> <code>即可), 就可以很快的知道啦! ^</code><code>_</code><code>^。多多爱用这个好用的东西喔!</code>
本文转自二郎三郎博客园博客,原文链接:http://www.cnblogs.com/haore147/p/4057081.html,如需转载请自行联系原作者