top命令 不加参数 直接运行起来后,效果如下所示:
top - 19:57:08 up 5 days, 43 min, 2 users, load average: 0.78, 0.64, 0.48
任务: 311 total, 1 running, 310 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.6 us, 1.5 sy, 0.0 ni, 95.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 31989.1 total, 766.9 free, 8866.6 used, 22355.7 buff/cache
MiB Swap: 2048.0 total, 1754.0 free, 294.0 used. 21853.9 avail Mem
进程号 USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND
6662 wangdao+ 20 0 4749216 309056 112932 S 6.0 0.9 23:57.96 gnome-shell
184637 wangdao+ 20 0 2933448 286212 132560 S 5.3 0.9 12:23.41 Isolated Web Co
7087 wangdao+ 20 0 1009132 89104 60472 S 4.6 0.3 279:56.05 teams
6522 wangdao+ 20 0 548988 93944 43048 S 4.3 0.3 45:11.66 Xorg
6461 wangdao+ 9 -11 4035812 19616 14896 S 4.0 0.1 36:41.56 pulseaudio
7170 wangdao+ 20 0 13.6g 371032 65068 S 3.3 1.1 254:56.73 teams
184404 wangdao+ 20 0 6141184 873280 429656 S 3.3 2.7 35:40.81 firefox
7259 wangdao+ 20 0 5633868 220744 67344 S 2.3 0.7 123:48.56 teams
180769 wangdao+ 20 0 1066012 77552 50184 S 1.3 0.2 1:02.89 gnome-terminal-
181035 wangdao+ 20 0 20.5g 160116 108520 S 0.7 0.5 3:13.07 code
201723 wangdao+ 20 0 15248 4088 3144 R 0.7 0.0 0:00.08 top
45 root 20 0 0 0 0 S 0.3 0.0 3:29.69 ksoftirqd/5
910 root 20 0 1799724 21112 3672 S 0.3 0.1 5:19.43 containerd
6875 wangdao+ 20 0 7757664 188192 76444 S 0.3 0.6 9:28.62 teams
181100 wangdao+ 20 0 38.4g 420048 115620 S 0.3 1.3 13:45.32 code
181125 wangdao+ 20 0 20.3g 170548 58852 S 0.3 0.5 0:40.41 code
184633 wangdao+ 20 0 2644516 174204 108536 S 0.3 0.5 0:53.07 Isolated Web Co
192986 wangdao+ 20 0 32.6g 249212 168968 S 0.3 0.8 0:48.38 chrome
193029 wangdao+ 20 0 32.6g 161020 98400 S 0.3 0.5 0:45.98 chrome
199770 wangdao+ 20 0 1124.6g 175952 110160 S 0.3 0.5 0:22.13 chrome
201531 wangdao+ 20 0 5245032 126420 98452 S 0.3 0.4 0:00.22 cpptools-srv
1 root 20 0 168984 12864 8144 S 0.0 0.0 0:15.48 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.12 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
7 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
10 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
接下来我们详细分析系统统计信息:
top - 19:57:08 up 5 days, 43 min, 2 users, load average: 0.78, 0.64, 0.48
任务: 311 total, 1 running, 310 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.6 us, 1.5 sy, 0.0 ni, 95.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 31989.1 total, 766.9 free, 8866.6 used, 22355.7 buff/cache
MiB Swap: 2048.0 total, 1754.0 free, 294.0 used. 21853.9 avail Mem
@1 总体统计信息
我们以第1行总信息为例:
top - 19:57:08 up 5 days, 43 min, 2 users, load average: 0.78, 0.64, 0.48
load average: 0.00, 0.01, 0.01 表示系统负载,而有3个值是因为分别表示 CPU 1分钟,5分钟,15分钟平均负载。
第2行信息 如下:
任务: 311 total, 1 running, 310 sleeping, 0 stopped, 0 zombie
表示 系统现在共有311个进程,其中处于运行中的有1个,310个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
@2 CPU信息详细解读
我们以第3行CPU信息为例:
%Cpu(s): 2.6 us, 1.5 sy, 0.0 ni, 95.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
这里详细解读下 us sy ni 。。。等等这些含义解读如下:
@3 MEM & swap 信息详细解读
第4、5行信息相对解读容易
MiB Mem : 31989.1 total, 766.9 free, 8866.6 used, 22355.7 buff/cache
MiB Swap: 2048.0 total, 1754.0 free, 294.0 used. 21853.9 avail Mem
我们首先对top命令中统计信息之后的行 ,他们的字段进行下解读:
这里不止可以显示如上信息,还可以通过 “f” 操作,进入另一个视图,对显示字段进行编辑,点击“f”后编辑视图如下所示:
Fields Management for window 1:Def, whose current sort field is TTY
Navigate with Up/Dn, Right selects for move then or Left commits,
'd' or toggles display, 's' sets sort. Use 'q' or to end!
* USER = Effective User Name nsNET = NET namespace Inode
* PR = 优先级 nsPID = PID namespace Inode
* NI = Nice Value nsUSER = USER namespace Inode
* VIRT = Virtual Image (KiB) nsUTS = UTS namespace Inode
* RES = Resident Size (KiB) LXC = LXC container name
* SHR = Shared Memory (KiB) RSan = RES Anonymous (KiB)
* 日 = 进程状态 RSfd = RES File-based (KiB)
* %CPU = CPU 使用情况 RSlk = RES Locked (KiB)
* %MEM = Memory Usage (RES) RSsh = RES Shared (KiB)
* TIME+ = CPU Time, hundredths CGNAME = Control Group name
* COMMAND = Command Name/Line NU = Last Used NUMA node
PPID = Parent Process pid
UID = Effective User Id
RUID = Real User Id
RUSER = 真实用户名
SUID = Saved User Id
SUSER = Saved User Name
GID = Group Id
GROUP = Group Name
PGRP = Process Group Id
* TTY = Controlling Tty
TPGID = Tty Process Grp Id
SID = Session Id
nTH = Number of Threads
P = Last Used Cpu (SMP)
时间 = CPU Time
SWAP = Swapped Size (KiB)
CODE = Code Size (KiB)
DATA = Data+Stack (KiB)
nMaj = Major Page Faults
nMin = Minor Page Faults
nDRT = Dirty Pages Count
WCHAN = Sleeping in Function
标志 = Task Flags
CGROUPS = Control Groups
SUPGIDS = Supp Groups IDs
SUPGRPS = Supp Groups Names
TGID = Thread Group Id
OOMa = OOMEM Adjustment
OOMs = OOMEM Score current
ENVIRON = Environment vars
vMj = Major Faults delta
vMn = Minor Faults delta
USED = Res+Swap Size (KiB)
nsIPC = IPC namespace Inode
nsMNT = MNT namespace Inode
* 进程号 = 进程编号
在这里可以通过“空格”按键 来选择或者删除对应显示的字段,比较方便。同时对这里其余的一些常用字段进行解读,如下所示:
@1 进程id相关:
@2 CPU相关:
@3 内存相关:
@4 进程线程相关:
此时可以通过 top 的内部命令对进程的显示方式进行控制,实时显示。内部命令和其功能如下:
#1 变更显示内容:
s # 改变画面更新频率
l # 关闭或开启 上数 第1行 top 信息的表示
t # 关闭或开启 上数 第2行 Tasks 和第3行 Cpus 信息的表示
m # 关闭或开启 上数 第4行 Mem 和 第5行 Swap 信息的表示
f # 进入另一个视图,进入后可以编辑基本视图中的显示字段,可以查看更多信息
#2 排列显示信息
N # 以 PID 大小 顺序排列表示进程列表
P # 以 CPU 占用率大小 顺序排列进程列表
M # 以内存占用率大小 顺序排列进程列表
#3
h # 显示帮助信息(如何在top命令显示的界面中进行的按键操作)
n # 设置 进程列表所显示的进程数量
q # 退出命令
top命令的常见操作整理如下:
#设置更新次数,更新三次后终止更新显示
$top -n 3
#批次档模式,配合"-n"参数,可以用来将 top 的结果输出到文件
$top -b -n 2 > top.txt
#设置更新周期 3秒一次
$top -d 3
#只跟踪指定进程pid=1152
$top -p 1152
#跟踪进程1152 和该进程的线程
$top -p -H 1152
#默认为显示部COMMAND缩写信息,-c表示显示完整信息,不再缩写
$top -c
#查看指定的root用户组相关进程的信息
$top -u root
top命令虽然功能强大,但与Linux传统的 top命令相比,htop 更人性化,支持带有颜色的显示形式,相比top命令可以支持鼠标操作。从功能上讲 top命令 和 htop命令 基本是一致的,无非是后者交互上更方便,htop运行起来是这样的:
可以看到 信息分布上相对于top命令有调整,系统统计信息内容相差不大,都是基本信息,CPU使用情况、MEM、swap使用情况,但信息统计学分布位置和显示效果发生了变化,如下所示:
关于进程信息的展示,一般用鼠标和 F1-F10来进行操作:
这里解读下不同于top的操作方式,htop是通过F1-F10来进行对应操作,非常方便:
总结下,htop无非是top命令的界面版,操作方式上会有不同,但本质上的功能几乎一致。