top命令

anonymous_vhacker
anonymous_vhacker
发布于 2022-12-01 / 84 阅读
0
0

top命令

top命令可以在linux中查看各进程的系统资源的占用情况,包括CPU占用、内存占用、进程优先级等等。

开启命令:

top

就是如此简单
image-1669896744442.png
进入top之后以交互模式运行,不同按键触发不同功能。

常用按键功能:

按键

用途

h

帮助

c

切换详细模式

q

退出

s

设置刷新时间间隔

x

进入排序模式

shift+<或>

在排序模式下更改排序列

1

显示各核cpu

t

切换显示进程和cpu状态显示模式

m

切换内存信息显示模式

i

忽略闲置和僵死进程(开/关)

b

切换高亮模式

M

根据内存占用排序

P

根据cpu占用排序

T

根据使用时间排序

o

筛选模式

u

筛选用户

k

kill进程。输入进程PID回车,再输入信号回车

f

选择显示的列表信息(按<方向键>移动,按<空格>选中/取消,按<q>退出)

H

显示线程信息

信号有如下,一般用9(SIGKILL),可通过kill -l命令得到信号列表。

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

top展现信息含义解释

基础的top命令展现5行头部信息以及一张进程信息表,如图。
image-1670379927712.png

第一行

top - 10:20:58 up 7 days, 20:58, 1 user, load average: 0.02, 0.07, 0.08

10:20:58,表示当前系统时间
up 7 days, 20:58,表示系统已运行时间,已运行7天20小时58分
1 user,表示当前登录到系统的用户数量
load average: 0.02, 0.07, 0.08,分别为系统过去1分钟,5分钟,15分钟的系统负载。
(系统负载:消耗的CPU时间/CPU时间。可能大于1,最大为x,x为CPU总数)

第二行

Tasks: 177 total, 1 running, 176 sleeping, 0 stopped, 0 zombie

表示任务运行状况。
total,总数。
running,处于运行中。
sleeping,处于睡眠状态,即不需使用CPU的状态。
stopped,处于停止态,用ctrl+z可以让进程停止,用SIGCONT信号可让进程恢复。
zombie,僵死进程。

linux进程状态图:
image-1670381082023.png

第三行

%Cpu(s): 1.3 us, 1.3 sy, 0.0 ni, 97.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

各种时间所占的百分比的统计,这个数据的统计时间区间是,从本次刷新到上一次刷新之间,在这个区间统计的数据。
us运行没有指定优先级的用户进程所消耗的CPU时间所占百分比,默认的终端执行的程序都是没有指定优先级的,可用nice命令来改变程序执行的优先级:sudo nice -n -10 ./xxx
sy,运行内核进程所消耗的CPU时间所占的百分比。
ni,运行指定了修改过优先级之后的用户进程所占的CPU时间百分比。
id,idle进程执行所占的CPU时间百分比,当系统当中没有足够的进程让CPU执行的时候,idle进程会被调度到CPU上进行执行,这个idle进程是为了让操作系统能够良好的执行起来所设置的,idle进程主要执行HLT指令,这个指令主要是让CPU节能,不需要CPU满负荷运转,因为这个时候没有具体的进程需要执行,这个百分比越大说明系统负载越轻,CPU不繁忙。
wa,等待IO的时间百分比。
hi,处理硬件中断所消耗的时间百分比。
si,处理软件中断所消耗的时间百分比。
st,虚拟机的虚拟CPU等待真实物理CPU的时间,可以大致认为是Ready状态到Running状态的等待时间,如果这个值越大说明虚拟机运行状态越不好,因为它等待真实CPU的时间很长。

第四行

MiB Mem : 7444.7 total, 828.6 free, 4235.9 used, 2380.2 buff/cache

物理内存使用信息,单位是MiB。若为KiB Mem,则单位为KiB。
total,总内存大小。
free,空余内存大小。
used,已使用内存大小。
buff/cache,用于缓存的内存的大小。

第五行

MiB Swap: 0.0 total, 0.0 free, 0.0 used. 2930.2 avail Mem

交换区的内存信息,单位是MiB。若为KiB Swap,则单位为KiB。
total,总内存大小。
free,空余内存大小。
used,已使用内存大小。
avail Mem,可用于启动新程序的内存大小的估计值。

表格

表头:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

PID,进程ID。
USER,用户。
PR,PR值,体现动态优先级即priority值(0~139),0-99的是实时进程,100-139的是非实时进程(普通进程)。对于rt进程,即实时进程,PR=-1-用户视角,所以有时候看到PR值是-51的进程,那么它实际对应的优先级是50,有时候看到PR的值是rt而不是数值,这种对应的优先级是99。
NI,nice值,静态优先级(-20~19),值越小优先级越高,默认为0。
VIRT,使用的虚拟内存的大小,单位是KiB。
RES,常驻内存的内存大小,单位是KiB。
SHR,共享内存的大小,单位是KiB。
S,进程的状态(D:不能中断的睡眠,R:在CPU上执行中,S:睡眠,T:被信号停止,t:被调试器追踪,Z:僵尸进程)。
%CPU,CPU使用率,可以超过100%,最大为x(x为CPU总数)。
%MEM,内存使用百分比。
TIME+,累计消耗CPU的时间。
COMMAND,进程启动命令。

范例

范例1:

单显示某个进程的资源占用情况,并显示其各线程所使用的CPU号。

  1. 命令:

# -p 后面跟上进程PID
top -p 1234
  1. 按f进入显示信息选项,方向键移动至“P = Last Used Cpu (SMP)”,空格选中,按q退出。

  2. 按H显示线程信息。

    如下图,可看到进程所用的各个线程以及它们上次在哪个CPU上运行。


评论