当前位置: 首页 > news >正文

top终端详解

1.top命令行使用
2.top每行意义
3.补充

1.top命令行使用

top命令是一个常用的Linux系统命令,用于实时查看系统的运行状态和进程信息。下面是top命令的几个常用参数的含义:

-d seconds:设置top命令的更新间隔时间,单位是秒。默认是3秒。
-n iterations:设置top命令的运行次数,也就是显示几次系统的运行状态和进程信息后退出。默认是无限循环。
-p pid:显示指定进程ID的信息。
-U username:只显示指定用户名的进程信息。
-u username:只显示指定用户名的进程信息,同时显示详细的CPU使用情况。
-H:显示进程树,即每个进程的子进程信息。
-i:不显示闲置进程,只显示正在运行的进程信息。
-c:显示完整的进程命令行信息。
-M:按照内存使用量进行排序。
-k:以KB为单位显示内存使用情况。
-b:以批处理模式运行top

2.top每行意义

top命令在终端中的前5行展示了系统的一些概要信息,具体包括:
第一行展示了当前时间,系统已经运行的时间,登录用户的数量以及系统的平均负载情况。平均负载是指一段时间内系统处于运行状态的进程数量的平均值,如果平均负载高于CPU核心数量的70%以上,那么就表示系统处于高负载状态。
第二行展示了CPU的使用情况,包括CPU的总体使用率和各个CPU核心的使用情况。
第三行展示了物理内存的使用情况,包括总内存大小、已使用的内存、空闲的内存以及缓存和缓冲区使用的内存大小。
第四行展示了交换分区(Swap)的使用情况,包括总大小、已使用的交换分区、空闲的交换分区以及交换分区被使用的比例。
第五行展示了系统的任务队列情况,包括正在运行的进程数量、等待CPU时间片的进程数量以及处于休眠状态的进程数量。
第五行具体字节意义:

PID:进程的ID号。
USER:进程的所有者。
PR:进程的优先级。
NI:进程的优先级nice值。
VIRT:进程使用的虚拟内存大小。
RES:进程使用的物理内存大小。
SHR:进程使用的共享内存大小。
S:进程的状态(R表示运行,S表示睡眠,Z表示僵尸进程)。
%CPU:进程使用CPU的百分比。
%MEM:进程使用物理内存的百分比。
TIME+:进程使用的CPU时间。
COMMAND:进程的命令行。

除了以上列出的参数之外,top命令的交互界面中还可以使用各种快捷键来执行不同的操作,如按下k可以杀死指定的进程,按下H可以显示进程的树形结构等等。在top命令的交互界面中,按下h可以查看所有可用的快捷键和其功能。
第三行具体字节意义:

展示了物理内存的使用情况,包括total(总内存大小)、used(已使用的内存大小)、free(空闲的内存大小)、shared(被共享的内存大小)、buffers(被缓冲的内存大小)以及cached(被缓存的内存大小)。这些数值的单位通常是以KiB(千字节)为基础单位,因此需要将数值转换为更常用的单位(如GB)时,需要进行单位转换。
以7700 total为例,它表示系统的总内存大小为7700 KiB,将其转换为GB,可以使用以下公式: 7700 KiB ÷ 1024 =
7.52 GB(保留两位小数) 因此,7700 total表示系统的总内存大小为7.52 GB。类似地,对于其他的内存使用情况参数,也需要进行单位转换才能更好地理解和分析系统的内存使用情况。

在top命令第三行中,used、buffers和cached分别表示已使用的内存大小、被缓冲的内存大小和被缓存的内存大小。它们之间的区别如下:

used:表示系统当前正在使用的内存大小,包括被进程占用的内存、被内核占用的内存以及其他系统组件占用的内存。
buffers:表示被缓冲的内存大小,包括文件系统缓存和磁盘I/O缓存等。缓存是为了提高系统性能而设置的一种机制,它可以减少磁盘I/O操作的次数,从而加快文件读写的速度。
cached:也表示被缓存的内存大小,包括页面缓存和目录缓存等。页面缓存是为了加速文件读取而设置的一种机制,它将经常读取的文件数据缓存在内存中,从而加快文件读取的速度;目录缓存则是为了加速目录操作而设置的一种机制,它将文件系统中的目录项缓存在内存中,从而加快目录操作的速度。
而buffers和cached之间的区别在于缓存的内容不同,buffers主要缓存的是磁盘I/O操作所涉及到的数据块,而cached主要缓存的是经常读取的文件数据和目录项等。

可以将buffers/cached理解为被占用的内存,但是它们并不属于正在使用的内存(即used),因为它们可以随时被释放以供其他进程使用。当系统需要更多的内存时,它们就会被操作系统回收,从而让更多的内存可用于进程使用。因此,在评估系统的内存使用情况时,需要综合考虑used、buffers和cached等参数。

3.补充:

在终端中输入 “top” 命令,然后按 “Shift + h” 键可以查看所有线程的信息。
你可以在线程名前加一个 “grep” 命令来过滤线程信息,例如:

top -H | grep MyThread
std::thread t(thread_func);pthread_setname_np(t.native_handle(), "MyThread");
http://www.lryc.cn/news/40754.html

相关文章:

  • 解决一个偶现的503 bug,花了俺不少时间
  • 什么是栈,如何实现?
  • 在我的MacBook上捣鼓ESP8266
  • 【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码
  • 77.qt qml-QianWindow-V1版本界面讲解
  • RHCE学习日记二
  • Dubbo原理简介
  • JavaSE基础总结
  • 5G(NR)信道带宽和发射带宽---频率资源
  • 基于Spring Boot的酒店管理系统
  • Ae:混合模式
  • JS中的变量
  • Hadoop运行模块
  • Web自动化——前端基础知识(二)
  • NAS系列 硬件组装
  • IDAFrida
  • 通过百度文心一言大模型作画尝鲜,感受国产ChatGPT的“狂飙”
  • Nacos 注册中心 - 健康检查机制源码
  • Transformer在计算机视觉中的应用-VIT、TNT模型
  • 快速入门Zookeeper技术.黑马教程
  • 网易C++实习一面
  • 进程和线程的区别和联系
  • Java学习笔记——集合
  • 差分运放公式推导-运算放大器
  • 金丹二层 —— 字符串长度求解的四种方法
  • 深入剖析Linux——进程信号
  • API-Server的监听器Controller的List分页失效
  • jupyter notebook 进阶使用:nbextensions,终极避坑
  • C 语言编程 — Doxygen + Graphviz 静态项目分析
  • Mybatis报BindingException:Invalid bound statement (not found)异常