热门标签 | 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键,还可以自定义显示哪些列。

在这里插入图片描述


推荐阅读
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • Shell参数详解与应用
    本文详细介绍了Shell参数的种类及其应用,内容简洁明了,结构清晰。通过深入解析各类参数的功能和使用方法,旨在帮助读者更好地理解和掌握Shell编程技巧,提升实际操作能力。 ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 本书详细介绍了在最新Linux 4.0内核环境下进行Java与Linux设备驱动开发的全面指南。内容涵盖设备驱动的基本概念、开发环境的搭建、操作系统对设备驱动的影响以及具体开发步骤和技巧。通过丰富的实例和深入的技术解析,帮助读者掌握设备驱动开发的核心技术和最佳实践。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • TCP三次握手过程详解与图示解析
    本文详细解析了TCP三次握手的过程,并通过图示清晰展示了各个状态的变化。同时,文章还介绍了四次挥手的图解,解释了在TIME_WAIT状态中,客户端最后一次发送的ACK包的作用和重要性。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 【Linux进阶指南】第一阶段第三课:体验与部署Ubuntu系统
    在正式踏上Linux学习之旅之前,本课程将引导你深入体验和部署Ubuntu系统。通过详细的操作步骤和实践演练,你将掌握Ubuntu的基本安装、配置及常用命令,为后续的进阶学习打下坚实的基础。此外,课程还将介绍如何解决常见问题和优化系统性能,帮助你更加高效地使用Ubuntu。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 本文详细探讨了MySQL并发参数的优化与调整方法,旨在帮助读者深入了解如何通过合理配置这些参数来提升数据库性能。文章不仅介绍了常见的并发参数及其作用,还提供了实际操作中的调整策略和最佳实践,适合希望提高数据库管理技能的技术人员阅读。 ... [详细]
  • 如何在电脑上设置两小时后自动关机及解决无法开机的问题 ... [详细]
  • 字节跳动青训营:Go语言进阶培训与依赖管理深入解析
    本文详细探讨了字节跳动青训营中关于Go语言进阶培训的核心内容,重点讲解了并行与并发的区别、Goroutine的使用、CSP模型及Channel机制在并发安全中的应用,并介绍了LockWithGroup的实现方式。此外,文章还深入解析了Go语言的依赖管理机制,包括GoPath、GoVendor和GoModule的使用方法及其在依赖分发和回源过程中的作用。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
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社区 版权所有