top命令

Linux top 命令用于实时显示 process 的动态。

使用权限:所有使用者。

语法

top [选项]

选项:

-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;

-b:使用批处理模式输出。一般和”-n” 选项合用,用于把 top 命令重定向到文件中;

-n 次数:指定 top 命令执行的次数。一般和”-“选项合用;

-p 进程 PID:仅查看指定 ID 的进程;

-s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;

-u 用户名:只监听某个用户的进程;

-q : 没有任何延迟的进行刷新,如果调用程序有超级用户权限,那么 top 将以尽可能高的优先级运行;

-c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称 S : 累积模式,会将己完成或消失的子行程 (dead child process) 的 CPU time 累积起来;

-i : 不显示任何闲置 (idle) 或僵死 (zombie) 的行程

在 top 命令的显示窗口中,还可以使用如下按键进行交互操作:

h:显示帮助画面,给出一些简短的命令总结说明
k: 终止一个进程。
i: 忽略闲置和僵死进程。这是一个开关式命令。
q: 退出程序
r: 重新安排一个进程的优先级别
S: 切换到累计模式
s: 改变两次刷新之间的延迟时间(单位为 s
f:或者 F 从当前显示中添加或者删除项目
o 或者 O: 改变显示项目的顺序
l: 切换显示平均负载和启动时间信息
m:切换显示内存信息
t: 切换显示进程和 CPU 状态信息
c: 切换显示命令名称和完整命令行
M:根据驻留内存大小进行排序
P: 根据 CPU 使用百分比大小进行排序
T: 根据时间 / 累计时间进行排序
W:将当前设置写入~/.toprc 文件中
q:退出 top 命令;
一、TOP 前五行统计信息
统计信息区前五行是系统整体的统计信息。

第一行为任务队列信息

top - 12:08:29【当前时间】 up 343 days, 14:59【系统运行时间】,  2 users【当前登录用户数】,  load average: 0.00, 0.01, 0.05【系统负载】
系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载

第二行为进程信息

Tasks:  72 total【进程总数】,   1 running【正在运行的进程数】,  70 sleeping【睡眠的进程数】,   1 stopped【停止的进程数】,   0 zombie【僵尸进程数】

第三行为 CPU 的信息

%Cpu(s):  0.3 us【用户空间占用CPU百分比】,  0.3 sy【内核空间占用CPU百分比】,  0.0 ni【改变过优先级的进程占用CPU的百分比】, 99.3 id【空闲CPU百分比】,  0.0 wa【IO等待占用CPU的百分比】,  0.0 hi【硬中断(Hardware IRQ)占用CPU的百分比】,  0.0 si【软中断(Software Interrupts)占用CPU的百分比】,  0.0 st【虚拟时间百分比】

当有多个 CPU 时,这些内容可能会不止一行。

st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

第四行为物理内存使用信息

KiB Mem :  1883724 total【物理内存总量】,   126704 free【空闲内存总量】,   827496 used【使用的物理内存总量】,   929524 buff/cache【用作内核缓存的内存量】

第五行为虚拟内存使用 (交换空间) 信息

KiB Swap:        0 total【交换区总量】,        0 free【空闲交换区总量】,        0 used【使用的交换区总量】.   882208 avail Mem 【缓冲的交换区总量】

缓冲(buffer)和(cache)的区别:

缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中” 读取” 的,而缓冲(buffer)是用来加速数据” 写入” 硬盘的。

可用内存 = free + buffer + cached

对于内存监控,在 top 里我们要时刻监控第五行 swap 交换分区的 used,如果这个数值在不断的变化,说明内核在不断进行内存和 swap 的数据交换,这是真正的内存不够用了。

二、进程信息

PID【进程id】 USER【进程所有者的用户名】      PR【优先级】  NI【nice值】    VIRT【进程使用的虚拟内存总量】    RES【进程使用的、未被换出的物理内存大小】    SHR【共享内存大小】 S【进程状态】 %CPU【上次更新到现在的CPU时间占用百分比】 %MEM【进程使用的物理内存百分比】     TIME+【进程使用的CPU时间总计】 COMMAND【命令名/命令行】 

更多列信息如下表所示。

列名 含义
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
其他

监控java线程数

ps -eLf | grep java | wc -l

监控网络客户连接数

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

————————————————
原文作者:Brewin
转自链接:https://learnku.com/articles/50094

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值