top提供运行系统的动态实时视图。它可以显示系统摘要信息以及当前由Linux内核管理的任务列表。所显示的系统摘要信息的类型以及为任务显示的信息的类型、顺序和大小都是用户可配置的,并且可以在重新启动期间使配置持久。
top -hv | -bcEHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols]
## 常用选项
-p pid ## 只显示pid进程及其子进程的信息。监视多个则为 -p N1,N2,N3...
-u user ## 只显示user用户启动的进程。
-d secs ## 设置显示更新时间间隔为secs秒。默认为3秒。当然用户可以使用s交互命令来改变之。
-1 ## 列出所有CPU的摘要信息。
-H ## 多线程模式,按线程划分每行。当然用户可以使用H交互命令来改变之。
-n count ## 设置显示次数为count次,然后退出。
-c ## 显示完整的命令行,而不截断。
-q ## 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
-S ## 累积模式,连续显示多次更新结果。
-s ## 安全模式,这将去除交互命令所带来的潜在危险。
-i ## 忽略空闲和僵死进程。
-b ## 以批处理模式操作,启动后不显示交互命令提示符,方便将结果输出到其它程序或文件。
top - 16:29:43 up 2:35, 7 users, load average: 0.95, 0.88, 0.70
Tasks: 315 total, 3 running, 310 sleeping, 0 stopped, 2 zombie
%Cpu0 : 2.4 us, 1.4 sy, 0.0 ni, 95.8 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15847.3 total, 12950.4 free, 1328.2 used, 1568.7 buff/cache
MiB Swap: 8012.0 total, 8012.0 free, 0.0 used. 14311.7 avail Mem
## 1、运行时间与负载均衡
## 16:29:43: 系统时间
## up: 运行时间
## users: 当前登录用户数量
## load average: 5分钟、10分钟、15分钟负载平均值。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
## 2、任务状态与CPU状态,在多核环境中,CPU状态可划分多行
## Tasks: 总进程数或总线程数,取决于是否开启线程模式
## running: 运行进程数
## sleeping:休眠进程数
## stopped: 停止进程数
## zombie: 僵尸进程数
## us: user,用户空间占用CPU的百分比
## sy: system,内核空间百分比
## ni: nice,改变过优先级的进程占用CPU的百分比
## id: idle,空闲百分比
## wa: IO-wait,IO等待百分比
## hi: 硬中断百分比
## si: 软中断百分比
## st: 当前虚拟机中的cpu周期被物理机中的实例偷走的比例。
## 3、内存使用情况,默认Mb为单位,交互命令按E切换单位,交换空间使用变动证明内存已不足使用。
## total: 总内存
## free: 剩余内存
## used: 已用内存
## buff/cache: 缓冲与缓存
字段 | 说明 |
---|---|
PID | 进程id |
USER | 进程所有者 |
PR | 动态优先级 |
NI | nice值,静态优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=停止 t=调试跟踪 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程名称(命令名/命令行) |
PPID | Parent Process pid,父进程id |
UID | Effective User Id,有效用户id,进程的创建者 |
RUID | Real User Id,实际用户id,当前登录者 |
RUSER | Real User Name |
SUID | Saved User Id,设置用户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) |
TIME | CPU Time,累积CPU用时 |
SWAP | Swapped Size (KiB),交换空间大小 |
CODE | Code Size (KiB),代码段所占内存大小 |
DATA | Data + Stack Size (KiB),数据段所占内存大小 |
nMaj | Major Page Faults |
nMin | Minor Page Faults |
nDRT | Dirty Pages Count |
WCHAN | Sleeping in Function |
Flags | Task Flags |
CGROUPS | Control Groups |
SUPGIDS | Supp Groups IDs |
SUPGRPS | Supp Groups Names |
TGID | Thread Group Id |
ENVIRON | Environment variables,进程环境变量 |
vMj | Major Faults delta |
vMn | Minor Faults delta |
USED | Res+Swap Size (KiB),已使用的非交换物理内存 |
nsIPC | IPC namespace Inode |
nsMNT | MNT namespace Inode |
nsNET | NET namespace Inode |
nsPID | PID namespace Inode |
nsUSER | USER namespace Inode |
nsUTS | UTS namespace Inode |
详解
PR: Priority 动态优先级
1、priority的值在内核的调度器上表现是会变化的,所以也叫做动态优先级,是进程内核态的一个概念
2、范围从0到139。值越小,优先级越高,越容易被调度器执行。0-99,实时进程(rt)优先级范围。100-139,非实时进程
3、取值rt表示实时进程NI: Nice Value 优先值、静态优先级
1、nice值也叫做静态优先级,是一个进程用户态的一个概念,除非我们用renice去改它,否则它是不变的。通过NI来影响PR
2、取值范围是-20至19,一共40个级别。负值表示高优先级,正值表示低优先级
3、设置nice值的命令有:nice -n 10 bash ## 启动并设置nice值
、renice 10 -p pid ## 重新调整进程nice值
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、真正的该程序要求的数据空间,是真正在运行中要使用的。
全局交互命令始终可以在全屏模式和交替显示模式下使用。但是,在安全模式下运行时,这些交互命令中有些是不可用的。如果想知道是否进入了安全模式,请求帮助并查看第二行的系统摘要。
命令 | 说明 |
---|---|
Enter | Space | 刷新显示 |
? | h | 帮助 |
= | 移除显示哪些任务的限制。 |
0 | 切换是否显示0值 |
A | 选择显示开关,可以分开显示每个CPU的视图 |
B | 粗体切换 |
* d | s | 改变延迟时间间隔 |
E | Extend-Memory-Scale in Summary Area,切换摘要区域内存显示单位 |
e | Extend-Memory-Scale in Task Windows,切换任务区别内存显示单位 |
g | Choose-Another-Window,选择其它显示窗口,在用A后才能使用 |
H | Threads-mode,多线程显示开关 |
I | Irix/Solaris-Mode,在Solaris模式下操作时,任务的CPU使用量将除以CPU总数 |
* k | Kill-a-task,输入PID后发送kill信号 |
q | 退出 |
* r | Renice-a-Task,调整任务nice值,要求输入PID |
W | 写入配置文件,再次启动top保存当前设置。 |
X | Extra-Fixed-Width,将一些字段的显示宽度固定 |
Y | Inspect-Other-Output |
Z | Change-Color-Mapping,改变当前窗口颜色映射 |
* | 以星号显示的命令在安全模式中不可用,也不会显示在第1级帮助屏幕上。 |
示例:按A打开多个CPU窗口,按g选择其它窗口,按Z改变对应窗口颜色,按esc回到主界面
摘要区域交互命令始终可以在全屏模式和选择显示模式下使用。它们会影响显示的起始行,并将决定消息和提示的位置。这些命令总是只影响当前窗口。
命令 | 说明 |
---|---|
C | Show-scroll-coordinates,显示流动坐标轴,y表示多少行,x表示多少列 |
l | 切换负载平均/正常运行时间显示 |
t | 切换内存/交换使用显示 |
m | 切换任务/CPU状态显示 |
1 | 切换单独CPU状态显示 |
2 | NUMA-Nodes/Cpu-Summary toggle |
3 | Expand-NUMA-Node |
示例:按l关闭负载均衡显示,按1显示所有CPU状态,按m关闭内存信息显示,按C显示坐标信息
任务区域交互命令总是在全屏模式下可用。如果当前窗口的任务显示已关闭,则交互命令是不可用的。
命令 | 说明 |
---|---|
任务窗口的外观 | |
J | Justify-Numeric-Columns toggle,对齐数字列 |
j | Justify-Character-Columns toggle,对齐字符列 |
b | 粗体切换 |
x | 列高亮切换,某些终端程序高亮不明显。 |
y | 行高亮切换 |
z | 多色/单色切换 |
任务窗口内容 | |
c | 命令行/程序名称切换 |
f | F | 字段选择或排序字段 |
o | O | Other-Filtering |
S | 累积时间模式开关 |
u | U | 只显示特定用户 |
V | Forest-View-Mode toggle,森林视图模式,根据父进程显示进程树 |
任务窗口大小 | |
i | Idle-Process,是否显示空闲进程 |
n | # | Set-Maximum-Tasks,设置显示最大任务数 |
任务窗口排序 | |
< | 左移排序字段,将排序列移到左侧,除非当前排序字段是要显示的第一个字段。 |
> | 右移排序字段,将排序列移到右侧,除非当前排序字段是显示的最后一个字段。 |
f | F | Fields-Management,显示一个单独的屏幕选择字段 |
R | Reverse/Normal-Sort-Field,反向/正常排序字段切换 |
可选窗口模式 | |
- | _ | 显示或者隐藏窗口 |
* = | + | 均衡化_(再平衡)窗口 |
* A | 可选窗口模式开关 |
* a | w | 窗口上下选择 |
* G | 选择另一个窗口/字段组 |
* g | 更改窗口/字段组名称 |
* | 使用星号的交互式命令已经超出了可选窗口模式。 |
示例:按f选择PID,按s选择为排序字段,按esc回到主界面,按R让排序倒序
按Z时,将显示一个单独的屏幕。该屏幕可以用来在当前窗口或所有四个窗口中更改颜色,然后再按esc返回到顶部显示。
命令 | 说明 |
---|---|
应用并退出 | |
q | 放弃当前的变化并退出 |
示例:按Z选择颜色映射为红色
摘要区域交互命令始终可以在全屏模式和选择显示模式下使用。它们会影响显示的起始行,并将决定消息和提示的位置。这些命令总是只影响当前窗口。
命令 | 说明 |
---|---|
- | _ | 显示或者隐藏窗口 |
* = | + | 均衡化_(再平衡)窗口 |
* A | 可选窗口模式开关 |
* a | w | 窗口上下选择 |
* G | 选择另一个窗口/字段组 |
* g | 更改窗口/字段组名称 |
* | 使用星号的交互式命令已经超出了可选窗口模式。 |
示例:按A开启可选窗口,按a切换窗口,按-隐藏2、3窗口
## 系统配置文件不是由top创建的。相反,您可以手动创建这个文件,并将其放在/etc目录中。
cat /etc/toprc
s # line 1: secure mode switch
5.0 # line 2: delay interval in seconds
## 这个文件被写成’$HOME/.your-name-4-top’+’rc’。
## 使用‘W’交互式命令创建或更新它。如果$HOME变量不存在,top将根据权限尝试将个人配置文件写入当前目录。
cat `$HOME/.your-name-4-top' + `rc'
global # line 1: the program name/alias notation
" # line 2: id,altscr,irixps,delay,curwin
per ea # line a: winname,fieldscur
window # line b: winflags,sortindx,maxtasks,graph modes
" # line c: summclr,msgsclr,headclr,taskclr
global # line 15: additional miscellaneous settings
" # any remaining lines are devoted to the
" # generalized inspect provisions
" # discussed below