top
top这个命令是用于实时监测整个操作系统的全局运行情况,包括CPU利用率、进程信息、内存使用情况、负载、进程状态等。该工具支持各种显示,如按cpu利用率高或内存利用率来对进程列表排序
top
- 17:40:53:当前时间
- up 4 days 23:31:机子已运行了4天23个小时31分钟
- 1 user:活跃的用户数
- load average:负载情况(1.66,1.82,1.82)
- 1.66:近1分钟平均负载
- 1.82:近5分钟平均负载
- 1.82:近15分钟平均负载
负载的计算涉及很多方面,包括但不限于上下文切换、中断、运行中的任务等
Tasks
- 75 total:目前有75个进程
- 2 running:有2个正在运行的进程
- 43 sleeping:有43个因等待某个事件,而处于睡眠状态的进程
- 2 stopped:有2个被SIGSTOP信号暂停的进程
- 0 zombie:有0个僵尸/孤儿进程
CPU
- 0.0 us(user):在用户空间使用的时间
- 0.0 sy(system):在内核空间使用的时间
- 0.0 ni(nice):被调整过nice优先级的进程所使用的时间
- 100.0 id(idle):空闲的cpu时间
- 0.0 wa(IO-wait):I/O等待完成所用的cpu的时间
- 0.0 hi(hardware interrupts):硬中断所用的cpu的时间
- 0.0 si(software interrupts):软中断所用的cpu的时间
- 0.0 st(stolen):虚拟机相关管理所窃取(stolen)的cpu时间
Kib Mem
- 492968 total:总内存量
- 19324 free:剩余的内存量
- 139548 used:已被使用的内存量
- 334096 buff/cache:被用于缓冲/缓存的内存量
Kib Swap
- 969964 total:总分区量
- 969964 free:剩余的分区量
- 0 used:已被使用的分区量
- 337036 avail Mem:目前可用的内存量
进程列表(all,进入top界面可以按f来选择显示列)
- PID(Process ID):进程id
- PPID(Parent Process ID):父进程id
- UID(Effective User Id):运行该进程的用户id
- USER(Effective User Name):运行该进程的用户
- GID(Group Id):运行该进程的用户的所属组id
- GROUP(Group Name):运行该进程的用户的所属组名称
- PGRP(Process Group Id):该进程的所属组id,若跟PID一致时,说明此进程为领头进程
- RUID(Real User Id):启动该进程的真实用户id
- RUSER(Real User Name):启动该进程的真实用户
- SUID(Saved User Id):Effective User Id的一份
- SUSER(Saved User Name):Effective User Name的一份副本副本
- PR(Priority):进程的优先级
- NI(Nice Value):nice值,范围20~~20,越低优先级越高
- VIRT(Virtual Memory Size (KiB)):所用的虚拟内存总量
- RES(Resident Memory Size (KiB)):使用的物理内存总量
- SWAP(Swapped Size(Kib)):已使用的交换分区大小
- USED(Memory in Use (KiB)):已使用的物理内存总量+已使用的交换分区大小
- SHR(Shared Memory Size (KiB)):共享的物理内存总量
- S(Process Status):进程状态,包含:
- D:不可中断睡眠
- R:运行中
- S:可中断睡眠
- T:被SIGSTOP信号停止的进程
- t:受debug、跟踪trace的进程
- Z:僵尸/孤儿
- %CPU(CPU Usage):所用的cpu比
- %MEM(Memory Usage(RES)):所用的物理内存比
- TIME+:自启动以来所使用的cpu时间,显示更多粒度
- TIME:自启动以来所使用的cpu时间,只显示时分
- COMMAND(Command Name/Line):命令名称/指令
- TTY(Controlling Tty):启动该进程的终端信息,若非终端启动则会看到问号
- TPGID(Tty Process Grp Id):启动该进程的终端对应的进程id,若非终端启动则会看到问号
- SID(Session Id):会话id。若与PID一致,则说明该PID为领头进程
- nTH(Number of Threads):与进程相关联的线程数
- P(Last Used CPU(SMP)):上次使用的CPU编号
- CODE(Code Size(Kib)):可执行代码总共占用的物理内存数量
- DATA(Data+Stack(Kib)):保留的物理内存量,用于存储数据和栈。也称为数据驻留集或DRS
- nMaj(Major Page Faults Count):造成缺页异常的数量,缺少的页不存在物理内存中,需进行一次磁盘I/O
- nMin(Minor Page Faults Count):造成缺页异常的数量,但缺少的页已存在物理内存中且并没有分配给该进程,此时就会分配给它
- vMj(Major Page Fault Count Delta):据上次更新的缺页异常数量,具体参考nMaj
- vMn(Minor Page Fault Count Delta):据上次更新的缺页异常数量,具体参考nMin
- nDRT(Dirty Pages Count):距离上次刷盘总共的脏页数
- WCHAN(Sleeping in Function):若此进程处于S睡眠状态,则会显示对应的睡眠内核函数。非睡眠将显示破折号-
- Flags(Task Flags):用于表示当前调度该任务(进程)的标志,以十六位进制展示
- CGROUPS(Control Groups):进程所属的控制组名称。用于统一管理控制组下的所有进程的物理资源(CPU内存等)。若进程没有所属的控制组时将显示破折号-
- CGNAME(Control Group name):
- SUPGIDS(Supplementary Group IDs):附加的所属组id集合
- SUPGRPS(Supplementary Groups Names):附加的所属组集合
- TGID(Thread Group Id):进程所属的线程组id,对于领头进程,该值等于PID
- OOMa(Out of Memory Adjustment Factor):内存不足时用于增加分数的阈值(范围-1000~1000)
- OOMs(Out of Memory Score):当前分数。在内存耗尽时会根据分数来选择"杀掉"哪个进程。值0为"禁止杀掉",1000为"每次杀掉"
- ENVIRON(Environment vars):该进程的所有环境变量,没有则显示破折号-
- nsIPC(IPC namespace Inode):不同IPC namespace无法通过部分IPC通信(共享内存、信号量、消息队列)
- nsMNT(MNT namespace Inode):不同MNT namespace对应不同的根文件系统,组织不同的文件系统挂载树,形成不同的文件系统目录结构
- nsNET(NET namespace Inode):每个NET namespace都有独立的网络栈,路由表、防火墙、socket等
- nsPID(PID namespace Inode):进程只能看到同个PID namespace下的其它进程
- nsUSER(USER namespace Inode):不同USER namespace都有各自的用户和用户组
- nsUTS(UTS namespace Inode):每个UTS namespace都有各自的主机名和NIS域名
- LXC(Linux Container):所属的Linux Container,若不在容器内运行则显示破折号-
- RSan(Resident Anonymous Memory Size(KiB)):匿名占用的驻留物理内存的大小,不包括交换分区
- RSfd(Resident File-Backed Memory Size(KiB)):匿名mmap文件占用的驻留物理内存大小,不包括交换分区
- RSlk(Resident Locked Memory Size(KiB)):不能交换分区出去的驻留物理内存
- RSsh(Resident Shared Memory Size(KiB)):驻留的共享物理内存大小,不包括交换分区