00:00
接下来我们要介绍的是Linux当中另外一个非常重要的命令,它也是用来监控查看当前系统进程状态的,哎,这就是传说中的top啊,这个命令其实非常的重要,也非常的好玩,那它跟看起来啊非常的像,他们都是查看当前系统进程嘛,但是区别在于的话,诶,我们看起来它更像一个快照啊,就是把当前正在活动的进程信息直接咔嚓一下拍下来,然后呢,我们使用more或者lesss啊做一个分页展示,看看里边到底是什么东西,而现在的top呢?它是一个实时的监控展示,它会给我们打开一个交互式的界面,然后实时的刷新当前的进程信息,所以这个在实际做监控啊,做运维的时候就会非常非常的重要。我们来看一下到底怎么用吧,实际使用也非常简单,直接敲top就可以打开啊,我们看到当前这个页面呢啊,它其实是在不停的变的,你看隔一隔几秒钟,隔一会儿它就会跳变一下,然后我们可以在这里看到啊,这个页面的展示主体应该分成了两大部分,首先上面这一块。
01:12
这就是当前系统运行状态和CPU内存他们占用的一些情况,是系统级别的一些信息展示,然后下边呢,呃,下边这就是当前一个表格里边列出来的就是所有的当前正在运行的进程了啊,那所以首先我们先看一下上面这些信息啊,这到底当前系统信息有哪些?首先第一个诶,当前我们看到top,这是我们当前的这个程序名称,后面给的呢,是当前的时间,现在是早上的10:26,然后后面呢是一个up up后边给了一个两小时零四分,这指的是系统启动运行之后到现在持续的时间啊,这个是十和分,有可能前面还会加上几天啊,当前我们没有天数啊,就是几小时几分钟,然后后边呢,是当前一共登录正在使用。
02:07
机器的有几个用户,有三个用户啊,那我们为什么是三个用户呢?这这里可以解释一下啊,就是我当前远程登录的这是一个用户,那大家还记得的话,我们之前在图形页面这里本身还打开了一个虚拟登录的窗口,那这里的这个root用户,这也是一个呀。那怎么哪来的第三个呢?我们要注意当前的图形化桌面环境。进来的时候也是一个root用户,哎,所以当前我们是三个用用户啊,都是root身份啊,那当然了,我这里可以直接把这个X掉啊,直接退出去,我们再看一眼诶,实时刷新这变成两个用户,所以这个还看的还是很明显啊,而且呃,通过前面我们这个时间也可以看到啊,你看零二分零五分,当前我们的这个时间是三秒钟刷新一次啊,基本上是三秒一次,默认三秒刷新一次,然后接下来我们看到后边有一个当前的平均负载有三个数。
03:05
哎,那这三个数分别表示的其实是过去的一分钟,五分钟和15分钟之内整个系统的平均负载啊,一般情况下啊,这个平均负载小于0.7的话,我们就认为这个负载是不太大,比较小的,那如果要是大于一的话,那就说明超出了当前的系统负荷了啊。这是整体的一个介绍,然后接下来呢,呃,后面还有这个task当前正在执行的任务,任务的话我们可以认为就是进程嘛,啊,我们正在运行的程序249个,有一个是running状态,大家看后面这些就是所谓的进程状态了啊,之前我们介绍state的时候,不是有对应的那些具体的状态名称吗?哎,我们看一个是双R状态,这就是我们所说的大R状态。248个是sleeping状态,而大部分都在睡觉啊,那所以就是大S状态了,然后零个stop stop,当然就是T状态了,停止,最后还有一个诶,僵尸状态zombie啊,那当然就是我们所说的这个Z状态。
04:07
所以当前我们并没有这个僵尸进程啊,所以整体来讲系统运行的状态还是很健康的。下面呢,就是对于CPU的占用了啊,那这里CPU的占用指标比较多,我们大概的可以来做一个介绍啊,首先是这个us us当然就是user了,User指的是啊,就是用户进程占用CPU的时间比,那这里所说的用户进程呢,需要注意就是默认情况下没有经过专门更改优先级的用户进程。好,所以这里有一个前置条件啊,然后后面对应的SY当然就是system啊,系统进程啊,系统进程也就是内核的kernel进程占用当前CPU时间的百分比。后面呢,这里还有一个ni ni是什么意思呢?Na是nice的前两个字母。哎,什么叫nice斯呢?呃,Nice斯可能有同学也知道啊,在这个Linux系统里边是有一个nice斯命令的啊,这个我们不详细去介绍了,但是我们知道是有它的,它可以干什么呢?它可以给我们运行的进程指定优先级,诶什么意思呢?Nice我们知道是很好啊,很很友善,很很和好这样一个意思,所以他其实意思就是说给当前的进程一个。
05:21
友善值友善度啊啊,那就表示什么意思呢?这个进程越友善,那么它的优先级就越低,它总会为别人让路。如果要是这个友善值越低,那它的优先级就越高,表示它特别的强势,所有的资源都都归我,我优先去运行,别人都给我让路啊,那所以这个是nice啊,所以这里的这个ni呢,指的就是经过我们通过这个nice调整当前的优先级之后的所有那些用户进程在CPU运行时间里边的占比啊,啊这就是不同的占比,其实我们现在基本上CPU都是闲着的啊,都是零。然后啊,后面这个ID当然我们就知道了I动啊空闲对吧,所以现在这个空闲时间几乎是100%啊,99.9差不多了啊,然后后面还有一个wa wa当然就是wait了。
06:11
Wait的前两个字母。所以它显示的就是当前。啊,等待的时间占比,那等待什么呢?等待IO操作。我们很多进程他可能本身,呃,当前我该干的活已经干完了,但是呢,我需要等待一个IO的输入输出的消息,那这个时候他就会等待,那这个时间占了多少呢?这里有一个具体的占比,我们当前也没有IO操作啊,然后下一个是hi hi,就是硬件中断software interrupt啊呃,硬件中断服务请求时间的占比,那对应的后面还有一个SI,那就是。啊,前面hi是hardware interrupt,这是硬中断服务请求时间的占比啊,那后边还有一个I,当然就是softwarere interrupt。
07:01
软中断服务请求时间的占比,另外最后还有一个STST就是stolen啊,被偷了啊,什么叫被偷了呢?就是。当前我们机器还可以进行虚拟化,被虚拟化设备占用的时间占比,那就是被虚拟机偷掉的时间啊,那那当前我们也没有再去创建虚拟机啊,所以说这个也是零。那下面就很好理解了,下面是memory,这是当前的内存占用的情况,还有swap交换内存,也就是当前的虚拟内存占用的情况,单位都是KB啊,然后我们看总共是多少,我们设置总共都是四个G嘛,然后有多少是free是空闲的状态,然后有多少是已经占用的状态,还有多少是放在缓存里边啊,所以这个整体来讲还是非常简单的。这是关于整体系统运行的状态,然后下边的那就是啊具体的进程运行的状态了,我们一个一个来看啊,首先看啊,前面这个都简单,PID当前的呃,进程的编号,然后user当前哪个用户正在调用的进程后边呢。
08:09
这里的PR啊,其实就是一个系统啊,当前任务调度的一个优先级了啊,就是priority啊,然后后边的这个ni呢,是当前进程调度运行的时候用户指定的那个nice值那个优先级啊,所以一个是任务调度的,一个是当前我们进程用户指定的那个nice值,诶这两个有点类似啊,但是呢,稍微有点区别。然后下面还有一个是VT,很明显就是virtual memory size啊,就是虚拟内存占用的大小,下面呢,Res就是实际内存物理内存占用的大小啊,Res指的是resident memory size。后面还有一个shr,这个是shared memory size,也就是共享内存当前进程,他可能把一些内容是放在共享内存里面的,就是其他的进程也可以去用,也可以去拿,诶那这一部分到底占了多少共享内存?
09:10
这些我们都是大概的做一个了解就可以了,那后面的这个S当然就是我们当前的状态了,Filters,所以你看大部分都是都是S状态,都是都是sleeping状态啊,啊,你看这里有一个运行的R,那是top,我们当前这个top,呃,程序啊,这个进程当然是在运行的,它在不停的刷新嘛,所以只有它是R状态,别的都是S状态。后面的也很简单啊,就是百分之CPU,哎,当前进程CPU计算时间的占比,然后百分之MEM memory内存的占比,后面还有time加,Time加指的是。Time,很明显这就是当前运行的时间,已经占用的CPU的总时间是多少?那这个加号指的是什么呢?那就是当前的精度是精确到我们看这是秒后边的两个百分位,也就是0.01秒精确到这个程度。
10:03
最后还有一个command,就是调用当前进程,生成当前进程的命令。整体来讲的话,跟显示的内容是差不多的啊啊,所以我们在这里所有的进程到底是什么样子,什么状态也就一目了然了。在这里呢,我们还可以做一些基本的操作啊,就是比方说啊,我们这里边你看默认它其实是有一个排序的,这是按照什么排的呢?啊,很显然我们这是按照CPU的占比来排的,你看CPU占比越大的啊,越耗时的就排在越前面,然后如果说我们想调整的话,比如说我想按照占用的内存大小来做一个排序。那这个时候我可以按下shift m,也就是大写的M。我们看到当前就变成了以啊内存占用的大小排序,诶当然了,你如果这么看的话,可能有一些它是固定的啊,比方说这个no shell啊,其实我们知道这就是我们当前是我们的那个图形化界面嘛,图形化界面啊,它的那个shell程序,或者它的这个software啊,它的这个软件,这个进程占用的内存可能是最大的,但是他可能现在不是活动的,它就它就不会动了,所以呢,我们更多关心的可能还是CPU啊,那CPU如果切过去怎么切呢?
11:12
Shift加P大写的P啊,就变成了当前CPU的占比啊,你看这个0.3的这个进程啊,啊,那当然了,我们还可以按照PID,按照当前进程号的大小去做一个。排序啊,就是从本来我们这里默认是从小到大排的啊,你看这个一号进程CM,呃,CMD,还有二号进程k redd他们是放在前面的,我们如果按下shift加N,大写N的话,那就变成了进程号从大到小去做一个排序。那当然一般情况我们还是是不加P啊,按照CPU从小从大到小去看哪一个进程最耗资源就可以了。在这里呢,当然你如果想看后面的内容,我们也可以去做一个上下键的,诶这样的一个调整,或者我们可以按page到pageup去看后边所有的信息,我们可以进行翻译,如果想要退出的话,哎,那就直接按Q退出就可以了,所以整体来讲操作还是非常简单的。
12:10
啊,那除了这个基本的信息之外啊,后面我们会想到top肯定也是还可以指定一些选项参数的,那比如说诶,这里我们可以指定一个杠D,哎,这个表示什么呢。加一个秒数,哎,那就是表示我们到底每隔几秒做一次刷新,因为之前我们看默认三秒嘛,如果我们觉得它刷新太快了,我们看看不清楚信息,你可以把它调大,如果觉得刷新太慢了,你可以调小,哎,这个都非常简单啊,加一个杠D就可以,然后呢还可以杠I,杠I指的是使当前的top。命令不显示任何闲置或者将死的进程,而闲置的话就是当前正在睡的啊呃,就是正在处于这个sleeping状态的大部分我们可能就不显示了,但是呢,它并不是说所有的S状态的都不显示,诶等一下我们看一下就知道了啊,那另外还可以就是直接杠P,通过指定对应的进程PID来监控某个专门监控某个进程的状态啊,这个其实都很简单,我们可以试一下啊,可以直接top。
13:15
杠D,比方说我们给一个一,那进去之后,大家就会发现这里我们这个跳变就非常快,一秒钟一次,一秒动一次,实时的都在更改啊,然后接下来我们按Q出去,如果是top-I的话。我们可以看到里边进程啊,几乎就没有了啊,啊然后呢,时不时会跳出来一个,然后你看到啊,有时候会包括我们这个R啊,当前运行的这个进程是在里面的,那有时候呢,还会有一些s sleeping的进程也在里面,这是怎么回事呢?它是不把闲置的进程都显示出来,闲置的都给滤掉,那闲置的标准是。从上一次显示之后。到目前这一次要显示的时候,一直都没有再去占用CPU啊,也就是说这段时间没占用CPU就是闲置的,就不显示,状态不变就不显示,所以呢,未必都是R啊,就有可能它占了一下CPU,然后又又睡了,又变成S了,是有可能的,所以你看这里边就是,呃,显示的未必是我们想到的运行状态的进程啊,但是这个显示的就会少很多,我们可以看得更清楚一点。
14:23
然后比方说我们现在这个4910啊,是我们对应的top进程啊,那假如说我们只想看它的话,这里可以直接退出去,然后做一个top-P。然后把对应的PID放在这儿啊,那当然了,我们这个操作显然是不对的,因为刚才退出top进程之后啊,现在就已经没有4910对应的那个进程了啊,那所以我们还是要换一个啊,我们还是进去先杠I,看一下当前有哪些是活跃的,我们看一个2655吧,好,然后退出去。杠P2655。我们可以看到当前监视的就是跟我shell这一个进程啊,就看他的状态,当然了,这里它其实没有太大的变化啊,我们可以看到,呃,就是当前它的所有的展示出来的具体信息,那一般情况呢,我们可能还是就不需要去针对某一个去进行监控啊,我们可能看的还是完整的信息,所以一般呢,可能比方说我们给一个杠地指定一个时间进去之后,哎,在这里看查看所有的进程就可以了,呃,那其实在里边我们也可以去做筛选啊,比如说。
15:32
我们这里想要监控某个固定用户的话,我可以按一个键盘上的U小写U直接按,诶我们看这里就有了一个提示,他说which user啊,啊就是如果说是空格,你直接回车的话,那就还是默认是所有用户,如果你想选择某一个用户的话,比方说我看一看艾特硅谷这个用户有没有,那这里没有对吧?啊,那我可以比方说我们登录一个艾特硅谷用户。然后接下来我们看现在user多了一个变成三了,然后在这里监控的时候。
16:02
艾特硅谷用户的信息就出现了啊,它是有一个SHD远程登录的进程,还有一个bash当前的控制台界面,诶,这这个就是一目了然就能看得清楚啊,啊,那当然了,如果说我们想要终止某个进程的话,在这里也可以做啊,就类似于当前我们这一个top是有和Q的所有功能的,我直接按下K。按下一个键盘上的小写K,那这里边就直接说给一个对应的PID,接下来我们就可以把某一个进程终止掉了,所以这里比如说我们想把登录的这个艾特硅谷直接踢掉,诶,那我们知道啊,直接踢他的这个控制台的bash也可以,直接踢他的远程登录的这个进程也是可以的啊,相当于都把它踢掉了,所以这里比方说,比方说我们直接给一个4950。直接踢掉,然后接下来他还需要要求我们确认一个给他发送的signal发送的信号,这个是什么呢?诶,这就是之前我们Q-L看到的那些能够发送的所有信号,我们这里可以发对应的信号名称,也可以直接发数字,发一个九,这不就是要把它Q吗?所以直接Q,你看两个进程就都没有了。
17:13
当前艾特硅谷也就退出了,所以top本身的使用还是非常方便,非常灵活的。
我来说两句