天天看点

top命令

top命令

top

命令提供运行系统的动态实时视图,其可以显示系统摘要信息,以及当前由内核管理的进程或线程的列表,显示的系统摘要信息的类型以及为任务显示的信息的类型、顺序和大小都是用户可配置的。

语法

top -hv | -bcHisS -d delay -n limit -u|U user | -p pid -w [cols]
           

参数

  • -h

    : 输出帮助信息。
  • -v

    : 输出版本信息。
  • -b

    : 以批处理模式启动

    top

    ,这对于从

    top

    向其他程序或文件发送输出很有用,在这种模式下,

    top

    将不接受输入并运行,直到您使用'

    -n

    '命令行选项设置了迭代次数限制或终止为止。
  • -c

    : 以倒转最后一个记忆中的

    c

    状态开始,因此如果

    top

    显示命令行,那么现在该字段将显示程序名,反之亦然。
  • -d interval

    : 指定屏幕更新之间的延迟,并覆盖个人配置文件中的相应值或启动默认值,启动后也可以使用

    d

    s

    交互命令更改。
  • -H

    : 指示

    top

    显示各个线程,如果没有此命令行选项,则显示每个进程中所有线程的总和,启动后可以使用

    H

  • -i

    : 空闲进程切换,以倒转最后一个记忆中的

    i

    状态开始,关闭此切换时,将不显示自上次更新以来未使用任何

    CPU

    的任务。
  • -n limit

    : 指定

    top

    在结束前应产生的最大迭代次数或帧数。
  • -o

    : 指定将对任务进行排序的字段的名称,与配置文件中反映的内容无关,您可以在字段名前面加上

    +

    -

    ,以覆盖排序方向,前导

    +

    将强制从高到低排序,而

    -

    将确保从低到高排序,此选项主要用于支持自动脚本化批处理模式操作。
  • -O

    : 此选项作为上述

    -o

    选项的帮助形式,它将使

    top

    在单独的一行中打印每个可用的字段名,然后退出。
  • -p pid

    : 仅监视具有指定进程

    ID

    的进程,此选项最多可以给予

    20

    次,也可以提供一个逗号分隔的列表,其中最多包含

    20

    PID

    ,允许两种方法混合使用,

    pid

    值为零将被视为

    top

    程序运行时的进程

    id

    ,这只是一个命令行选项,如果您希望返回正常操作,则无需退出并重新启动

    top

    ,只需发出以下任何交互式命令

    =

    u

    U

    ,对于

    p

    u

    U

    命令行选项是互斥的。
  • -s

    : 安全模式操作,以强制的安全模式启动

    top

    ,即使对于

    root

    也是如此,通过系统配置文件可以更好地控制此模式。
  • -S

    : 累计时间切换,以倒转最后一个记忆中的

    S

    状态开始,当累计时间模式打开时,每个进程都会列出它及其子进程使用的

    cpu

    时间。
  • -u user-id-or-name, -U user-id-or-name

    : 仅显示用户

    id

    或用户名与给定进程匹配的进程,

    -u

    选项匹配有效用户,而

    -U

    选项匹配任何用户

    real

    effective

    saved

    filesystem

    ,在感叹号

    !

    前面加上前缀用户

    id

    或名称指示

    top

    仅显示用户与提供的进程不匹配的进程,

    p

    u

    U

  • -w number

    : 在批处理模式下,如果没有参数,

    top

    将使用

    COLUMNS=

    LINES=

    环境变量(如果设置)格式化输出,否则,宽度将固定在最大

    512

    列,通过一个参数,可以减少或增加输出宽度(最多

    512

    行),但行数被认为是无限的,在正常显示模式下,如果没有参数,

    top

    将尝试使用

    COLUMNS=

    LINES=

    环境变量(如果设置)格式化输出,对于参数,输出宽度只能减小,不能增大,无论是使用环境变量还是带有

    -w

    的参数,当不处于批处理模式时,都不能超过实际的终端维度,注意如果不使用此命令行选项,输出宽度始终基于调用

    top

    的终端,无论是否处于批处理模式。

操作

以下启动默认值操作假定没有相关配置文件,即没有用户自定义,此外带星号

*

的项目可以通过命令行覆盖。

  • ^Z

    : 挂起。
  • fg

    : 恢复挂起的命令。
  • <Left>

    : 强制屏幕重绘。
  • A

    : 交叉显示,默认全屏显示。
  • d

    :

    *

    延迟时间,默认为

    3s

  • H

    *

    线程模式,默认关闭。
  • I

    Irix

    模式,默认开启。
  • p

    *

    监控

    PID

    ,默认显示所有进程。
  • 1

    : 查看服务器的

    cpu

    逻辑数。
  • M

    : 根据驻留内存大小进行排序。
  • P

    : 根据

    CPU

    使用百分比大小进行排序。
  • T

    : 根据时间

    /

    累计时间进行排序。
  • c

    : 切换显示命令名称和完整命令行。
  • t

    : 切换显示进程和

    CPU

    信息。
  • m

    : 切换显示内存信息。
  • l

    : 切换显示平均负载和启动时间信息 。
  • o

    : 改变显示项目的顺序。
  • f

    : 从当前显示中添加或删除列项目。
  • S

    : 切换到累计模式。
  • s

    : 改变两次刷新之间的延迟时间,系统将提示用户输入新的时间,单位为

    s

    ,如果有小数,就换算成

    ms

  • q

    : 退出

    top

    命令。
  • i

    : 忽略闲置和僵尸进程。
  • k

    : 终止一个进程。

相关信息

概览

  • total

    : 进程总数。
  • running

    : 正在运行的进程数。
  • sleeping

    : 睡眠的进程数。
  • stopped

    : 停止的进程数。
  • zombie

    : 僵尸进程数。

CPU信息

  • us

    : 用户空间占用

    CPU

    百分比。
  • sy

    : 内核空间占用

    CPU

  • ni

    : 用户进程空间内改变过优先级的进程占用

    CPU

  • id

    : 空闲

    CPU

  • wa

    : 等待输入输出的

    CPU

    时间百分比。
  • hi

    : 硬件

    CPU

    中断占用百分比。
  • si

    : 软中断占用百分比。
  • st:

    虚拟机占用百分比。

列字段

可以使用

f

交互命令自定义列的位置及其是否可显示。

  • %CPU

    CPU Usage

    CPU

    使用率,任务自上次屏幕更新以来占用的

    CPU

    时间份额,表示为总

    CPU

    时间的百分比,在真正的

    SMP

    环境中,如果一个进程是多线程的,并且

    top

    不是以线程模式运行的,那么可能会报告大于

    100%

    的数量,您可以使用

    H

    交互命令切换线程模式,同样对于多处理器环境,如果

    Irixmode

    处于关闭状态,

    top

    将在

    Solarismode

    下运行,其中任务的

    cpu

    使用量将除以

    cpu

    总数,您可以使用

    I

    交互命令切换

    Irix/Solaris

    模式。
  • %MEM

    Memory Usage (RES)

    ,内存使用情况,任务当前使用的可用物理内存共享。
  • CGROUPS

    Control Groups

    ,控制组,流程所属的控制组的名称,如果不适用于该流程,则为

    -

    ,控制组用于在安装定义的进程组之间分配资源(

    cpu

    、内存、网络带宽等),它们支持对这些资源的分配、拒绝、优先排序、管理和监视进行细粒度控制,一个系统上可以同时存在许多不同的

    cgroup

    层次结构,并且每个层次结构都连接到一个或多个子系统,子系统表示单个资源,注意

    : CGROUPS

    字段与大多数列不同,不是固定宽度的,显示时,它加上任何其他可变宽度列将分配所有剩余屏幕宽度(最多

    512

    个字符),即便如此,这种可变宽度的字段仍然会受到截断。
  • CODE

    Code Size (KiB)

    ,代码大小

    KiB

    ,用于可执行代码的物理内存量,也称为文本驻留集大小或

    TRS

  • COMMAND

    Command Name or Command Line

    ,命令名或命令行,显示用于启动任务的命令行或关联程序的名称,您可以使用

    c

    在命令行和名称之间切换,这既是一个命令行选项,也是一个交互式命令,当您选择显示命令行时,没有命令行的进程(如内核线程)将只显示程序名,此字段也可能受视图显示模式的影响,注意

    COMMAND

    512

    个字符),即便如此,这种可变宽度的字段仍然会受到截断,当显示命令行时,此字段尤其如此。
  • DATA

    Data + Stack Size (KiB)

    ,用于可执行代码以外的物理内存量,也称为数据驻留集大小或

    DRS

  • ENVIRON

    Environment variables

    ,显示各个进程看到的所有环境变量(如果有),这些变量将以原始的本机顺序显示,而不是您习惯于用非限定的

    set

    看到的排序顺序,注意

    ENVIRON

    512

  • Flags

    Task Flags

    ,此列表示任务的当前调度标志,这些标志以十六进制表示,并且不包含零,这些标志正式记录在

    <linux/sched.h>

    中。
  • GID

    Group Id

    ,有效组

    ID

  • GROUP

    Group Name

    ,有效组名。
  • NI

    Nice Value

    ,负的

    nice

    值意味着更高的优先级,而正的

    nice

    值意味着更低的优先级,此字段中的零表示在确定任务的调度能力时不会调整优先级。
  • P

    Last used CPU (SMP)

    ,表示最后使用的处理器的数字,在真正的

    SMP

    环境中,这可能会频繁更改,因为内核有意使用弱关联,另外,运行

    top

    的行为可能会破坏这种弱关联,并导致更多进程更频繁地更改

    cpu

    (因为对

    cpu

    时间的额外需求)。
  • PGRP

    Process Group Id

    ,每个进程都是唯一进程组的成员,该进程组用于分配信号,并由终端对其输入和输出请求进行仲裁,创建(

    fork

    )流程时,它将成为其父流程组的成员,按照约定,该值等于流程组的第一个成员(称为流程组长)的流程

    ID

  • PID

    Process Id

    ,任务的唯一进程

    ID

    ,它定期包装,但从不在零重新启动,在内核中,它是一个由

    task_struct

    定义的可调度实体,此值还可用作

    :

    进程组

    ID

    、会话负责人的会话

    ID

    、线程组负责人的线程组

    ID

    、进程组负责人的

    TTY

    ID

  • PPID

    Parent Process Id

    ,任务父进程的进程

    ID

    (

    pid

    )。
  • PR

    Priority

    ,任务的调度优先级,如果在该字段中看到

    rt

    ,则表示任务正在实时调度优先级下运行,在

    linux

    下,实时优先级有些误导,因为传统上操作本身是不可抢占的,虽然

    2.6

    内核可以被大部分抢占,但并不总是这样。
  • RES

    Resident Memory Size (KiB)

    ,任务使用的非交换物理内存。
  • RUID

    Real User Id

    ,真实用户

    ID

  • RUSER

    Real User Name

    ,真实的用户名。
  • S

    Process Status

    ,任务的状态,可以是:

    D

    不间断睡眠、

    R

    运行、

    S

    睡眠、

    T

    跟踪或停止、

    Z

    僵尸,显示为正在运行的任务应该更恰当地被认为是准备运行的——它们的任务结构只在

    Linux

    运行队列中表示,即使没有真正的

    SMP

    机器,根据

    top

    的延迟间隔和

    nice

    值,也可能会看到许多处于这种状态的任务。
  • SHR

    Shared Memory Size (KiB)

    ,一个任务可用的共享内存量,通常不是所有的内存都是驻留的,它只是反映了可能与其他进程共享的内存。
  • SID

    Session Id

    ,会话是进程组的集合,通常由登录

    shell

    建立,新

    fork

    的进程加入其创建者的会话,按照惯例,这个值等于会话的第一个成员的进程

    ID

    ,称为会话头,通常是登录

    shell

  • SUID

    Saved User Id

    ,保存的用户

    ID

  • SUPGIDS

    Supplementary Group IDs

    ,建立的或从任务父级继承的任何补充组的

    ID

    ,它们以逗号分隔的列表显示,注意

    SUPGIDS

    512

  • SUPGRPS

    Supplementary Group Names

    ,登录时建立的或从任务父级继承的任何补充组的名称,它们以逗号分隔的列表显示,注意

    : SUPGRPS

    512

  • SUSER

    Saved User Name

    ,保存的用户名。
  • SWAP

    Swapped Size (KiB)

    ,任务地址空间的非驻留部分。
  • TGID

    Thread Group Id

    ,任务所属的线程组的

    ID

    ,它是线程组负责人的

    PID

    ,在内核术语中,它表示那些共享

    mm_struct

  • TIME

    CPU Time

    ,任务自启动以来使用的总

    CPU

    时间,当累积模式打开时,每个进程都会列出它及其子进程使用的

    cpu

    时间,使用

    S

    切换累积模式,这既是命令行选项,也是交互式命令,有关此模式的其他信息,请参阅

    S

    交互命令。
  • TIME+

    CPU Time, hundredths

    ,与

    Time

    相同,但通过百分之一秒反映出更多的粒度。
  • TPGID

    Tty Process Group Id

    ,连接的

    tty

    的前台进程的进程组

    ID

    ,如果进程未连接到终端,则为

    -1

    ,按照惯例,此值等于流程组长的流程

    ID

  • TTY

    Controlling Tty

    ,控制终端的名称,这通常是启动进程的设备(串口、

    pty

    等),并用于输入或输出,但是,任务不需要与终端相关联,在这种情况下,您将看到

    ?

    显示。
  • UID

    User Id

    ,任务所有者的有效用户

    ID

  • USED

    Memory in Use (KiB)

    ,此字段表示任务已使用的非交换物理内存(

    RES

    )加上其地址空间(

    SWAP

    )的非驻留部分。
  • USER

    User Name

    ,任务所有者的有效用户名。
  • VIRT

    Virtual Memory Size (KiB)

    ,任务使用的虚拟内存总量。它包括所有代码、数据和共享库,以及已调出的页面和已映射但未使用的页面。
  • WCHAN

    Sleeping in Function

    ,取决于内核链接映射的可用性系统地图),此字段将显示任务当前休眠的内核函数的名称或地址,正在运行的任务将在此列中显示一个破折号

    -

    ,通过显示此字段,

    top

    自己的工作集可以增加

    700Kb

    以上,具体取决于内核版本,如果发生这种情况,减少开销的唯一方法就是停止并重新启动

    top

  • nDRT

    Dirty Pages Count

    ,自上次写入辅助存储器以来已修改的页数,

    dirty pages

    必须先写入辅助存储器,然后才能将相应的物理内存位置用于其他虚拟页。
  • nMaj

    Major Page Fault Count

    ,任务发生的主要页错误数,当进程试图读取或写入其地址空间中当前不存在的虚拟页时,会发生页错误,一个主要的页面错误是当辅助存储访问涉及到使该页面可用时。
  • nMin

    Minor Page Fault count

    ,任务发生的次要页面错误数,当进程试图读取或写入其地址空间中当前不存在的虚拟页时,会发生页错误,在使该页可用时,较小的页错误不涉及辅助存储器访问。
  • nTH

    Number of Threads

    ,与进程关联的线程数。
  • nsIPC

    IPC namespace

    ,用于隔离进程间通信(

    IPC

    )资源(如

    SystemVIPC

    对象和

    POSIX

    消息队列)的命名空间的

    Inode

  • nsMNT

    MNT namespace

    ,命名空间的

    Inode

    ,用于隔离文件系统装入点,从而提供文件系统层次结构的不同视图。
  • nsNET

    NET namespace

    Inode

    ,用于隔离网络设备、

    IP

    地址、

    IP

    路由、端口号等资源。
  • nsPID

    PID namespace

    Inode

    ,用于隔离进程

    ID

    号,这意味着它们不必保持唯一,因此,每个这样的名称空间都可以有自己的

    init

    PID#1

    )来管理各种初始化任务并获取孤立的子进程。
  • nsUSER

    USER namespace

    ,用于隔离用户和组

    ID

    号的命名空间的

    Inode

    ,因此,一个进程可以在用户名称空间外有一个普通的未授权用户

    ID

    ,而在该名称空间内有一个具有完全根权限的用户

    ID0

  • nsUTS

    UTS namespace

    ,用于隔离主机名和

    NIS

    域名的命名空间的

    Inode, UTS

    的意思是

    UNIX

    分时系统。
  • vMj

    Major Page Fault Count Delta

    ,自上次更新以来发生的主要页错误数。
  • vMn

    Minor Page Fault Count Delta

    ,自上次更新以来发生的次要页面错误的数量。

示例

显示进程信息。

top
           

显示完整命令。

top -c
           

以批处理模式显示程序信息。

top -b
           

以累积模式显示程序信息。

top -S
           

设置信息更新次数,表示更新两次后终止更新显示。

top -n 2
           

设置信息更新时间,表示更新周期为

3

秒。

top -d 3
           

显示指定的进程信息,

CPU

、内存占用率等。

top -p 131
           

不能利用交互式指令来对进程下命令。

top -s
           

每日一题

https://github.com/WindrunnerMax/EveryDay
           

参考

https://www.computerhope.com/unix/top.htm
https://www.commandlinux.com/man-page/man1/top.1.html
https://www.geeksforgeeks.org/top-command-in-linux-with-examples/
           
下一篇: ip命令