top常用参数

https://www.linuxtop.cn/command/top.html

Linux常用命令-top
发表于 2020-12-01
分类于 command
top命令–动态实时显示Linux系统进程
top命令相当于Windows下的任务管理器,能够实时显示系统进程情况,查看系统负载等信息。

$ top
top - 16:22:05 up 44 days, 6:57, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.2 us, 0.0 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016168 total, 171624 free, 133264 used, 711280 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 709152 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125200 3372 2152 S 0.0 0.3 0:40.77 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:26.30 ksoftirqd/0

第一行信息–系统时间及负载(同uptime命令的执行结果)
top - 16:22:05 up 44 days, 6:57, 1 user, load average: 0.00, 0.01, 0.05

16:22:05 //当前系统时间
up 44 days, 6:57 //系统运行时间,格式为日,时,分。这里表示已经运行了44天又6小时57分钟。
1 user //当前登录的用户数
load average: 0.00, 0.01, 0.05 //系统负载,分别表示最近1分钟,5分钟,15分钟的平均负载值。
系统负载:负载均值是基于内核的数量决定的,以100%负载计算
单核CPU,负载在0—1.00之间是正常的,超过1.00就是超负荷,理想值是0.7
多核CPU,负载值不应超过总核心数,CPU核心数 * 理想值0.7 = 理想负荷
例如一个双核CPU值为2.00则表示100%负载;4核CPU负载不超过2.8则表示没有出现高负荷(4*0.7=2.8)

在实际应用中,重点关注5分钟,15分钟的负载均值,当达到0.7时,就需要调查原因了。

第二行信息–系统进程数
Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie

分别表示进程总数,正在运行的进程数,睡眠的进程数,已经停止的进程数,僵尸进程数
僵尸进程:表示已经终止,但仍然保留一些信息的进程
僵尸进程无法使用kill清理,如果要手动清理僵尸进程,需要找到其父进程,kill掉父进程后,init进程将接管该僵尸进程(linux中所有的子进程都需要有父进程,当父进程被kill后,其所有子进程将过继给init进程),init进程隔一段时间去调用wait(),来清除僵尸进程

第三行信息–CPU信息
%Cpu(s): 6.2 us, 0.0 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

1键展开或合并,可查看多个(或多核)CPU信息

6.2 us //用户空间占用CPU的百分比
0.0 sy //内核空间占用CPU的百分比
0.0 ni //用户进程空间内改变过优先级的进程占用CPU的百分比
93.8 id //空闲CPU百分比
0.0 wa //IO等待占用CPU的百分比
0.0 hi //硬中断占用CPU的百分比
0.0 si //软中断占用CPU的百分比
0.0 st //虚拟服务hypervisor占用百分比

man帮助中的解释

us, user : time running un-niced user processes
sy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
第四行信息–内存和swap交换分区
KiB Mem : 1016168 total, 171624 free, 133264 used, 711280 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 709152 avail Mem

Mem内存:分别表示物理内存总量,空闲内存,已使用的内存,缓冲区和缓存区占用的内存
Swap交换分区:分别表示交换分区大小,空闲交换分区,已使用的交换分区,可用的内存
buff/cache
buffers和cache都是内存中存放的数据,不同的是,buffers存放的是准备写入磁盘的数据,而cache存放的是从磁盘中读取的数据。在Linux系统中,守护进程(daemon)会定期把buffers中的数据写入的磁盘,也可以使用sync命令手动把buffers中的数据写入磁盘。使用buffers可以把分散的I/O操作集中起来,减少了磁盘寻道的时间和磁盘碎片。cache是Linux把读取频率高的数据,放到内存中以减少I/O,Linux中cache没有固定大小,根据使用情况自动增加或删除。

手动把buffers写入硬盘并清空cache

$ sync && echo 3 > /proc/sys/vm/drop_caches
Swap(内存交换区)
是硬盘上的一块空间。在内存不足的情况下,操作系统把内存中不用的数据存到硬盘的交换区,腾出内存来让别的程序运行。因此,开启swap会一定程度的引起 I/O 性能下降(阿里服务器默认不开)。

进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125200 3372 2152 S 0.0 0.3 0:40.77 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kthreadd

列名 含义
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时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
COMMAND 进程名称(命令名/命令行)
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考sched.h
关于 VIRT/RES/SHR 的详解区别
VIRT:virtual memory usage
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来

DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来
2、真正的该程序要求的数据空间,是真正在运行中要使用的

自定义显示列
在top命令中按f键可以查看显示的列信息,默认按%CPU排序。可以通过上下方向键选择,向右方向键选择移动列,移动到合适位置后通过向左方向键或回车确定移动。
space空格键标记或取消选择列,按s键设置当前项为默认排序列,q或Esc退出。

进程字段排序
b键高亮显示运行状态的进程,默认会显示top进程,y键关闭或打开高亮功能。
x键高亮显示排序列,默认%CPU,通过shift + >或shift + <可以向右或向左改变排序列

灵活使用top
命令行

常用参数:
-b:以批处理模式操作,可以把top输出的内容以可读的形式写入文件,如top -n 3 -b >> top.txt
-c:显示完整的命令行(COMMAND),想查看进程执行的具体位置时非常有用
-d:屏幕刷新间隔时间
-s:使用安全模式,即取消交互式命令
-S:指定累积模式
-i:不显示任何闲置或者僵死进程
-u<用户名>:指定用户名
-p<进程号>:指定进程
-n<次数>:指定循环显示的次数,到了次数自己退出

top -d 2 //每2秒刷新一次屏幕
top -c //显示进程的完整命令行参数(默认只有进程名)
top -p 12345 -p 6789 //每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显示该进程启动的命令行参数
交互式
执行top命令,显示系统状态界面(同时也是交互界面),输入交互命令:

1:切换显示多核CPU信息
h:帮助信息
k:终止一个进程
i:忽略闲置和僵死进程,只显示正在运行的进程
q:退出程序
r:重新安排一个进程的优先级别
S:切换到累计模式
s:设置刷新时间间隔(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s
l:切换显示平均负载和启动时间信息
m:切换显示内存信息
t:切换显示进程和CPU状态信息
c:切换显示命令名称和完整命令行
M:根据驻留内存大小进行排序
P:根据CPU使用百分比大小进行排序
T:根据时间/累计时间进行排序
W:将当前设置写入~/.toprc文件中,下次启动将自动调用toprc文件的设置
其他实用命令

如何通过 shell 脚本监控 top 命令并抓取某几个进程的信息?

$ top -b -n 3 | grep -E “mysql | apache2” >> top.log

如何用top只监视某个进程的状态?用pstree -p取得进程PID, 然后再监控

$ pstree -p | grep apache2
$ top -p 2038,13734,13735

监控java线程数

$ ps -eLf | grep java | wc -l

监控网络客户连接数

$ netstat -n | grep tcp | grep 侦听端口 | wc -l

获取某进程中运行中的线程数量(PID指的是进程ID)

$ ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈pmap PID

htop–增强版的top
htop 命令以直观的格式来显示信息
官网地址:http://hisham.hm/htop/
htop界面
htop界面

安装htop工具
Ubuntu:
$ apt-get install -y htop
Fedora:
$ dnf install htop
CentOS:
$ yum install -y htop

源码包安装

$ tar zxvf htop-xxx.tar.gz
$ cd htop-xxx
$ ./configure
$ make && make install
若出现错误:
configure: error: You may want to use --disable-unicode or install libncursesw.
则需安装ncurses-devel组件和dev开发包组

$ yum install ncurses-devel
RHEL/CentOS安装
需要安装epel源

$ rpm -ivh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL //导入key
$ yum install -y htop
htop快捷键
F1键显示帮助信息
F2或S键编辑配置,可以自定义配置选项
F3或/键搜索进程,搜索框在页面底部,如果匹配则会高亮显示该进程
F4键进程过滤器,搜索关键字,不区分大小写
F5或t键切换树状视图,查看进程树
F6或<,>键打开排序菜单,选择按哪一列排序,默认按CPU使用率排序
F7键或[减少nice值,以提高对应进程的优先级
F8键或]增加nice值,以降低对应进程的优先级
F9或k键发送信号,选择进程,选择信号,回车键确定发送信号到指定进程
F10或q键退出htop

Space空格键标注或取消标记进程,高亮显示,快速定位指定进程。可以标记多个进程然后kill掉
U键取消标记所有进程
F键跟踪进程,即选定进程始终在屏幕上显示
l键显示选中进程所打开的文件列表
I键倒序排列
u键显示所有用户列表,选择显示指定用户进程
P按CPU%排序。M按MEM%排序。T按TIME排序

htop命令行选项
-C 使用单色显示
-d 设置刷新时间,单位秒。例如htop -d 10每10秒刷新一次
-u 显示指定用户的进程。例如htop -u mysql只显示用户名为mysql的相关进程
-p 显示指定的PID进程
-s 按指定列排序。例如htop -s PID按PID列的大小排序显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值