你真的会用top命令么


top命令用来查看linux进程。可以查看cpu占用,内存消耗等。

top常用命令

任意举几例:

# 显示帮助和版本 其实和 top -h 或 top -v 一样
top -hv  
# 根据pid显示进程
top -p 1621
# 根据user显示进程
top -u root
# 设置刷新时间(Change-Delay-Time-interval)
top -d 3
#  显示所有列
top -bcHiOSs


top组合排查问题

top查看cpu高的服务,例如最高的是17850。

查看该pid下线程列表(默认也是倒序):
top -H -p 17850

例如线程最高的是17880,转换为十进制(因为pid默认是按照十六进制存储的):
printf “%x\n” 17880
结果:45d8

查看该服务下该进程的stack。
jstack 17850|grep 45d8 -A 30

详细显示(command列)

场景:
服务器有多个java项目,想要查看各个项目占用的内容。
输入top命令,只显示一个java和总内存,什么也看不出来。
解决办法:
按c即可。 c命令(Command-line/Program-name toggle)切换 程序名 和 command-line 。显示为command-line当然更容易查看了。

不显示空闲类

i 键即可。 是不是清爽多了。

 -i  :Idle-process toggle  切换空闲进程

排序

大写M : 对内存进行排序显示
大写P:对cpu进行排序显示
大写T:对运行时间进行排序显示
大写N:对PID进行排序显示

以上排序,都是降序排列。想要反序的话,按下大写R。
看不出来根据哪列排序的, 按xb加粗显示即可。

过滤

例如我只想看包含java相关进程,怎办?
输入o,然后输入 COMMAND=JAVA 发现只显示java进程了。

3.fields列操作

top有哪些列

方法不只一种:
1、看网页文档。
2、man top看linux自带文档。
3、top界面,输入f命令,进入列名管理(field management)查看。

列名管理

哪些是默认列?如何设置?

前面带*号的是默认列,可以通过 d或空格 进行切换。

按照哪列排序

s键即可。 第一行会显示 whose current sort field is $CPU,这里的$CPU就是排序列。

列的显示顺序

光标定位后,按右方向键,表示选中。 然后按上下键调整位置即可。

列管理操作汇总

按f或F键,进入管理界面,说明如下:

前面带有*号的,表示默认显示的列
光标定位   上下键,注:左右键控制选中,所以不是定位键   
选中  右键 表示选中(select),左键/enter 表示取消选中(move)
列显示切换   d键 或 空格键
以该列排序   s键   按下后,第一行的内容会变,如whose current sort field is %CPU,就是以cpu列作为排序
退出   q键/esc键   

默认显示的列

* PID     = Process Id             
* USER    = Effective User Name   
* PR      = Priority               
* NI      = Nice Value            
* VIRT    = Virtual Image (KiB)    
* RES     = Resident Size (KiB)    
* SHR     = Shared Memory (KiB)    
* S       = Process Status        
* %CPU    = CPU Usage             
* %MEM    = Memory Usage (RES)     
* TIME+   = CPU Time, hundredths   
* COMMAND = Command Name/Line

其他

top命令官网文档(英):
https://man7.org/linux/man-pages/man1/top.1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值