当我检查 Linux 系统(或者甚至对运行其他操作系统的计算机进行故障排除)时,我经常使用 top 命令来检查系统的 RAM 和 CPU 占用率。它为我提供了评估计算机整体健康状况的信息。我在 Linux 之旅的早期就了解了 top 命令,并依靠它让我快速了解服务器或其他 Linux 系统(包括 Raspberry Pi)上正在发生的事情。但 top 命令远比人们看到的要复杂得多。根据其手册页,top 程序提供了正在运行的系统的动态实时视图。它可以显示系统摘要信息以及当前由 Linux 内核管理的进程或线程列表。
1、启动top
2、top 参数信息:
上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。 uptime:17:14:30 当前时间
up 1days :系统运行时间,说明此服务器连续运行 1天了
4 user:当前登录用户数
load average: 0.00,0.01.0.03系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
系统任务(Tasks)信息:total:总进程数; running:正在运行的进程数; sleeping:休眠的进程数; stopped:中止的进数; zombie:僵死无响应的进程数。
CPU占用信息: us: 用户占用 sy:内核占用; ni:优级调度占用; id:空闲CPU; wa:I/O等待占用; hi:硬件中断占用; si:软件中断占用; st:虚拟化占用。 要了解空闲的CPU百分比,主要看%id部分
内存占用(Mem)信息: total:总内存空间: free:空闲内存; used:已用内存; buff/cache:物理内存和交换内存的缓冲区总和。
交换空间(Swap)占用: total:总交换空间; free:空闲交换空间; used:已用交换空间 avail Mem:可用物理空间。
1.2详细说明
(1)Tasks:240 total进程总数
1 running 正在运行的进程数
240sleeping睡眠的进程数
1 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s):0.01%us系统用户进程使用CPU百分比。
0.00%sy内核中的进程占用CU百分比优先级调度占用
0.00%ni用户进程空间内改变过优先级的进程占用CPU百分比
99.9%号 id 空闲CPU百分比
0.0wa :是cpu 等待 /0 完成的时间总量。
(2)KIBMem:3861508 total 物理内存总量
798428 used使用的物理内存总量
2176632 free 空闲内存总量
886448 buff/cache用作内核缓存的内存量。和free-k一个意思
(3)KIBSwap:8191996 total交换区总量
0 used 使用的交换区总量
8191996 free 公闲交换区总量
2719732 availMem 总的可利用内存是多少
3、运行进程信息
PID:进程id
USER: 进程所有者的用户名
PR:优先级
NI:进程优先级
VIRT:虚拟内存
RES:实际使用的物理内存
SHR:共享内存大小
S:进程状态(D=不可中断的睡眠状态,R=运行中或可运行s=睡眠中,T表示已跟踪以及已停止,z=僵停
%CPU:上次更新到现在的cpu时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+: 进程使用的cpu时间总计
COMMAND:命令名/命令行
4、基本操作
按z可更改top追踪的颜色,使追踪过程更醒目
按1键可查看系统上每个 CPU 内核的图形表示。反复按1以评估 CPU 内核的内核统计信息
过调用top命令然后按m键以图形方式显示内存使用情况。
5、top参数用法
(1)[root@fbc ~]# top -u 'root' #查看特定用户启动的进程
(2)[root@fbc ~]# top -i #换取系统上的空闲进程列表,使用-i选项
(3)[root@fbc ~]# top -d 4 # -d 4 表示每4秒检查一次默认值为3.
(4)用 top 定位一个进程
按Shift+L按名称查找进程。这会在粗体表标题行上方创建1一个提示。输入您要查找的进程的名称,然后按Enter或Return以查看在新排序的进程列表中高亮显示该进程的实例
(5)使用top停止进程
您也可以使用 top 停止或“kill”正在运行的进程。首先,使用 Shift+L 或找到要停止的进程 pgrep。接下来,按 K 并输入要停止的进程 ID。默认值是列表顶部的任何值,因此请确保在按 Enter 之前输入要停止的 PID ,否则您可能会停止您不打算停止的进程。
6、top实例用法
(1)获取要监控的本地服务器IP地址
[root@fbc ~]# ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'
(2)获取用户空间占用CPU百分比
[root@fbc ~]# top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"
(3)获取内核空间占用CPU百分比
[root@fbc ~]# top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"
(4) 获取空闲CPU百分比
[root@fbc ~]# top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"
(5) 获取等待输入输出占CPU百分比
[root@fbc ~]# top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"