Linux命令:top命令

1 top命令

1.1 简介

top命令是Linux下常用的性能分析工具,top程序提供了一个运行系统的动态实时视图。它可以显示系统摘要信息,以及当前由Linux内核管理的进程或线程的列表。所显示的系统摘要信息的类型以及进程信息的类型、顺序和大小都是用户可配置的,并且该配置可以在重启后保持不变。

1.2 说明

使用:top -hv | -bcEeHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols]

1、操作

第一次使用top命令时,会出现三个区域:摘要区域、字段/列标题、任务区域;在摘要区域和列标题之间空白行为输入区域。
在这里插入图片描述
有两个重要的操作键:h和?(两个都是用于显示帮助信息,如下:),按q退出帮助页面
在这里插入图片描述

在top输出中,几个常用的快捷键:

  • ^z:暂停top
  • fg:恢复top
  • Up 调用旧的字符串进行重新编辑
  • Down 调用新的字符串或删除整行
  • Insert 切换插入和覆盖模式
  • Delete 删除光标处的字符,其他字符向左移动
  • Home 跳转到输入行的开头
  • End 跳转到输入行的末尾

2、命令行选项

命令行选项:

  • -b:以批处理模式,非交互式
  • -c:显示完整的命令行,而不仅仅是命令名。
  • -C:在累积模式下运行,用于报告过去一段时间内的CPU使用情况。
  • -d:指定每两次屏幕信息刷新之间的时间间隔。也可以使用s交互命令来改变这个值
  • -e:强制任务内存缩放为:-e k | m | g | t | p
  • -E k | m | g | t | p | e:强制摘要区域内存缩放
  • -i:指定 top 忽略闲置或僵死进程
  • -n number:指定 top 程序重复刷新的次数。
  • -o fieldname:任务区域,按照指定字段排序
  • -p:只输出指定pid的信息,如:top -pN1 -pN2,或 top -pN1,N2,N3
  • -u | -U:仅显示指定用户的相关输出。如:top -u root

3、交互式命令

交互式命令,也就是说在top输入区可以输入的命令:

  • 全局命令:
    • h | ? 帮助命令

    • = 退出显示限制

    • A 用于在全屏模式和交替显示模式之间切换。全屏模式下,top 会显示所有可用的窗口和字段。而在交替显示模式下,top 会根据用户的配置显示特定的窗口和字段组(A的执行效果如下:)
      在这里插入图片描述

    • d | s 修改刷新间隔,和 -d 参数类似

    • E 切换摘要区内存数值单位

    • e 切换任务区内存数值单位

    • H 线程模式

    • k 终止线程

    • q 退出

    • W 写入配置文件

    • X 设置输出列宽

  • 针对摘要区命令:
    • m 影响内存和swap
      • 按内存类型划分的详细百分比
      • 缩略的已使用百分比/总可用量 + 条形图
      • 缩略的已使用百分比/总可用量 + 块图
      • 关闭内存显示
  • 针对任务区命令:
    • J 数字对齐
    • j 列右对齐
    • x 突出显示用于排序的列
    • y 突出显示正在运行的任务
    • c 显示command列的详细命令
    • f|F 显示或隐藏某些信息
    • u 仅显示特定用户
    • V 显示进程树
    • M 按%MEM排序
    • N 按照PID排序
    • P 按照%CPU排序
    • T 按照TIME+排序
    • R 反转/正常排序字段切换

1.3 案例

1、首次使用top命令

top
###
top - 06:27:35 up 10:37,  4 users,  load average: 0.56, 0.49, 0.46
Tasks: 237 total,   2 running, 235 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.7 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :   2933.3 total,    101.6 free,   1934.8 used,    896.9 buff/cache
MiB Swap:   2946.0 total,   2569.4 free,    376.6 used.    821.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   6154 root      20   0       0      0      0 I   2.0   0.0   0:00.17 kworker+
   1480 200       20   0 5622240   1.5g   8392 S   0.7  52.5  11:54.52 java
    828 root      20   0  315144   7516   6020 S   0.3   0.3   1:27.55 vmtoolsd
   6140 root      20   0       0      0      0 I   0.3   0.0   0:00.79 kworker+
   6155 root      20   0       0      0      0 I   0.3   0.0   0:00.52 kworker+
   6167 root      20   0   10920   4240   3412 R   0.3   0.1   0:00.03 top

输出内容解释:

  • 第一行输出:(与uptime执行结果相同)
    • 06:27:35 当前时间
    • up 10:37 系统运行时间
    • 4 users 当前登录用户数
    • load average: 0.56, 0.49, 0.46 系统负载(任务队列的平均长度),分别是1分钟、5分钟、15分钟到现在的平均值(正常情况下,系统负载应该在 0.7*n 以下(n 为 CPU 核心数)
  • 第二行输出:进程信息:
    • Tasks: 237 total 进程总数
    • 2 running 正在运行的进程数
    • 235 sleeping 睡眠进行
    • 0 stopped 停止的进程
    • 0 zombie 僵尸进程
  • 第三行输出:CPU信息
    • 0.0 us user,非nice(优先级未调整)用户进程运行的时间。这是CPU在用户模式下花费的时间,执行用户空间的代码。
    • 0.7 sy system,内核进程运行的时间。这是CPU在内核模式下花费的时间,执行内核空间的代码,如系统调用、设备驱动程序等。
    • 0.0 ni nice(优先级调整)用户进程运行的时间。这是那些通过nice命令或setpriority系统调用降低了优先级的用户进程所使用的CPU时间。
    • 99.2 id idle,内核空闲处理程序花费的时间。这是CPU没有执行任何任务时的空闲时间
    • 0.0 wa IO-wait:等待I/O操作完成的时间。这是CPU等待输入/输出操作(如磁盘读写)完成的时间。如果这个数字很高,通常意味着系统正受到I/O瓶颈的限制。
    • 0.0 hi 服务硬件中断的时间。这是CPU处理硬件中断(如定时器中断、设备中断等)所花费的时间。
    • 0.2 si 服务软件中断的时间。这是CPU处理软件中断(如内核线程之间的通信)所花费的时间。
    • 0.0 st 提供给虚拟化环境执行占CPU时间百分比
  • 第四行输出:物理内存MiB Mem
    • 2933.3 total 物理内存总量
    • 101.6 free 使用的物理内存总量
    • 1934.8 used 空闲内存总量
    • 896.9 buff/cache 用作内核缓存的内存量
  • 第五行输出:虚拟内存 MiB Swap
    • 2946.0 total:交换区总容量
    • 2569.4 free:使用交换区的总量
    • 376.6 used:空闲交换区总量
    • 821.4 avail Mem:缓冲交换区总量
  • 第六行:空白行,是输入区域
  • 第七行之后为任务区,也就是实际运行的服务,第七行是标题行
    • PID 进程ID
    • PPID 父进程ID
    • UID 进程所有者用户ID
    • USER 进程所有者用户
    • PR 进程任务优先级
    • NI nice值,负数表示高优先级,正数表示低优先级
    • VIRT 进程使用虚拟内存总量(以KB为单位) VIRT=SWAP+RES
    • RES 任务当前正在使用的非交换物理内存
    • SHR 共享内存总大小
    • S 进程状态
    • D 不可中断的睡眠
    • I 空闲进程
    • R 正在运行
    • S 睡眠状态
    • T 停止状态
    • t 在跟踪过程中被停止
    • Z 僵尸进程
    • %CPU 上次更新到现在的 CPU占用百分比
    • %MEM 进程使用物理内存百分比
    • TIME+ 进程使用的CPU时间总计(以1/100秒为单位)
    • COMMAND 命令名/命令行

2、其他使用

# 设置刷新间隔(默认单位是s)
top -d 2

# 显示完整命令行
top -c

# 显示特定进程
top -p PID

# 显示特定用户


top -u ubuntu

# 显示刷新几次后退出
top -n 2

# 批处理模式,无交互
top -b

总结

top命令是一个常用命令,尤其是在排查内存等问题时很有用,需要多练习提高熟练度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值