top
命令可以在linux中查看各进程的系统资源的占用情况,包括CPU占用、内存占用、进程优先级等等。
开启命令:
top
就是如此简单
进入top之后以交互模式运行,不同按键触发不同功能。
常用按键功能:
信号有如下,一般用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行头部信息以及一张进程信息表,如图。
第一行
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进程状态图:
第三行
%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号。
命令:
# -p 后面跟上进程PID
top -p 1234
按f进入显示信息选项,方向键移动至“P = Last Used Cpu (SMP)”,空格选中,按q退出。
按H显示线程信息。
如下图,可看到进程所用的各个线程以及它们上次在哪个CPU上运行。