第三篇、top详解以及命令异常解决

1. 用途

显示linux进程信息

2. 视图参数含义

在这里插入图片描述
top视图分为两部分:操作系统资源概括信息和进程信息

  • 资源概括:
    1. 操作系统时间、登录用户、负载情况-top
      • 10:33:25: 操作系统当前时间
      • up xx days, HH:MM: 操作系统从开机以后运行的时间,运行多少天多少时多少分
      • users: 当前系统有三个用户登录在线
      • load average: 1s, 5s, 15s系统平均负载
    2. 运行的任务概览-Tasks
      • total: 系统当前的进程数
      • running: 当前正在运行的进程数
      • sleeping 当前睡眠中的进程数
    3. CPU概览: %Cpu(s) 表示CPU使用百分比,按照时间占用计算,单位s
      • us: 用户空间占用CPU时间百分比,如果是多核,这个数值表示占用的平均百分比,可以按1进行多核统计和平均统计切换
      • sy: 内核空间占用CPU时间百分比,如果是多核,同上
      • ni 用户进程空间内改变过优先级的进程占用CPU时间百分比
      • id: 空闲时间占用CPU百分比
      • wa: 等待输入输出的CPU时间百分比
      • hi: CPU服务于硬件中断的CPU时间百分比
      • si: CPU服务于软件中断的CPU时间百分比
      • 注:时间占用百分比=该种类型操作消耗CPU时间/top刷新间隔时间。top 3s刷新一次,用户空间进程在这3s内使用了CPU 1.5s,那么us等于50%=1.5s/3s
    4. 内存概览:单位KiB
      • total: 内存总量
      • free: 剩余的内存数量
      • used: 内存使用数量
      • buff/cache: 用于缓冲的内存数量
    5. 交换区概览:单位KiB
      • total: 交换区总量
      • free: 空闲的交换区数量
      • used: 使用的交换区数量
  • 进程概括
    进程概况的统计从多维度参数进行展示的,其中最重要的参数:
    列名解释
    PID进程ID,唯一标识
    USER进程所属用户
    PR进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
    NI进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
    VIRTvirtual memory usage,虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RESresident memory usage 常驻内存,驻留内存大小。RES=CODE+DATA
    SHRSHR:shared memory 共享内存
    S这个是进程的状态
    %CPU自上一次top刷新该进程占用CPU的时间百分比
    %MEM进程消耗内存百分比
    TIME+自进程开始以来,消耗CPU时间,单位1/100秒
    1. VIRT virtual memory usage,虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
      • 进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
      • 假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
    2. RES resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
      • 进程当前使用的内存大小,但不包括swap out
      • 包含其他进程的共享
      • 如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
      • 关于库占用内存的情况,它只统计加载的库文件所占内存大小
    3. SHR shared memory 共享内存
      • 除了自身进程的共享内存,也包括其他进程的共享内存
      • 虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
      • 计算某个进程所占的物理内存大小公式:RES – SHR
      • swap out后,它将会降下来
    4. S 这个是进程的状态。它有以下不同的值:
      • D - 不可中断的睡眠态。
      • R- – 运行态
      • S – 睡眠态
      • T – 被跟踪或已停止
      • Z – 僵尸态
3. 交互

交互命令:在执行top命令的视图中,执行特定命令与结果视图进行交互

  1. 全局

    • Enter/space: 刷新视图
    • h: 帮助信息,查询各个交互式命令的含义
    • 0: 是否展示在进程区域中的0值,比如%CPU是0的将全部隐藏
    • A: 在全屏模式和多窗口选择模式之间切换
    • d: 设置刷新的时间间隔
    • E: 切换内存和交换区单位
    • H: 开启/关闭线程模式,以线程的方式展示
    • k: kill掉指定进程或者线程
    • Z: 改变颜色配置
    • q: 退出
  2. 概要区域

    • 1: 显示CPU平均状态/分开显示各个逻辑CPU状态
    • m: 切换显示内存统计的数据
  3. 进程区域

    • x: 切换高亮行的排序位置
    • z: 切换颜色
    • b: 块状标记高亮行
    • c: 切换显示命令/程序名和参数
    • f: 显示field管理,可增加或者移除显示字段,按相应的字母新增或去除;
    • u: 按照指定用户显示进程
    • i: 显示所有进程或者活跃的进程
    • n: 设置显示的进程数
4. 命令参数
-h | -v: 显示帮助或者版本信息】  
-c: 命令行列显示程序名以及参数  
-d: 启动时设置刷新时间间隔
-H: 设置线程模式
-i: 只显示活跃进程
-n: 显示指定数量的进程
-p: 显示指定PID的进程
-u: 显示指定用户的进程
5. 使用场景

当服务器中某个JAVA服务进程内存或者CPU资源消耗非常严重时,可以使用:

top -H -p pid 查看其所有活跃的线程资源消耗情况
6. 命令异常处理
  1. 问题:通过其他程序或脚本在非交互式模式下调用top命令会报 top: failed tty get
    原因:top是交互式命令,通过其他程序或脚本在非交互式模式下调用top命令会造成这样
    解决:使用top -b
  2. 问题:top在脚本中执行会卡住
    原因:top是交互式命令,所以在脚本中执行会卡住,不执行下一个命令
    解决:top -n 1

综合可以使用 top -bn 1

  1. 问题:在脚本中使用top时,会报TERM environment variable not set.
    原因:在linux下面使用top需要指定终端类型,也就是TERM的环境变量
    解决:在脚本中加入 export TERM=linux
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值