引言     

使用top命令,可以查看正在运行的进程和系统负载信息,包括cpu负载、内存使用、各个进程所占系统资源等,top可以以一定频率更新这些统计信息。下面我们来学习top命令的具体使用方法。

默认输出

top命令的默认输出如下:

top - :: up :,   users,  load average: 1.48, 1.47, 1.39
Tasks:  total,    running,  sleeping,    stopped,    zombie
Cpu(s):  0.1%us,  2.5%sy,  0.0%ni, 97.2%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:     15945M total,     1726M used,    14219M free,       48M buffers
Swap:     8197M total,        0M used,     8197M free,     1196M cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    root                       R  :
 root           273m  67m  11m S  : root                      S  :45.68 kipmi0
 root     -      19m  S  :16.06 had
 root      RT                 S  :

以上输出上下分成两部分,上半部分显示了整体系统负载情况,各行含义如下:

  • top一行:从左到右依次为当前系统时间,系统运行的时间,系统在之前1min、5min和15min内cpu的平均负载值
  • Tasks一行:该行给出进程整体的统计信息,包括统计周期内进程总数、运行状态进程数、休眠状态进程数、停止状态进程数和僵死状态进程数
  • Cpu(s)一行:cpu整体统计信息,包括用户态下进程、系统态下进程占用cpu时间比,nice值大于0的进程在用户态下占用cpu时间比,cpu处于idle状态、wait状态的时间比,以及处理硬中断、软中断的时间比
  • Mem一行:该行提供了内存统计信息,包括物理内存总量、已用内存、空闲内存以及用作缓冲区的内存量
  • Swap一行:虚存统计信息,包括交换空间总量、已用交换区大小、空闲交换区大小以及用作缓存的交换空间大小

下半部分显示了各个进程的运行情况,各列含义如下:

  • PID: 进程pid
  • USER: 拉起进程的用户
  • PR: 该列值加100为进程优先级,若优先级小于100,则该进程为实时(real-time)进程,否则为普通(normal)进程,实时进程的优先级更高,更容易获得cpu调度,以上输出结果中,java进程优先级为120,是普通进程,had进程优先级为2,为实时进程,migration 进程的优先级RT对应于0,为最高优先级
  • NI: 进程的nice优先级值,该列中,实时进程的nice值为0,普通进程的nice值范围为-20~19
  • VIRT: 进程所占虚拟内存大小(默认单位kB)
  • RES: 进程所占物理内存大小(默认单位kB)
  • SHR: 进程所占共享内存大小(默认单位kB)
  • S: 进程的运行状态
  • %CPU: 采样周期内进程所占cpu百分比
  • %MEM: 采样周期内进程所占内存百分比
  • TIME+: 进程使用的cpu时间总计
  • COMMAND: 拉起进程的命令

top命令默认输出提供了很多信息,为获取我们关注的信息,可以使用top命令选项,也可以在top运行中使用快捷键过滤输出信息、根据cpu使用率等值对进程进行排序,下面给出具体使用例子。

对输出结果进行排序

top输出的下半部分有很多进程信息列,我们可以根据这些列对进程输出进行排序,默认情况下根据cpu使用率对进程排序。在top命令执行时,按”O”,可以看到排序项以及相应的按键:

Current Sort Field:  K  :Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id
  b: PPID       = Parent Process Pid
  c: RUSER      = Real user name
  d: UID        = User Id
  ……

各项默认以从大到小排序,top运行中,按”R”可反向显示输出结果。

显示特定用户相关进程

在top运行时,按”u”快捷键,可以过滤出特定用户拉起的进程:

Which user (blank for all): sshusr
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 sshusr              R  :26.05 a.out
 sshusr           S  :00.00 sash
 sshusr           S  :00.04 bash

执行top命令时,使用”top -u sshusr”可以起到相同效果。

显示特定进程

执行top时,使用”-p”选项可以指定要显示的进程:

# top -p ,
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 sshusr              R  :03.57 a.out
 sshusr           S  :00.00 sshd

显示所有cpu核使用情况

默认情况下,top上半部分资源负载信息中,显示的是cpu整体的使用情况:

top - :: up :,   users,  load average: 2.02, 2.12, 2.17
Tasks:  total,    running,  sleeping,    stopped,    zombie
Cpu(s):  8.5%us,  2.4%sy,  0.0%ni, 88.9%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st

按数字”1”快捷键,可以开启/关闭显示各个cpu核的信息:

Cpu0  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%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.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

更改top命令显示频率

默认情况下,top命令以3秒的频率更新输出结果,top命令执行时,按”d”可以更新top更新频率:

Change delay from
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 sshusr              R  :53.58 a.out
    root                       R  :

执行top命令时,使用”-d”选项也可以指定top输出跟新频率。另外,按空格键,可以手动更新输出。

显示命令的全路径和参数

top运行时,按”c”快捷键,将显示命令的全路径以及命令参数:

 sshusr              R  :40.02 ./a.out
 root           220m   S  :48.42 /opt/HPI/HPI_ALARM/runHpiAlarm
 root              S  :51.01 /opt/VRTSvcs/bin/HostMonitor -type HostMonitor -agdir /

指定显示的进程数目

top默认依据窗口大小显示进程数,有时我们对进程排序后,只想关注排在前面的几个进程,使用”-n”快捷键可以达到目的:

Maximum tasks = , change to ( is unlimited):
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
     root                       R  :
 root           220m   S  :17.93 runHpiAlarm

在top中向进程发送信号

top运行时,按”k”快捷键,可向指定进程发送信号,默认信号为SIGTERM,该信号可中止进程:

PID to
Kill PID  with signal []:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 sshusr             R  :33.45 a.out
    root                       R  :

更改进程的nice优先级值

top运行时,按”r”快捷键,可以修改指定进程的nice优先级:

PID to
Renice PID  to value:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 sshusr              R  :03.96 a.out
 root                       R  :

保存top配置

为看到我们关注的进程、信息,用了很多快捷键,若下次运行top时,想要看到之前关心的内容,又要敲一遍快捷键,这相当不方便。使用”W”快捷键,可以把当前显示配置保存到~/.toprc文件中。

例如以1秒的频率查看前10个占用内存最多的进程,我们需要敲下列快捷键:


n: Maximum tasks = , change to ( is unlimited): 
M: 快捷键”M”指示进程根据内存使用率从大到小排序 

之后按下”W”可以对配置进行保存:

W: Wrote configuration to '/root/.toprc'

退出再执行top命令,可以看到top以1秒的频率查看前10个占用内存最多的进程,与我们之前保存的配置相符。

Reference: Can You Top This? 15 Practical Linux Top Command Examples

使用top查看进程和系统负载信息的更多相关文章

  1. linux中使用top获取进程的资源占用信息

    在linux中使用top获取进程的资源占用信息: Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 98.3%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0 ...

  2. 查询系统负载信息 Linux 命令详解

    linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令过去只显示系统运行多久.现在,可以显示系统已经运行了多长 时间,信息显示依次为:现在时间.系统已经运 ...

  3. Linux 命令查询系统负载信息

    linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令过去只显示系统运行多久.现在,可以显示系统已经运行了多长 时间,信息显示依次为:现在时间.系统已经运 ...

  4. linux uptime-查看Linux系统负载信息

    更多linux 性能监测与优化 关注:linux命令大全 uptime命令能够打印系统总共运行了多长时间和系统的平均负载.uptime命令可以显示的信息显示依次为:现在时间.系统已经运行了多长时间.目 ...

  5. top查看进程的参数

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不 ...

  6. [kipmi0]进程导致系统负载高

    最近一个用户这边服务器运行四五天就会出现服务器负载很高的情况,原本正常是0.3~0.5左右  不正常的时候会达到3,重启机器就正常,开始以为是程序问题,后来在观察的时候把程序给杀掉了 然后重启,结果负 ...

  7. 转:[kipmi0]进程导致系统负载高

    最近一个用户这边服务器出现服务器负载很高的情况,原本正常是0.3~0.5左右  不正常的时候会达到3,重启机器就正常,开始以为是程序问题,后来在观察的时候把程序给杀掉了 然后重启,结果负载还是很高,于 ...

  8. linux中uptime命令获取主机运行时间和查询系统负载信息

    系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系 ...

  9. 查看XBox360的系统版本信息

    XBox360的系统版本信息在系统设置界面就能看到: Step1:按手柄中央的"西瓜键",进入系统设置界面 Step2:在系统设置界面选择"主机设定" Step ...

随机推荐

  1. 我在工作中遇到的redis集群使用

    写次随笔,给自己工作学习中记录一个笔记 废话不多说,直接上代码: 功能:将相关信息存到redis中,并设置过期时间,如果redis中有,从redis获取,如果没有,从mysql中获取.redis配置了 ...

  2. SpringBoot使用Docker快速部署项目

    1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器 ...

  3. django基础知识之定义模板:

    定义模板 模板语言包括 变量 标签 { % 代码块 % } 过滤器 注释{# 代码或html #} 变量 语法: {{ variable }} 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出 ...

  4. C#中的委托和事件(下篇)

    上次以鸿门宴的例子写了一篇博文,旨在帮助C#初学者迈过委托和事件这道坎,能够用最快的速度掌握如何使用它们.如果觉得意犹未尽,或者仍然不知如何在实际应用中使用它们,那么,这篇窗体篇,将在Winform场 ...

  5. [最全算法总结]我是如何将递归算法的复杂度优化到O(1)的

    相信提到斐波那契数列,大家都不陌生,这个是在我们学习 C/C++ 的过程中必然会接触到的一个问题,而作为一个经典的求解模型,我们怎么能少的了去研究这个模型呢?笔者在不断地学习和思考过程中,发现了这类经 ...

  6. 浅谈 Attention 机制的理解

    什么是注意力机制? 注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制.例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目 ...

  7. WinForm控件之【DateTimePicker】

    基本介绍 时间控件应用较为广泛,属性设置项也比较完善是非常好用的控件. 常设置属性.事件 CustomFormat:当Format属性设置为自定义类型时可自定义控件时间的显示格式: Enabled:指 ...

  8. NET Core CSharp初级篇 1-3面向对象

    .NET Core CSharp初级篇 1-3 本节内容为面向对象初级教程 类 简介 面向对象是整个C#中最核心最有特色的一个模块了,它很好的诠释了程序与现实世界的联系. 面向对象的三大特征:继承.多 ...

  9. 黑羽压测 比 jmeter、locust、loadrunner 更简便,性能更强

    视频讲解 点击下方链接,观看 讲解视频 https://www.bilibili.com/video/av60089015/ 动机 目前市场上对API接口做性能测试工具有 Jmeter.LoadRun ...

  10. IDEA中使用mybatis逆向工程

    如果使用过mybatis的人就会发现,当我们使用mybatis时,我们每次都需要自己手动创建实体类,映射文件(当然你也可以用注释),还有接口来进行使用,这样手动创建非常的繁琐,mybatis考虑到这方 ...