top命令
简介
top命令能够实时地对CPU的状态进行监视,可以按CPU使用、内存使用和执行时间对任务进行排序。用户可以通过按键来实时刷新当前的状态。
显示含义
1 | top - 15:10:45 up 318 days, 19:44, 1 user, load average: 0.00, 0.02, 0.05 |
上面这部分内容代表了系统的整体运行情况。
- 第一行是任务队列信息,同uptime命令的执行结果一致。
1 | 15:10:45 #当前时间 |
- 第二、三行代表进程和CPU的信息。
1 | Tasks: |
当us值过高时,表示运行的应用消耗大量的CPU。java应用造成us高的原因主要是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞、循环、正则或纯粹的计算等任务造成的;另外一个可能也会造成us高的原因是频繁GC。
当sy值高时,表示linux花费了更多的时间在进行java线程切换。java应用造成这种现象的主要原因是启动的线程比较多,且这些线程多数处于不断的阻塞(例如锁等待,IO等待状态)和执行状态的变化过程中,这就导致了操作系统要不断地切换执行的线程,产生大量的线程上下文切换。
- 第四、五行为内存和交换区(类似于windows的虚拟内存,Linux才有的概念)信息
1 | KiB Mem : |
对于buff/cache的占用过高的解决可以看下Linux中buff-cache占用过高解决手段
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。下面是他们的含义
1 | PID #进程ID |
命令使用格式
1 | top [-] [d] [p] [q] [c] [C] [S] [s] [n] |
参数说明
- d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
- p 通过指定监控进程ID来仅仅监控某个进程的状态。
- q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
- S 指定累计模式
- s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
- i 使top不显示任何闲置或者僵死进程。
- c 显示整个命令行而不只是显示命令名
常用操作
1 | top //每隔5秒显式所有进程的资源占用情况 |
交互命令
在输入完top命令,可以直接键入以下命令,动态显示结果。如果在命令中使用了s选项,其中一些命令可能会被屏蔽。
- h 显示帮助画面,给出一些简短的命令总结说明
- k 终止一个进程。
- i 忽略闲置和僵死进程。这是一个开关式命令。
- q 退出程序
- r 重新安排一个进程的优先级别
- S 切换到累计模式
- s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5 s
- f或者F 从当前显示中添加或者删除项目
- o或者O 改变显示项目的顺序
- l 切换显示平均负载和启动时间信息
- m 切换显示内存信息
- t 切换显示进程和CPU状态信息
- c 切换显示命令名称和完整命令行
- M 根据驻留内存大小进行排序
- P 根据CPU使用百分比大小进行排序
- T 根据时间/累计时间进行排序
- W 将当前设置写入
~/.
toprc文件中