00:00
接下来我们要介绍的是Linux当中非常重要的一类命令,那就是所谓的进程管理类命令。关于进程的概念呢,其实之前我们讲到系统服务管理的时候也已经曾经提到啊,那就是所谓的计算机当中一个正在执行的。程序或者命令都被叫做进程,哎,那英文就是process,其实我们知道每个进程它都是一个正在运行的实体,它有着自己的地址空间啊,要占用相应的资源,那整个操作系统呢,会给它对应的占用的这块内存。一个专门的识别码,哎,那这个识别就相当于成为了我们这个进程的ID,往往我们就把它叫做PID,当前的process ID后面呢,我们讲到这个进程管理的时候,PID就可以唯一的标识我们当前的进程。那我们知道了有些进程呢,啊,比如说我们平常在这个控制台里边敲出一个LS。
01:03
看当前目录下的所有内容,诶,或者说CD切换到某个目录下边去,那这种命令一下子就执行完了,所以我们说他在内存当中停留的时间会非常的短,而有一些进程呢,呃,比方说之前我们说的像网络服务啊,像有一些这种所谓的系统服务的一些进程,那他们其实只要启动之后,随着系统启动之后就会一直常驻在内存里边,那这种进程我们就管它叫做服务了啊。所以对于Linux系统当中的进程呢,呃,总的来说我们可以分成两大类啊,可以分成。前台显示的进程和后台。我们平常看不到的那些进程啊,那按它的这个运行的方式,我们可以分成这两大类,那像前面我们提到的这些服务啊,特别是系统服务,因为它是长驻内存的嘛,启动之后一直在,所以往往它都属于一个后台进程,后台运行的进程,那具体执行这些系统服务的那个进程呢,一般我们是把它叫做守护进程的。
02:10
这些守护进程其实在Linux当中它的命名也非常的有趣,一般这个服务名称后边都会加一个D,我们说这个表示的就是demon啊,就是当前是一个守护进程,这个我们在当时做介绍的时候也看的非常明显啊,比如说呃,我们说这个3TO7里边主要是使用system d啊这样一个启动进程来进行系统服务的启动,诶,那它所有的服务都放在哪里去了呢?是在user目录下的lib下边有一个。System d啊,那当然了,里边还有一个system。目录里边就有很多具体的这个各种各样不同的service,包括target,我们说target可以看作是一组服务的集合啊,那所以这里面我们看到很多名字,它它这个后面其实就都带着D啊啊,那我们可以在这里做一个筛选。
03:04
我们还是把上面这句话后边加一个管道筛选group一下地点service啊,后缀名都是service嘛,我们做一个筛选,我们看到有好多很多服务,它其实都是以D结尾,然后点service,这就是我们所说的守护进程。所以这些进程它守护的是什么呢?守护的就是我们的一个系统的后台服务啊,那这里比比方说啊,我们看到这里边非常经典的有一个叫SSHD.service那这里的这个SSHD它其实就是一个守护进程,它守护的是什么呢?诶我们知道这里啊,用叉shell直接做一个远程连接的时候,其实就是使用了SSH,调用了SSH服务,诶使用了这种连接方式,连接到了我们的虚拟机上服务器上,那这个SSHD呢,就是SSH服务的守护进程。
04:01
那所以一般来说啊,我们在Linux里边可以认为守护进程和系统服务就是完全的一一对应的关系,我们可以认为他们就是一回事。那当然了,呃,前面我们已经介绍过了,Linknux当中对于系统服务的管理,那在三到六版本里边,我们使用的是service啊,就是service,然后加上服务名称start stop restart status去查看它的状态,去启动停止,那如果要是三七版本呢,诶,我们统一使用的就是system ctl这样一个工率工具去进行系统服务的管理了。诶,那我们会发现啊,当前在LIS一个系统里边,你不光只有系统服务啊,我们还应该有用户调用的很多很多进程啊,那甚至我们也可以把这个用户调用的进程当做一个服务来看,整体来看的话,也就是我们不光应该有系统级别的进程或者说服务。也应该有用户。级别的。
05:01
进程。或者服务。当然了,也不一定非得是服务,它的具体的运行可以在前台,也可以在后台,所以我们现在其实是所有的进程process。都应该有一个统一的管理和查看监控的这样一个工具,所以现在我们其实是需要一个一的工具,把所有的进程全部能够管理起来,我们能够查看当前有哪些进程,查看它的状态,能够让它启动,能够让它停止,诶,这就是我们现在要做的进程管理的工作,比之前的系统服务的管理就相当于更加一般化,更进一步。哎,那其实这个进程管理我们也不陌生,在Windows里边我们都知道有任务管理器嘛,我们直接按着ctrl alt加delete打开任务管理器,那在这里我们可以看到当前正在运行的所有进程,那当然了,在Windows的这个任务管理器里边,它是分成了应用和后台进程,我们就可以认为诶,这些是在前台跑着的用户进程,那在后边这些后台进程大部分就是我们所说的系统进程,系统服务了,诶所以这个其实整体来看的话,还是比较简单的一个划分,那在Linux里边呢,也有类似的这样的一种查看方式,当然了,我们没有这种窗口化的查看啊,我们直接还是要使用命令,那最简单最基本的命令就是所谓的。
06:30
啊,这个不是Photoshop啊,那这里的指的是process status,就是专门查看当前进程状态的一个命令啊,那我们可以直接在当前的命令行里边来试一下啊,直接打一个其实就可以看到当前的一些进程了,我们看到这里只显示了两个,这里呢有一个叫bash,另外一个叫,哎,这个其实很好理解,因为我们当前远程登录虚拟机的时候。
07:00
本身也是使用了。这样一个交互式的shell控制台工具的,就我们当前打开的这个窗口,这其实这就是一个啊shell界面啊,Shell的控制台,那我们说当前我们默认使用的就是bash,所以有一个bash进程很正常,我们自身嘛,然后另外呢,还有一个就是我们刚才敲的这个命令啊,我们说每敲一个命令其实都是在运行一段程序,所以它也是我们当前的一个进程,一目了然,诶这两个进程就都看到。但是我们想当前一个系统里边运行的进程怎么可能只有他们俩呢?诶,我们正在运行的系统服务都不止吧,很多很多,所以这里直接调用输出的信息其实是比较有限的,它只显示什么呢?直显示当前用户的调用的这些进程,以及跟当前这个终端控制台相关联的所有的进程。诶,所以这个就很少了,我们知道那些系统服务它都是在后台去运行的嘛,跟这个终端啊控制台是没有关系的啊,那另外就是有很多也不是以我们当前用户的身份去执行的,我们知道系统里面有很多所谓的伪用户啊,系统用户他专门就是为启动系统服务创建出来的,诶那所以当前我们看到的信息太少了,所以一般情况使用的时候,我们都要加上一些选项参数。
08:24
好,那这里给大家稍微的介绍一下一些常用的选项,我们这里可以看到啊。它比较特殊,就是它的用法其实是比较多的,比较富,我们看到这里的选项参数呢,整体来看是有两大风格,呃,就一大类是前面不加横线,不加这个杠,另外一大类呢,是前面加一个杠,我们之前比较熟悉的选项风格应该都是加杠的这种风格啊啊,加杠的风格其实就是所谓的标准unix风格。当然了,呃,当前我们这个Linux本身继承unix嘛,它本身也是都支持这种标准风格的,而这里的不加杠,直接写一个小写字母的这种选项,这是什么风格呢?这是所谓的。
09:09
BSD风格,诶之前我们说过unix它的演变过程当中啊,有一个衍生的版本就是所谓的BSD啊,那到目前为止,这个free b SD也是非常重要的一个开源版本,我们说这个对后来的苹果系统都是有影响的啊。那所以这里面就有这样的两种不同的风格的选项,我们这里来基本的介绍一下啊,首先是A上面的这一部分,这就都是BSD风格的,不加横杠的。我们看一下小写的A,哎,那表示就是列出,注意是带有终端的所有用户的进程,因为我们默认只是输出列出当前用户的进程,那A的话二所有用户的进程都显示出来,但是注意也不显是在后台的那些系统服务,就是也是如果要是不在终端后台运行的话,诶,那我们这里就不显示了。
10:03
另外还有一个选项叫做XX指的是列出当前用户的所有进程啊,就是包括有终端的在前台显示的,包括啊没有中终端的后台所有的这些服务,哎,那所以A和X啊,在这个BSD风格里边,往往都是合在一起去显示的。它俩合在一起我们就会发现啊,本来你这个里边其实是有两个限制嘛,一个是只显示当前用户的,那不显示其他用户,另外一个呢,诶是只显示有终端的这些进程不显示,没有终端的进程,后台进程不显示,所以现在A和X他们分别相当于克服了一个缺陷,那现在如果要是合起来用的话,就可以显示出当前的所有进程。啊啊,那另外还有一个选项叫做U,小写的U,它指的其实就是跟我们之前的那个,呃,就平常用到的杠U啊,User readable是一个意思,就是面向用户更加友好的一种显示风格,然后可以显示出更多的信息,比方说当前这个资源占用多少啊啊呃,那那这些信息可能我们用户会比较关心,所以我们看它们三个一组合,这就得到了一个我们常见的的用法。
11:19
叫做p saux。好,我们可以直接在这里把这个打一下PAUX。我们看到这个查看到的进程就非常非常多了,而且这里列举到的信息,前面看起来这个信息也会非常非常多啊,那如果说我们这个翻页看着比较难受的话,当然后边可以做一个管道,比方说诶,我们直接去做一个less。或者加一个帽,然后去做一个管道显示,哎,这样的话我们就能看到当前所有的进程,从头开始看,然后看每一个字段,每一列到底是什么含义。那如果说我们想退出当前的这个查看的界面的话,诶,当然这是less里边的操作啊,直接按Q小写Q就直接退出来了啊,这就是非常经典的一个操作,P saux查看当前的所有进程,那当然了,后面这个管道我们可以接这个,呃,就是全部查看的啊,Less more这种分屏显示,也可以直接去grape,就是去筛选某一个我们感兴趣的进程啊,去看看它相关的那些信息,这是比较常用的一个用法,然后除了这种AUX啊,这是属于BSD风格的这种语法,那另外呢,还有标准unix风格的语法,就是带上杠这种写法。
12:36
这种写法,哎,那我们看常见的最常见的这种参数选项啊,就是杠一。这里是一个杠,一杠一指的就是直接列出当前的所有进程啊,就是相当于把我们前面这个A和X两者的功能全包含了所有用户,然后还包含包括了不管是在前台后台的啊,有没有终端的所有进程都要列出。
13:01
然后另外还有一个杠U,诶注意在这个unix标准风格里边的杠U参数跟上边BSD风格的U是不一样的,它的杠U指的并不是说用户友好的显示风格,它指的是列出跟某个用户关联的所有精神,所以理论上来讲,这个杠优后边是要加一个用户名称的。啊,本质上来讲,后面是接一个用户名儿,把对应的这个用户的所有进程筛选出来。啊,那另外还有一个常用的就是杠F,杠F的话,那我们知道本身显示的这个信息很少嘛,那之前我们是有一个UBSD风格,用U来增加一些,比方说系统的资源占用啊,这些更多的一些显示项,那如果要是用这个标准unix风格的话,加一个杠F就可以显示更多的信息,显示完整格式的进程列表。那所以在这种风格里边呢,大家可能也会看到另外一种使用方式,就是杠EF,哎,这种方式其实也经常会使用,我们可以看一眼。
14:03
杠EF。哦,当然了,这样我们还是太多了啊,看不清楚,我们还是直接来做一个less。哎,那这里我们看到啊,当前输出的项目跟之前就会有所不同,诶,但是可能一些主要项还是大概是差不多的啊,那具体的内容稍后我们再给大家做详细的分析,哎,那整体来讲的话,也是所有的内容都已经列出来了,所有的进程一目了然,那这里比较有特色的就是它其实多了一个所谓的PPID,什么叫做PPID呢?PD我们指的是当前进程的ID码,那所谓的PPID其实是它的。父进程的ID,所以用这种方式啊,就是杠EF,它不光可以查看当前所有的进程,还可以查看进程之间的父子关系啊,所以这个在很多场景下是非常有用的啊,我们能把他们的这个关系数就直接梳理出来了。这是这种情况,这里需要给大家多说一句的是,可能很多同学都见过,就是平常我们写的时候啊,可能不那么严谨,就往往就是psi-EF,这是一种写法,有时候可能就直接。
15:11
杠AUX。啊,AUX这看起来像奥克斯啊,就直接杠AUX直接这么写,这种方式呢,呃,可以说也对,但是它不是很好。在官方文档里边不推荐大家用这种方式去写,为什么呢?因为本质上来讲,你这里使用了杠AU这两个参数之后,后边其实是要筛选一个叫做X的这样一个用户。假如你的系统里边真的有一个叫做X的用户的话,那其实最后你显示的是X这个用户的所有进程。啊,那当然了,一般情况我们可能不会那么膈应啊,专门给一个用户名字就叫X,那所以在默认情况下,如果找不到X这个用户的话,Linux会自动把它理解成翻译成。
16:01
去掉杠之后的sax。哎,所以既然这么麻烦,还有这个有可能出现bug,那我们就不要用它了嘛,对吧,直接你如果使用BSD风格的话,你就不要加横线,直接p sax这样就对了,那如果说我们使用这个unix标准风格的话,你就直接杠EF就可以。
我来说两句