1.top命令行使用
2.top每行意义
3.补充
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
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等参数。
在终端中输入 “top” 命令,然后按 “Shift + h” 键可以查看所有线程的信息。
你可以在线程名前加一个 “grep” 命令来过滤线程信息,例如:
top -H | grep MyThread
std::thread t(thread_func);pthread_setname_np(t.native_handle(), "MyThread");
上一篇:使用PID进行恒温控制