作者:滚猪儿 | 来源:互联网 | 2023-12-09 06:50
本文介绍了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键,还可以自定义显示哪些列。