热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

top命令使用方法及解读

本文介绍了top命令的使用方法和解读,包括查看进程信息、系统负载、内存状态、CPU占用等内容。通过top命令可以持续观察系统上运行的进程,并了解系统负载情况,及时关闭一些进程以减轻系统负担。同时,还介绍了top命令的快捷键和安全模式启动方法。通过本文的学习,读者可以更好地使用top命令来管理系统进程。

top命令主要用来观察和收集运行在系统上的进程的一些有用信息。ps只是一个快照,是ps命令执行的那一瞬间的系统中进程的快照。top则可以用于持续观察。

第一步,在命令行键入top,回车进入top管理界面。
在这里插入图片描述

第一行其实和uptime的执行效果是一样的。
在这里插入图片描述

分析一下,12:48:06是当前运行这个命令的时候,机器的时间。 up 134 days, 19:36,指的是说这台机器,持续运行了134天了,启动于134天前的19:36。 5 users代表的是当前运行这个命令的时候,这台机器上总共登陆有5个用户(这个可以执行who命令查看当前具体是哪些用户登陆这个系统)。最后的load average代表的是运行最近的1分钟,5分钟,15分钟的系统平均负载,平均负载是啥意思呢?平均负载就是指运行进程队列中的平均数量。假如你的cpu是1核的,那么0.1-1.0之间代表正常,超过1.0代表有进程在1秒内不能被处理,就是比如1核cpu一秒钟可以运行完成100个进程,而现在在运行队列中的进程数量是100,那么就说明系统负载是1.0 。如果1秒钟内有120个进程在等待,那么就是1.2,这时候,系统是来不及处理的,cpu处于100%运转状态也运行不完这么多进程。这个时候就说明系统的负担太重了。如果双核cpu的话,有两个可运行内核,这时候,0.0-2.0是正常的,4核的cpu,0.0-4.0是正常的。一般参考5分钟和15分钟,如果这两个中有一个数值太高了,就需要去分析一下了,及时关闭一些进程。那么还有一个问题,怎么知道我的电脑是几个核的?这时候就可以使用这个命令:grep ‘model name’ /proc/cpuinfo | wc -l

下图是查看一下当前是具体哪5个用户在使用这台机器:

在这里插入图片描述

下图是我的机器配置,运行 grep ‘model name’ /proc/cpuinfo | wc -l 可以看到,我的计算机现在是2核的。

在这里插入图片描述

接下来分析top命令输出的第二行:
在这里插入图片描述

第二行显示的是进程的概要信息,top命令中的tasks就是进程的意思。Tasks: 133 total代表的是当前有133个进程,2 running代表的是当前正在运行的进程的个数是2个,130sleeping代表130个进程处于休眠状态。休眠状态是啥?休眠(被阻塞)的进程处于一个特殊的不可执行状态。进程休眠由多种原因,但肯定都是为了等待一些事件。事件可能是一段时间从文件I/O读取更多数据,或者是某个硬件事件。一个进程还由可能在尝试获取一个已被占用的内核信号量时被迫进入休眠。休眠的一个常见原因就是文件I/O —— 如进程对一个文件执行了read()操作,而这需要从磁盘里读取。还有,进程在获取键盘输入的时候也需要等待。无论哪种情况,内核的操作都相同:进程把自己标记成休眠状态,从可执行红黑树中移出,放入等待队列,然后调用schedule()选择和执行一个其他进程。唤醒的过程刚好相反:进程被设置为可执行状态,然后再从等待队列中移到可执行红黑树中。stopped代表的意思是进程处于停止状态,stopped代表这个进程执行完成了,退出了,不会再被调度了。zombie进程代表僵尸进程。僵尸进程,一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它 的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。在Linux进程的状态中,僵尸进程是非常特殊的一种,它已 经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵 尸进程不再占有任何内存空间。它需要它的父进程来为它收尸,如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程 结束,又没有显式忽略该信号,那么它就一直保持僵尸状态,如果这时父进程结束了,那么init进程自动 会接手这个子进程,为它收尸,它还是能被清除的。但是如果如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是为什么系统中有时会有很多的僵尸进程。

接下来分析top命令输出的第三行:
在这里插入图片描述

第三行是从各种角度分析cpu当前的运行状态。1.2%us代表的是用户进程当前占用了1.2%的cpu时间。1.0%sy代表的是系统进程当前占用了1.0%的cpu时间。ni

代表用户进程空间内改变过优先级的进程占用CPU百分比。id代表空闲cpu百分比。wa代表等待输入输出的cpu时间百分比。

紧跟着的两行说明了系统内存的状态,第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲,后一行说明的是系统交换空间总共有多少内存,当前用了多少,还有多少空闲。

最后一部分现实了当前运行的进程的详细列表:

PID:进程的ID
USER:进程属主的名字

PR:进程的优先级
NI:进程的nice值(介于-20 到 +19之间,值越大,越谦让)

VIRT:进程占用的虚拟内存总量
RES:进程占用的物理内存总量

SHR:进程和其他进程共享的内存总量
S:进程的状态(D代表可终端的休眠状态,R代表在运行的状态,S代表休眠状态,T代表跟踪状态或停止状态,Z代表僵化状态)

%CPU:进程使用的CPU时间比例

%MEM:进程实用的内存占可用内存的比例

TIME+:自进程启动到目前为止的CPU时间总量

COMMAND:进程所对应的命令行名称,也就是启动的程序名。

快捷键:

top界面按d键,可以更改刷新时间。默认3秒。

top界面按M键,可以按照内存来进行排序。

top界面按P键,可以按照cpu使用率来排序。

top界面按i键,可以只显示状态为R的进程。

top界面按c键,可以显示进程的完整的名称。

top -s以安全模式启动top界面,可以防止在top界面对进程进行修改操作。

按shift + >键,可以依次按照PID、USER、PR·····来进行排序。

按shift + <键,可以依次按照COMMAND、TIME+、%MEM·····来进行排序。

top界面按o键,还可以自定义显示哪些列。

在这里插入图片描述


推荐阅读
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 本文介绍如何从JSON格式的文件中提取数据并将其分配给Bash脚本中的变量。我们将探讨具体的命令和工具,帮助你高效地完成这一任务。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 对于许多初学者而言,遇到总线错误(bus error)或段错误(segmentation fault/core dump)是极其令人困扰的。本文详细探讨了这两种错误的成因、表现形式及解决方法,并提供了实用的调试技巧。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 精选多款高效实用软件及工具推荐
    本文介绍并推荐多款高效实用的软件和工具,涵盖系统优化、网络加速、多媒体处理等多个领域,并提供安全可靠的下载途径。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ... [详细]
author-avatar
滚猪儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有