top命令

本文详细介绍了Linux系统中的top命令,包括其功能、选项和参数、按键操作以及输出结果的解读,特别关注了VIRT、RES和SHR这三个内存指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 top命令介绍

top命令是Linux系统中常用的性能分析工具,可以实时地查看系统的运行情况,比如内存、CPU、负载以及各个进程的资源占用情况。

1.1 选项和参数

    -d:后面接数字,代表进程界面更新的描述,默认5秒

    -b:批量的方式执行

    -n:与-b搭配,执行几次top的输出结果

    -p:可指定某个PID进行检测

1.2 按键命令

    P:按照CPU使用排序

    M:以Memory排序

    N:以PID排序

    T:进程使用时间排序

    r:基于某个PID新的nice值

1.3 输出结果

[root@host-192-168-30-156 tecs]# top -d 2
top - 14:13:30 up 11 days,  5:39,  4 users,  load average: 0.21, 0.26, 0.31
Tasks: 877 total,   1 running, 876 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.3 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st, 99.4 id_exact,  0.0 hi_exact,  0.0 irq_exact
KiB Mem : 39436160+total, 38492886+free,  7249556 used,  2183196 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 38524627+avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  7516 root      39  19       0      0      0 S   1.5  0.0   2611:24 kipmi0
112202 root      20   0  162928   3224   1616 R   1.0  0.0   0:00.16 top
 16326 root      20   0  191380   9560   3632 S   0.5  0.0 131:57.06 zxdvs_guard.py
     1 root      30  10   60804  13236   4200 S   0.5  0.0 265:51.96 systemd

第一行:表示当前时间14:13:30,开机11天5小时39分,以及登录系统的人数4个,系统在1,5,15分钟的平均任务负载是0.21, 0.26, 0.31(ps,一般来说Load Average的数值别超过这台机器的总核数)

第二行:代表目前进程的总数和各状态的数量

  • running(运行状态)

        当进程正在被cpu执行,或已经准备就绪随时可由调度程序执行.

  • sleeping(睡眠状态)

        当系统产生一个终断或者释放了进程正在等待的资源,可以唤醒进程转换到运行状态

  • stopped(终止状态)
  • zombie(僵死状态)

        进程已停止运行,但其父进程还没有询问其状态,不为0最好确认是哪个process

第三行:显示CPU的整体负载,多内核可以按下【1】切换成不同CPU的负载率

  • us:用户空间占用CPU时间的百分比(大部分进程都运行在用户态,通常都是希望用户空间CPU越高越好)
  • sy:内核空间占用CPU时间的百分比(Linux内核态占用的CPU时间,系统 CPU占用越高,表明系统某部分存在瓶颈。通常这个值越低越好)
  • ni:占用CPU时间的百分比(ni是nice的缩写,进程用户态的优先级,如果调整过优先级,那么展示的就是调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
  • id:空闲CPU占用率,等待进程运行
  • wa:等待输入输出的CPU时间百分比(wa表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈
  • hi:CPU硬中断时间百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
  • si:CPU软中断时间百分比(软中断是由程序发出的中断 )
  • st:被强制等待(involuntary wait)虚拟 CPU 的时间

第四、五行:目前物理内存与虚拟内存(Mem/Swap)情况,swap的使用量要尽量的少,如果用的很多,说明系统的物理内存不足

第六行:进程显示的具体状态

  • PID:进程id
  • USER:进程所有者
  • PR:进程的优先级,越小优先级越高
  • NI:nice值,负值表示高优先级,正值表示低优先级
  • VIRT:进程使用的虚拟内存,单位是kb
  • RES:进程使用的物理内存,单位kb
  • SHR:进程使用的共享内存,单位kb
  • S:进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
  • %CPU:进程占用的CPU使用率
  • %MEM:进程使用的物理内存和总内存的百分比
  • TIME+:进程使用的CPU时间总计,单位1/100秒
  • COMMAND:命令行

2 虚拟内存VIRT、物理内存RES、共享内存SHR

  • 虚拟内存VIRT

        1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;
        2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。

  • 物理内存RES

        1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
        2、包含其他进程的共享;
        3、如果申请10MB的内存,实际使用1MB,它只增长1MB;

  • 共享内存SHR

        1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
        2、包含其他进程的共享;
        3、如果申请10MB的内存,实际使用1MB,它只增长1MB;

上述三个值是从/proc/pid/statm文件中格式化读出来的,前三个值分别是VIRT、RES、SHR,单位是页,常见的是4kb。

以上部分内容转载自https://blog.youkuaiyun.com/weixin_40734030/article/details/125558689

 

### Linux top 命令使用说明 `top` 命令Linux 系统中用于实时监控系统资源使用情况的工具之一。它能够动态显示系统的关键运行指标,例如 CPU 使用率、内存占用、进程状态等信息[^1]。 以下是 `top` 命令的一些主要功能和使用方法: #### 1. 默认输出信息 执行 `top` 命令后,终端会显示一个动态更新的界面,包含以下几部分: - **第一行**:显示系统时间、运行时间、登录用户数以及系统的平均负载(Load Average)。 - **第二行**:显示当前运行的总进程数及按状态分类的进程数量。 - **第三行与第四行**:分别展示 CPU 的使用情况,包括用户态、系统态、空闲态等占比。 - **第五行与第六行**:显示物理内存和交换空间(Swap)的使用情况。 - **下方表格**:列出当前系统中所有进程的详细信息,包括 PID、用户、CPU 和内存占用率等[^1]。 #### 2. 常用快捷键 在 `top` 的交互模式下,可以通过以下快捷键进行操作: - `k`:杀死指定的进程。 - `r`:调整指定进程的优先级。 - `f`:进入字段管理界面,选择需要显示或隐藏的列。 - `M`:按内存使用率排序。 - `P`:按 CPU 使用率排序。 - `q`:退出 `top` 命令。 #### 3. 参数选项 `top` 命令支持一些参数选项,以满足不同的需求: ```bash top -b -n 1 > top_output.txt ``` 上述命令将以批处理模式运行一次,并将结果保存到文件中。其中: - `-b` 表示批处理模式,适用于脚本调用。 - `-n` 指定刷新次数[^1]。 #### 4. 替代工具 除了 `top`,还有其他更友好的工具可以替代它,例如 `htop` 和 `mpstat`: - `htop` 提供了更直观的界面,支持鼠标操作,并通过条形图显示每个 CPU 核心的负载情况。安装方式如下: ```bash sudo apt install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHEL ``` - `mpstat` 是一个多处理器统计工具,能够提供更详细的 CPU 使用报告[^2]。 #### 5. 进程状态与 `task_struct` 在 `top` 的输出中,每个进程的状态由 `task_struct` 结构体中的信息决定。`task_struct` 不仅保存了进程的退出码,还记录了一些统计信息,这对父进程获取子进程的退出状态非常重要。例如,在 Shell 中,变量 `$?` 就保存了最后一个退出的前台进程的退出码,通常被用作条件判断的依据[^3]。 ```python # 示例:检查 $? 变量 echo "Exit code of the last command: $?" ``` ### 注意事项 虽然 `top` 是一个强大的工具,但在高负载环境下可能会对系统性能产生一定影响。因此,在生产环境中,建议结合其他轻量级工具或日志分析手段来优化性能监控[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值