top命令的使用查看进程占用_top怎么看

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200310134230722.png)


## 一. 字段介绍


默认情况下top命令仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200310133334988.png)  
 **方法:**



执行top -c ,显示进程运行信息列表

键入P (大写p),进程按照CPU使用率排序



top -c

top - 14:10:45 up 3 days, 21:54, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 109 total, 1 running, 107 sleeping, 1 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3881340 total, 2384096 free, 764044 used, 733200 buff/cache
KiB Swap: 4064252 total, 4064252 free, 0 used. 2786112 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10673 tomcat 20 0 3189912 523976 14328 S 1.3 13.5 88:07.20 java
771 root 20 0 218504 9520 5984 S 0.3 0.2 0:24.28 rsyslogd
1 root 20 0 125344 3760 2564 S 0.0 0.1 1:56.72 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.21 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.94 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.10 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:43.99 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:01.57 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:02.02 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.18 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:02.61 ksoftirqd/1
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
20 root 20 0 0 0 0 S 0.0 0.0 0:00.35 khungtaskd
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 edac-poller
32 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0


**将线程PID转化为16进制**



工具:printf

方法:printf “%x” 10804


**查看堆栈,找到线程在干嘛**



工具:pstack/jstack/grep

方法:jstack 10765 | grep ‘0x2a34’ -C5 --color


**第一部分**  
 第一行:任务队列信息



top

top - 14:10:45 up 3 days, 21:54, 1 user, load average: 0.00, 0.01, 0.05


14:10:45:当前时间  
 up 3 days, 21:54:系统已经运行的时间3天,21小时54分钟  
 1 user:当前登陆用户数量1  
 load average: 0.00, 0.01, 0.05:最近5/10/15 分钟内的平均负载  
 注意:  
 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值:  
 1)单核CPU情况下:0.00表示没有任何负荷,1.00表示刚好满负荷,超过1.00则表示超负荷,理想值为0.7  
 2)多核CPU情况下:CPU核数 \* 理想值0.7 = 理想负荷,例如:4核CPU负载不超过2.8则表示没有出现高负载  
 (查询CPU的核数:cat /proc/cpuinfo| grep “cpu cores”| uniq)


**第二行:任务进程相关信息**



Tasks: 117 total, 2 running, 115 sleeping, 0 stopped, 0 zombie
Tasks:任务(进程),系统现在有117个进程,其中处于运行中的有2个(running),115个在休眠(sleep),stoped状态的有0个,zombie状态的有0个
第三行:CPU信息(多个cpu时,内容可能会超过两行)
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.3 us:用户空间所占cpu百分比
0.5 sy:内核空间所占用cpu百分比
0.0 ni:用户进程空间内改变过优先级的进程占用cpu百分比
99.2 id:空闲cpu百分比
0.0 wa:等待输入输出的cpu时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比
第四行和第五行:内存使用(与free命令类似)


**//物理内存使用**



KiB Mem : 3881340 total, 2204420 free, 801112 used, 875808 buff/cache


**//虚拟内存使用**



KiB Swap: 4064252 total, 4064252 free, 0 used. 2745980 avail Mem


**物理内存:**



3881340 total:物理内存总量
2204420 free:空闲内存总量
801112 used:使用中的内存总量
875808 buff/cache:缓存的内存总量
swap交换分区:
4064252 total:交换区总量
4064252 free:空闲交换区总量
0 used:使用中的交换区总量


2745980 avail Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入  
 近似计算服务器的真正可用内存:第四行的free + 第四行的buffers + 第五行的cached  
 **注意:**  
 对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了,或者运行有内存溢出问题


**第二部分:各进程状态监控**  
 通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。  
 按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。  
 按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。



PID:进程id
PPID:父进程id
RUSER:Real user name
UID:进程所有者的用户id
USER:进程所有者的用户名
GROUP:进程所有者的组名
TTY:启动进程的终端名,不是从终端启动的进程则显示?
PR:优先级
NI:nice值,负值表示高优先级,正值表示低优先级
P:最后使用的CPU,仅在多CPU的环境下有意义
%CPU:上次更新到现在的CPU的时间占用百分比
TIME:进程使用CPU时间总计,单位:秒
TIME+:进程使用的CPU时间总计,单位:0.01秒
%MEM:进程使用的物理内存百分比
VIRT:virtual memory usage 虚拟内存总量,VIRT=SWAP+RES


1)进程“需要的”虚拟内存大小,包括进程使用的库/代码/数据等;  
 2)假如进程申请100M的内存,但实际使用10M,那么它会增长100M,而不是实际使用量  
 RES:resident memory usage 常驻内存,进程使用的未被换出的物理内存大小,单位kb,RES=CODE+DATA  
 1)进程当前使用的内存大小,但不包括swap out  
 2)包含其他进程的共享  
 3)如果申请100M的内存,实际使用10M,则仅增长10M  
 4)关于库占用内存的情况,它只统计加载的库文件所占内存大小  
 SHR:shared memory 共享内存,单位kb  
 1)除了自身进程的共享内存,也包括其他进程的共享内存  
 2)虽然进程只使用了几个共享库的函数,但是它包含了整个共享库的大小  
 3)计算某个进程所占物理内存大小公式:RES-SHR  
 4)swap out后,数值会降下来  
 CODE:可执行代码占用的物理内存大小,单位kb  
 nFLT:页面错误次数  
 nDRT:最后一次写入到现在,被修改过的页面数  
 S:进程状态,D-不可中断的睡眠状态;R-运行;S-睡眠;T=跟踪/停止;Z-僵尸进程  
 COMMAND :命令名/命令行  
 WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名  
 Flages:任务标志  
 DATA:数据占用的内存, 真正的该程序要求的数据空间,是真正在运行中要使用的  
 **二. top运行过程中显示方式控制**



s :改变画面更新频率
l:关闭或开启第一部分第一行 top信息的显示
t:关闭或开启第一部分第二行 Tasks和第三行 Cpus信息的显示
m :关闭或开启第一部分第四行 Mem和第五行Swap信息的显示
N :以PID的大小顺序排列展示进程列表
P:以CPU占用率的大小顺序排列进程列表
M :以内存占用率的大小顺序排列进程列表
h:显示帮助
n : 设置在进程列表所显示进程的数量
q:退出top


## 三. top命令参数使用


使用格式:top [-] [d] [p] [q] [c] [C] [S] [s] [n]  
 参数说明:



d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之
p:通过指定监控进程ID来仅仅监控某个进程的状态
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行
S:指定累计模式
s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
i:使top不显示任何闲置或者僵死进程。
c:显示整个命令行而不只是显示命令名。


### 操作案列:


**使用top直接终止CPU消耗较大的进程**  
 在 top 运行界面快速终止相应的异常进程。说明如下:


1,想要终止某个进程,只需按下小写的 k 键。



![img](https://img-blog.csdnimg.cn/img_convert/d37017c4cf1b38145e69b516c9f07009.png)
![img](https://img-blog.csdnimg.cn/img_convert/4c3162d1d6dc6f245fa71ac5fd46337d.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

外链图片转存中...(img-PdoUL9kn-1715880820899)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值