00:00
那当然了,大家可能最大的问题就是PSAUX和杠EF到底又有什么区别呢?呃,接下来我们就来详细的说一说他们列出来的这些数据,这些信息到底有哪些不同啊啊,那我们在下边这个功能说明里边,就把他们每一列具体的含义都已经列出来了,接下来我们详细的做一个说明。首先,我们先来看。AUX。我们依次来查看一下当前它每一列的含义啊,首先第一个,哎,这个很简单。User当前的用户名嘛,哎,哪个用户来调用的当前这个进程,然后接下来呢,PIDPID也很简单,我们说了这是当前用户的ID嘛,用户的编号,系统给他编号,然后后面百分之CPU。这个很简单。当前用户。进程。占用CPU的百分比啊,时间的百分占比,那另外还有一个百分之MEM,当然我们知道这是memory。
01:00
的前三个字母。所以这是。当前进程占用内存空间的百分比啊,那我们看当前这个大部分的进程啊,基本上都没怎么占CPU和内存啊,所以说基本上对系统资源的占用都很小。那主要我们可能考察的内容主要就是前面这几个,然后后边还有什么呢?可能我们还会关心一下,诶,当前的进程状态是什么样的,以及当前这个进程产生这个进程我们调用的命令是什么样的,Command,最后这个command就是所谓调用这个进程的命令,然后中间的这一部分呢,我们简单的来说一说。这里的VSZ。指的是当前进程所占用的虚拟内存,然后后边的RSS指的是当前进程所占用的实际物理内存啊,就是V是virtual r是real啊啊那所以这里当前我们占用的这个大小我们可以看到啊,诶这个进程这好像虚拟内存啊,Swap分区里面的那个虚拟内存,交换分区的那个内存好像占用的更多,比物理内存占的还大,诶,那为什么物理内存都没用完,我们说这个交换分区它不是要扩充这个物理内存来使用的吗?那物理内存都没用完,怎么就开始用这个虚拟内存了呢?
02:21
诶,那其实这个主要是因为Linux内核啊,它对这个内存管理是有一整套完整的机制,它是有算法的,诶它那它一般的这个算法是怎么样呢?一般我们是要判断这个内存里边有一些页面,如果要是不常用的话,它并不是等我们把这个内存全占满了之后才把它替换到。外边的这个虚拟内存里边来,它并不是这样,它是只要判断我们当前有一些页面啊内存,我们要所做的这个操作就是置换页面嘛,有一些页面如果长时间都没有用到的话,就直接把它换到。虚拟内存里面去了,那经常使用的才保留在当前的物理内存里面,所以这样的话,我们当前对内存的占用就会更少,就会更加的高效啊,就可以尽量的把物理内存空出来,去处理更多的事情。
03:11
所以我们会发现,就是当前我们在调度的过程当中呢,就会出现啊,有可能我们当前这个进程大部分页面,它其实都是好长时间不用了,那就全部被置换到虚拟内存里边了。真正停留在物理内存里边,正在平常频繁使用的可能反而是少数啊。呃,可能有同学也听说过,就是操作系统里边啊,一般这个内核做内存页面置换,它用的算法是什么呢?就是所谓的LRU。就是list recently used,就是最近最少使用的这样的一个规则啊,啥意思呢,就是说最近一段时间内使用的最少的。那个页面我们就直接把它踢出去,然后交换到虚拟内存空间里面去啊,因为你越长时间没用过,接下来用的概率就越小嘛,诶直接把他踢出去就没问题,这是对于这个内存置换算法的一个扩展啊,大家可以做一个了解,然后后边还有一个。
04:14
选项是TT啊TTY这个其实所谓的就是我们当前的终端。它显示的就是我们这条命令,或者说当前的这个进程是使用哪个终端去进行调用的,哎,那当然了,这里边如果是问号的话啊,那当然就表示它没有任何的终端啊,它其实是直接在我们这个后台的一个服务啊,直接提起来的啊,那这里有没有其他的终端呢?真正使用终端的进程呢,我们按着空格向下翻页,来仔细的找一找。哦,这里如果我们仔细看的话啊,这里可能显示的有点不太清楚,因为后边的这个命令有点太长了,在这里我们看啊,前面这还是问号,这里其实就多了一个终端,叫做TTY1。哦,然后我们再往下看,看看还有什么。
05:02
啊,我们看到还有终端叫PTS0啊,还有这样的终端,好几个进程都是pts杠零这样一个终端来调用的。那这表示的是什么含义呢?这里可以简单的来介绍一下这个TTY的含义啊,所谓的这个TT啊,它其实它表示这个早期的终端就是叫做tly type writer啊,就是所谓的电子打印机啊,就早期的所谓的这个交互式终端,就是一个打字机类似的一个东西啊,一个控制设备,那所以现在呢,在Linux系统里边也就把这个终端叫做TT,那当前这个TT里边它有几种不同的显示情况,一种是TTY1到六,那它表示的什么呢?就是表示的本地运行的控制台终端TTY1对于三套四七来讲啊,我们知道TTY1就是图形化的终端。哎,就是我们的那个桌面环境嘛,然后TTY2到TTY6就是本地的字符界面,中端就是我们那个大黑屏,诶之前我们在这个虚拟机上面直接按着ctrl alt,然后按F1到F6的时候,来回切换的,其实就是这个控制台终端的界面啊,这就是所谓的终端,那如果是PTS0啊,那后面还可以有PT1PTS2,一直到255,它代表的是一个虚拟终端或者叫伪终端,那它指的是什么呢?哎,其实就是我们不管是在当前的虚拟机里边去直接打开一个,诶这里去打开一个终端,还是说在前面当前的X shell里面远程登录打开一个终端,我们当前其实产生的都是一个虚拟终端啊,那刚才我们打开了一下啊,现在Q退出,然后再看一眼。
06:50
我们再看一眼当前的这个TT是不是会多一个虚拟终端啊,我们看前面这里啊,呃,这个TTY1还是存在的。然后接下来我们空格往后翻页,诶,我们看除了PTS0之外,就又多了一个PTS1,它的运行的进程就是bash,因为我们打开之后就是一个bash的这样的一个控制台界面嘛。
07:11
所以当前我们这个远程连接的这个bash,这样一个远程连接的控制端,当然就是PPS0了,一个虚拟控制终端,我们看下边它不光运行了bash,还运行了PSAUX,还运行了less,所以我们当前运行的所有进程都在当前这个终端里面显示出来了。好,这是关于TT终端的具体的概念啊,那接下来我们还可以看一下,在后边一列是state,那当然了,这就是我们当前所显示的进程状态,这里面状态呢,还有各种各样的,我们看有大写的S,然后还有小写的S,还有小于号,呃,如果再往后看的话,可能还有一些奇奇怪怪的东西,还有N,还有这个小L啊,呃,就这到底分别表示什么含义呢?呃,我们这里给大家列举一下。基本的一些常见的状态啊,那首先S我们看的最多的这个S,它表示的是sleep是当前是一个睡眠状态啊,那也就是说当前这个进程是已经提起来了,但是呢,现在没有在进行处理,它是一个睡眠,可能在等待某个事件或者等待某个信号的这个状态,如果有对应的那个事件来的话,它就会唤醒,然后就开始执行啊。
08:25
那当然了,正常执行状态叫做R,这是一个运行状态,Running,那另外还有就是TT是一个暂停状态,那另外还有一个叫ZZ,这个叫僵尸状态啊,Z是僵尸的英文单词的第一个字母啊,听起来好像有点吓人,他说的是什么呢?呃,其实就是这个进程已经马上要结束了啊,但是呢,它有一些信息还没有删除啊,就是负进程可能还需要它的一些某些信息,所以删它没有删干净,相当于现在它只剩下了一个空壳啊,那正常情况呢,就是当它的负进程退出的时候,应该就会把它彻底清掉,但是如果说你当前就剩这个空壳一直没清的话,还是要会多占我们的系统资源啊,所以有时候我们会特意的关注一下这个僵尸状态,把这些进程要清掉,僵尸进程要清掉,那另外这个小写的S是什么呢?啊,表示它还包含着紫禁程。
09:19
那这个小写的L表示什么呢?表示当前这个进程是多线程运行的啊,这些都是比较有趣的一些状态啊,那另外还有就是像这个加号表示的是当前状态在前台进行显示,那另外还有一个小于号,前面我们看到有一个小于号啊,这个表示当前进程是很高的优先级。它的优先级很高,然后另外还有对应的有一个大写的N,这个表示当前进程是一个比较低的优先级啊,这个我们大概做一个了解就可以了。然后接下来我们可以看到下一列,哎,这个显示的是start,所谓的start当然就是当前进程启动的时间啊。
10:02
然后后边还有一个time,这个time指的是当前进程占用CPU的运算时间,我们看这个运算时间都非常短啊,大部分进程都是起来之后,然后就进入了s sleep状态,就开始等待了啊,然后最后这是我们调用这个进程所执行的命令,所以这就是当前我们p saux所看到的所有的信息啊。对于进程我们了解的内容就非常多了,那当然了,这里边需要给大家稍微做一点介绍的就是我们看到这个PID。第一个就是PID为一的所谓的一号进程,一号进程它执行的命令是什么呢?哎,就是我们看到是user lib system d下边的system d,也就这就是我们所说的三套S7,现在我们当前的最初执行的第一个初始用户进程,早些版本三套四六里边是in这个进程啊,这个我们还记得当时给大家专门说过啊。
11:00
初始的用户进程叫in,那如果大家使用早期的版本的话,就会发现一号PID为一的进程,就是那现在三到七里边就用system d替代了。除了这个一号进程之外呢,下面还有一个二号进程,这个也非常的重要,那这个二号进程我们看到它叫。K thread d啊,就是这个k thread d是一个非常重要的守护进程,哎,他其实我们从这个名字命名上就能看得出来啊,啊,它是专门负责所有内核thread线程它的调度和管理的,它始终运行在内核空间,所以后面我们看到啊很多系统级别的服务。都是以系统线程的形式去运行的,哎,那所以统一由谁来管理,由谁来启动呢?都是我们这里看到的二号进程k thread d,好了,稍后我们还会看到更多的更详细的信息,这就是关于PAUX,那接下来呢,我们再看一下pef。
12:05
它里边的信息又有哪些不同呢?诶,那整体来看的话,其实主体有一些都差不多啊,比方说这里有这个s time,这显然也是它的启动时间,后有TT,这是它的终端,然后time,诶,执行占用CPU计算的时间,最后还有一个command,这是当前调用当前进程的命令,那前面呢,还有一个UID。现在显示的当然就是对应的用户了,PID就是当前进程的ID,进程的号码编号,那后边最大的区别就在于多了一个PPID,这就是我们所说的负进程的ID。什么叫做负进程呢?就是每一个进程它有可能都是由另外一个进程起起来的,父子关系嘛,先有父亲再有儿子啊,那所以所谓的父进程就是启动当前进程的那个进程。他的父亲,所以我们可以看到这里的关系啊,一号进程,我们的system d,他的负进程是什么进程呢?是零号进程,好啊,这里面零号进程就比较特殊了,零号进程其实是所谓的idol进程。
13:10
这已经不是我们的用户进程,因为之前我们说一号进程,这个CMD就是第一个启动的用户进程初始进程吧,早些时候我们管它叫嘛。所以启动它的就只能是系统级别的进程了。它是运行在系统的内核态啊啊,那我们大概知道就可以啊,这个I豆进程就是当前的零号进程,那零号进程呢,就启动了,我们看二号进程的副进程也是零号进程,哎,所以当前零号进程就启动了CMD,而且启动了KTHD,那就开始可以启动我们所有的用户进程以及系统线程的管理。那再往后看的话,我们就会发现啊,大部分你看这个系统级别的这些进程。其实它的附进程都是二号进程啊,都是k red d,那如果说我们自己去启动的这些东西呢,你看user b下边的这些东西啊,用户进程呢,它的附进程就都是一号进程,所以在这里我们也可以看到当前这个。
14:15
所有进程启动时候,他们的父子关系对于Linux系统运行的架构就会有更加深刻的理解了。啊,那对于这里边我们看到KD,它主要是管理系统内核的线程嘛,那所谓的线程我们也都知道,可以认为它就是轻量级的进程啊,那一个进程可以包含很多个线程,比如说我们看到这里有这个watchdog啊,Watchdog我们知道就是传说中的看门狗进程啊,Watchog看门狗主要就是用来监测系统的运行状态的啊,一旦当前的这个系统出现这个锁死死机的情况,诶,那就直接去重启就好了啊,那我们看到这个watch stop肯定就会有不同的线程去进行并行的执行,并行的监控,这就是关于我们当前对于进程和线程的理解,那对于这两个不同的命令p saux和PF,我们现在也就可以做出一些结论了,那一般时候怎么样去使用它俩呢?啊,那比较简单的就是,如果你想查看资源占用率的话,CPU和内存的占用率的话,那就使用AUX。
15:20
那如果想看父子进程关系的话,那我们就用EF,他们都能查到当前的所有进程。
我来说两句