1)命令及参数基本用法:
<code>top</code> <code>-hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]</code>
<code>d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。</code>
<code>p 通过指定监控进程ID来仅仅监控某个进程的状态。</code>
<code>q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。</code>
<code>S 指定累计模式。</code>
<code>s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。</code>
<code>i 使top不显示任何闲置或者僵死进程。</code>
<code>c 显示整个命令行而不只是显示命令名。</code>
<code>-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。</code>
<code>-p :指定某些个 PID 来进行观察监测而已。</code>
<code>在 top 执行过程当中可以使用的按键指令:</code>
<code>? :显示在 top 当中可以输入的按键指令;</code>
<code>P :以 CPU 的使用资源排序显示;</code>
<code>M :以 Memory 的使用资源排序显示;</code>
<code>N :以 PID 来排序喔!</code>
<code>T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。</code>
<code>k :给予某个 PID 一个讯号 (signal)</code>
<code>r :给予某个 PID 重新制订一个 nice 值。</code>
1)top命令执行结果如图所示
2)top命令执行结果重要列的含义详解
top命令结果各列的含义如下:
<code>列名 含义</code>
<code>PID 进程id</code>
<code>PPID 父进程id</code>
<code>RUSER Realusername</code>
<code>UID 进程所有者的用户id</code>
<code>USER 进程所有者的用户名</code>
<code>GROUP 进程所有者的组名</code>
<code>TTY 启动进程的终端名。不是从终端启动的进程则显示为?</code>
<code>PR 优先级</code>
<code>NInice 值。负值表示高优先级,正值表示低优先级</code>
<code>P 最后使用的CPU,仅在多CPU环境下有意义</code>
<code>%CPU 上次更新到现在的CPU时间占用百分比</code>
<code>TIME 进程使用的CPU时间总计,单位秒</code>
<code>TIME+ 进程使用的CPU时间总计,单位1/100秒</code>
<code>%MEM 进程使用的物理内存百分比</code>
<code>VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES</code>
<code>SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。</code>
<code>RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA</code>
<code>CODE 可执行代码占用的物理内存大小,单位kb</code>
<code>DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb</code>
<code>SHR 共享内存大小,单位kb</code>
<code>nFLT 页面错误次数</code>
<code>nDRT 最后一次写入到现在,被修改过的页面数。</code>
<code>S 进程状态。</code>
<code>D= 不可中断的睡眠状态</code>
<code>R= 运行</code>
<code>S= 睡眠</code>
<code>T= 跟踪/停止</code>
<code>Z= 僵尸进程</code>
<code>COMMAND 命令名/命令行</code>
<code>WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名</code>
3)top命令执行结果按照某一列排序
更改显示内容
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
<code>[root@linux ~]# top -d 2</code>
<code>top - 18:30:36 up 30 days, 7 min, 1 user, load average: 0.42, 0.48, 0.45</code>
<code>Tasks: 163 total, 1 running, 161 sleeping, 1 stopped, 0 zombie</code>
<code>Cpu(s): 4.7% us, 4.0% sy, 6.3% ni, 82.5% id, 0.4% wa, 0.1% hi, 2.0% 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> </code>
<code>PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND</code>
<code>3981 apache 34 19 84012 11m 7352 S 17.3 1.2 0:00.09 httpd</code>
<code>1454 mysql 16 0 289m 40m 2228 S 3.8 4.0 115:01.32 mysqld</code>
<code>3985 dmtsai 15 0 2148 904 668 R 3.8 0.1 0:00.03 top</code>
<code>1 root 16 0 3552 552 472 S 0.0 0.1 0:08.90 init</code>
<code>2 root RT 0 0 0 0 S 0.0 0.0 0:52.76 migration/0</code>
<code>3 root 34 19 0 0 0 S 0.0 0.0 0:03.01 ksoftirqd/0</code>
<code>[root@linux ~]</code><code># top -b -n 2 > /tmp/top.txt</code>
<code>[root@linux ~]# top -d 2 -p 9999</code>
<code>top - 13:53:00 up 51 days, 2:27, 1 user, load average: 0.00, 0.00, 0.00</code>
<code>Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie</code>
<code>Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% 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>9999 root 16 0 5396 1544 1244 S 0.0 0.4 0:00.07 bash</code>
<code>top</code> <code>-H</code>
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
<code>top</code> <code>-H -p 2308</code>
示例5: top命令执行结果之后按数字键1显示各个CPU的核心命令
Linux下top命令中%CPU结果为什么比%us的结果高?
在Linux下怎样让top命令启动之后就按内存使用排序?
本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1982721