博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

top高级用法

Posted on 2018-09-05 10:08  bw_0927  阅读(1751)  评论(0)    收藏  举报

 

 

op命令的TIME/TIME+是指的进程所使用的CPU时间,不是进程启动到现在的时间,因此,如果一个进程使用的cpu很少,那即使这个进程已经存在N长时间,TIME/TIME+也是很小的数值。

 

此外,如果你的系统有多个CPU,或者是多核CPU的话,那么,进程占用多个cpu的时间是累加的。
例如:257:14.655代表的时间是: 257分钟,14秒,0.655秒

 

 

 

看指定进程 top -p pid

看一批进程  top -p id1,id2,id3,id4

 

  • CPU的使用率有以下几个指标
Cpu(s): 
0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比

us + sy + ni + id = 100%

所以一般查看使用率的话,只要看100 - id的值就能得出当前的使用率

 

https://focusss.github.io/2019/02/10/Linux%E4%B8%ADbuff-cache%E5%8D%A0%E7%94%A8%E8%BF%87%E9%AB%98%E8%A7%A3%E5%86%B3%E6%89%8B%E6%AE%B5/

free -h

sar -r

top

显示的buff/cache

kbbuffers 内核缓冲区(buffer)使用的内存数量,单位为 KB
kbcached 内核高速缓存(cache)数据使用的内存数量,单位为 KB
  • buff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。根据磁盘的读写设计的,把分散的操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
  • cache(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache
    把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去硬盘了,若没有命中就读硬盘。

其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。

它们都是占用内存。两者都是RAM中的数据。简单来说,buff是即将要被入磁盘的,而cache是被从磁盘中出来的

    目前进程正在实际被使用的内存的计算方式为used-buff/cache,通过释放buff/cache内存后,我们还可以使用的内存量free+buff/cache。

通常我们在频繁存取文件后,会导致buff/cache的占用量增高

手动清除

# sync

# echo 1 > /proc/sys/vm/drop_caches
    • sync:将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件
    • echo 1 > /proc/sys/vm/drop_caches:清除page cache
    • echo 2 > /proc/sys/vm/drop_caches:清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
    • echo 3 > /proc/sys/vm/drop_caches:清除pagecache和slab分配器中的缓存对象。
      /proc/sys/vm/drop_caches的值,默认为0
    • 有时修改proc系统没用,就这样sysctl -w vm.drop_caches=3

 

  • 按指定列排序

P  按CPU排序

M  按mem排序

自定义列排序: 大写F或者大写的O, 不同的linux版本不一样

 

上下左右键选择你需要排序的列, s键触发排序

R键用于在正序和逆序直接切换

E和e 用于切换内存显示的单位

c  显示命令的全路径

 

(16)最重要的可以选择排序列; 小f 可以选择当前显示的列有哪些:

 

(2)top -b

以批处理的方式运行。也就是刷新界面不是原地刷新,而是作为历史记录上移,这样可以将历史top信息保存起来便于查看变化过程。

 

 

S        表示进程当前的状态。S 值有下面几种:
    D 不可中断的睡眠状态(uninterruptible sleep)
    I   idle 状态
    R 进程在 running 队列中,正在运行或准备运行(running)
    S 睡眠状态(sleeping)
    T 停止状态(stopped by job control signal)
    t  跟踪状态(stopped by debugger during trace)
    Z 僵尸状态(zombie)

 

top 命令是有配置文件的,也就是说你通过命令修改的配置都可以保存下来。保存配置的命令为大写字母 W。

在你修改了 top 命令的配置后按下大写字母 W,然后退出 top 命令并再次执行 top 命令,此时你的修改仍然在起作用。

 

 

更改界面刷新频率

  • 自动刷新 d

输入刷新时间(默认3秒,可调至0.5)

  • 手动刷新
    空格

屏幕滚动

一个屏幕显示不完
C
使用方向键滚动

可用在使用cV开启命令行及Forest view之后

显示不全,可以用R来排序显示头部或者尾部 


 

这里整理了几个优秀的top快捷键,一定会让你效率加倍。

1. 详细显示command

按下小写c : 详细显示command列

linux下TOP命令使用小技巧

就是这样的效果,启动命令显示的非常全

不仅是程序的完整路径,连启动程序的参数都显示出来了

2. 过滤

o : 过滤进程

按下o后,会让你输入过滤条件

linux下TOP命令使用小技巧

然后你可以输入,比如,我记得自己的进程有个core关键字

那就输入 COMMAND=core

回车

linux下TOP命令使用小技巧

现在就只剩下模糊匹配core关键字的进程了

注意 COMMAND一定要大写,要和top的标题栏对应

再比如,过滤显示cpu使用率大于3的

注意:先按下=号,删除之前的过滤条件

再按o,填写过滤条件:%CPU>2.0

linux下TOP命令使用小技巧

3. 只显示某个用户的进程

按下小写u,输入用户名

linux下TOP命令使用小技巧

回车,就只剩下devops用户的进程了

linux下TOP命令使用小技巧

4. 不要显示空闲进程

我们排查问题时,往往是想排查繁忙的进程,但是

打开top,会有下面一大堆的空闲进程显示着,有点干扰我们的视线。

linux下TOP命令使用小技巧

只要按下i

直接过滤掉空闲进程

linux下TOP命令使用小技巧

世界一下子清爽了。

 

5. 对某列进行排序

这也是个使用非常多的操作,比如对cpu或mem进行排序显示

  • 大写M : 对内存进行排序显示
  • 大写P:对cpu进行排序显示
  • 大写T:对运行时间进行排序显示
  • 大写N:对PID进行排序显示

以上排序,都是降序排列。想要反序的话,按下大写R

6. 再进一步,可以指定任意列进行排序

按下f

进入选择列的界面

选中某列,按下s确认。然后esc退出即可

linux下TOP命令使用小技巧

有个小问题是,默认界面上看不出来是按哪一列进行的排序

按下小写xb可以加粗高亮显示排序列

linux下TOP命令使用小技巧

 

 


 

htop命令更赞

 

  • htop常用功能键 

 

            F1 : 查看htop使用说明
            F2 : 设置
            F3 : 搜索进程
            F4 : 过滤器,按关键字搜索
            F5 : 显示树形结构
            F6 : 选择排序方式
            F7 : 减少nice值,这样就可以提高对应进程的优先级
            F8 : 增加nice值,这样可以降低对应进程的优先级
            F9 : 杀掉选中的进程
            F10 : 退出htop

            / : 搜索字符
            h : 显示帮助
            l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
            u :显示所有用户,并可以选择某一特定用户的进程
            s : 将调用strace追踪进程的系统调用
            t : 显示树形结构

            H :显示/隐藏用户线程
            I :倒转排序顺序
            K :显示/隐藏内核线程    
            M :按内存占用排序
            P :按CPU排序    
            T :按运行时间排序

            上下键或PgUP, PgDn : 移动选中进程
            左右键或Home, End : 移动列表    
            Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

按“F2”键,进入“Columns”,在“Available Columns”下添加PROCESSOR,按“F10”保存,每个进程当前使用的CPU ID将出现在CPU列中。