00:03
那我们已经给大家介绍了这个过程。硬件加载。启动设备。启动设备去利用布罗,找到利的内核。在group com文件里面呢,我们看到了它里面写了内核文件的路径,那其中也提到了这个。通过内核去加载整个根系统的路径。在这个B文件里面看的非常清楚,在这是内核文件以及根的路径。那咱们强调过这个文件的功能啊,这个文件实际上是为了让内核。
01:03
能够加载根文件系统,它需所需的一系列的相关文件,包括驱动。那么内核启动以后,利用这个文件会先加载一个简化版的小linu系统。啊,这里面不就带有了各种驱动啊,包括各种相关的工具,配合内核就成了一个简化版的小Linux。有了内核的讲完练习以后,然后做一些简单初始化之后,他就开始把根进行挂载。所以这个文件很关键,这个文件很关键,刚才我们曾经也演示过,如果这个文件前后次序化了,错了当,就会导致系统无法启动。如果这个文件要坏了,也会导致系统无法启动,那这个文件万一坏了,那我们要想修复怎么修复。
02:02
那这个文件的修复方法也非常简单,有一个命令叫me RD。后面跟上这个文件,不过呢需要加一个内核参数,这个内核参数呢,用U内杠R来生成就好了。那这个是这个命令,它可以用来重新生成此文件啊,不过需要加那条参数的版本。这样的话,这个文件就可以重新修复了。所以如果说万一有一天这个文件坏了,机器无法启动了,那你进入到救援模式之后,利用这个命令就可以来把这个文件修复过来,当然要别忘了切根,先切根之后再执行这个命令。哎,就可以修复了,还是敲这个命令就可以了。啊,不过这个命令修复的时候,它会稍等一下。这个文件我们都知道,实际上是个压缩的CPI格式的文件啊,里面内容是通过这个命令可以来生成的。
03:06
好生成完了,生成完之后呢,你再来看一下这个文件的这个格式啊。看又回来了,那用这个命令可以来进行修复。那这个早期的时候,这个文件的名称呢,叫银RD,你像我这有一个渗透S的五版本,五版本呢,我们可以看一下它的这个文件名儿。它就不一样,你看它叫什么呢?RDRD,而我们六版本以后不叫RD了,叫什么呢?叫Rim FS。改了RD呢是什么意思呢?RD就是呃,虚拟出来的一个D是磁盘。因为这个呢,模拟的是一个硬盘,而我们六之后呢,之所以改名,就是它模拟出来的并不是硬盘,而是一个文件系统,是一个虚拟的文件系统。
04:09
那这个有什么好处呢?是这样的,因为我们用户去访问文件,访问数据的时候,都是通过文件的方式访问。那文件系统就是存放文件的。这个所在的位置。而硬盘是不能够直接用户访问的,硬盘用户要访问里面的数据是通过文件系统。来访问的,所以呢,它这个地方它模拟的是硬盘,那模拟硬盘,那么要访问这个里面的数据,我还得再通过文件系统再访问,不如这个直接,你干脆给我一个文件系统直接访问就得了,所以呢,从逻辑上来讲呢,这种方式应该效率更高,可以加快你的启动速度。啊,那么早期的时候这个硬盘会多了一些步骤,所以这个效率会受到影响。
05:02
所以从深透S6往后呢,全都叫R瑞FS了,它模拟的是文件系统。这样的话可以提高效率。用户直接访问文件,系统就可以得到数据就行了。好,这个了解一下,总之这里面放的就是各种啊这个驱动文件,包括内核需要辅助的一些,这个跟系统的这个小型跟系统的相关文件。那这个文件的修复呢,我们刚才用到了这个命令,那实际上呢,嗯,这个命令实际上并不是一个真的命令,它实际上是个脚本,这实际上是个脚本。嗯。那这个里面的东西可以看一下。这里面核心的内容呢,啊,它真正起作用的。
06:02
这个脚本实际上核心的是调用另一个工具,叫这个。大家看,实际上它最核心的是调用了这个命令,这个命令才是真正用来修复生成刚才说的一面上FS文件。啊,不过这个脚本直接拿过来用就好了,好了,这是刚才提到的这样的一个工具啊,那到此呢,我们现在前期的这个过程,那比方说家电自检呀,啊去。选择一个硬件设备作为启动设备,我们如果是硬盘的话,找MBR第一个扇区。然后通过它来加载grab的二阶段,二阶段里面它有菜启动菜单,启动菜单完了以后它就可以找到什么呢这个内核文件,那么配合瑞disc。然后这些信息就可以来挂载跟,挂载跟以后就可以加载整个系统的第一个进程叫内的进程。
07:09
这个一列的进程啊,是系统中第一个进程,这个进程。在不同的Linux版本里面这个进程,实际上这个程序本身已经发生了巨大的变化。啊,我们来看一下在六上。在六上这个程序,它是来自于哪个包,你看一下。啊,来自于upsar ball。同样的你在五上面,你去看一下。他来自的包都不一样。那么但是七上面更不一样了。完全都不一样。所以换句话说,包的包名都变了,所以呢,他们内部的工作机制已经发生了巨大的变化。
08:06
那么早期的五版本,这是最经典的unix的启动程序啊,咱们叫CVCV呢就是第五代unix的版本啊,这个历史悠久了。从六开始已经不一样了,六呢,他都叫改了个阿萨,那么阿普萨什么东西呢?阿普萨,这实际上是乌邦兔这个组织研发的一个新型的内程序,新型的启动程序。看阿布萨,你看是不是吴邦兔眼吧。所以他这个in表面上还叫in,实际上已经换了,本质上不是同一个东西了,名称还叫in类,但际上根本不是同一个玩意的啊,不像一般的软件啊,1.0升级,2.03.0,它还是同一个组织研发的,这就不行了,这就完全不是同一个组织的。
09:03
啊,你看这个C。这个CV,这个组织,这个包,它是哪个组织研发的?啊,在这看了,这是由红帽公司开发出来的,研发出来的。所以从六开始,这都不一样了,当然七就更不一样了,又换换了。把七换成了谁呢?CD。CND呢,这个实际上准确的时候也是宏茂公司的。啊,这个CCD是红帽公司的一个工程师啊研发出来的。所以大家可以说,虽然他们都叫,但实际上根本不是同一个组织。那也意味着他们的内部工作机制发生了截然的啊,是截然不同的,是发生了巨大变化的。也就是说我们系统中的第一个进程。
10:00
每个版本都不一样。表面上叫内,当然为什么都叫内呢?那就是因为Linux在设计的时候,它默认的就是去根里面去找这个以内的程序,这个以内的程序是内核源码里面写好的。它有一定的搜索次序,它就是找net那,找T那,所以我们这些不同的版本希望自己开发的进程作为系统的第一个进程,所以他们也命名成了一类。啊,当然七上面通过软链接的方式达到了这个目的啊,我们都知道七上面的这个它实际上是个软链接。指向了CD。指向了CD,也就是改头换面了啊。那么,这些启动程序到底有什么区别呢?
11:04
那实际上它的巨大的区别就在于他们的启动的。效率上有很大的不同,那我这通过一个例子来给大家描述一下他们三者之间的区别。呃,我们目前看有三个以内的程序,分别是老牌的CV以内的程序,Rar程序和新版的CND,当然八也用CND啊,八的版本也是CND啊,七和八是一样的。啊,那么这三者之间它的启动差别在哪了呢?那差别在这个地方。哎,这就是他的其中差别。
12:12
假设我们这有若干个服务啊,假设有四个服务,我们都知道系统中有很多服务,这些服务呢,比方说咱们学过的计划任务服务。包括还有Chrome计划,周期性的计划任务,还有我们经常使用的SSH服务,这些服务呢,都是开机的时候系统自动启动的啊,我们通过这个后台进程。那在这一大堆的进程,这些进程都是开机的时候自动加载的,那自动加载。总有一个加载次序,那么到底加载哪一个,先加载哪一个,后加载哪一个,它是有一定的逻辑关系的。那么早期的。
13:03
也就是五版本的这个类。五版本类,它是属于CSV以内的这个。这个风格,那这个风格启动的时候呢,如果假设我们有四个不同的服务,它的启动次序就是严格按照这个先后次序,预先定义好的,第一个服先起来,第二个服再起来,第三个再起第四个。这就是个严格的次序。这个次序之间不管它有没有依赖关系,假设一和二之间有依赖关系,那肯定是一先启动,二后启动啊,那么如果三和四包括一号之间,他没有依赖关系,他也要按照一定的次序来显来执行,所以这样的话,最终就导致了我们的启动是比较慢的,因为他即使没有什么依赖关系,他也要顺序的串行启动。而六呢,就不一样了,六差在了哪呢?差在这,如果这四个服务之间一和二是有依赖关系。
14:08
一启动的时候和二启动它必须就是一。是。被二依赖的啊,这个二是依赖于一的,那么启动的时候,因为二依赖一,所以就先把一先起来,起来以后再启动二,三和四和一和二之间没有关系,所以在三六上它是可以做到并行启动的,什么意思呢?就是我们将来可以这四个服务同时启动,当然同时启动我们花的时间这回就不用那么长了,因为我们可以很短。可以做到这样。因为三四包括一,因为他们又没有依赖关系,所以可以并行启动。所以最终只需要花。这么短的时间就可以启动起来,看明白了吗?哎,那么,但是思诺七往后版本更过分了,思诺七思诺八啊,更过分了,他们有没有依赖关系,它都没关系,它都可以做到并行启动啊,假设还是一和二有依赖关系,但是没关系,我们照样可以并行启动。
15:23
我们可以做到并行,这四个服务全是并行系统,最终花的时间你看又短了。那当然大家可能会觉得有点奇怪,那这个一号二都有依赖关系,咋并行启动的?我们理论上是不是既然我依赖于你,是不是应该先走,先依赖你,你先起来我再起嘛,对吧?这不是符合逻辑吗?那为什么他能做到完全并行吗?那实际上是这样的,虽然有依赖关系,这没错。但是这种依赖关系往往体现在就是真正用户需要你访问的时候,这个时候就必须要把被依赖的资源准备好,但是大家想我这个计算机只是启动诶。
16:06
我启动的时候用户用户还没访问呢,用户既然没访问,我何必非得把这个依赖关系强制的按照这个关系来组织好呢?那就先起来再说呗。等用户访问了,我再去检查依赖关系嘛,听懂意思了吧,就是如果没有用到的时候,我何必现在就着急忙慌的,非得准备好资源呢,对吧?那就跟别人跟你借钱,那跟你借钱的时候你手上,呃,暂时没有,那暂时没有他也不是马上就要,对吧?比方你身边的朋友想买房,想跟你借钱,那借钱的时候你先答应吧,等真借的时候你再说呗,是不是?哎,是吧,就这意思不?哎,你借10万块钱吧,哎,没关系,我这有是吧,放心,等真借的时候我这没有嘛,是吧?啊,没有再说嘛,是吧,那至少先答应他。啊,答应那就是这个逻辑,就这个意思,因为你还没用上,你只是说表面上依赖,关键没有马上用,没有马上用那就无所谓嘛,所以这就是C7它的启动流程,所以我们你现在应该能感觉到六和七比较,是不是六的启动要慢,七的启动要快,哎,当然因为你们那没有装五啊,五的话更慢,五的话是最慢,它启动非常慢啊。
17:24
所以这就是他们的一个逻辑关系啊,啊不管怎么样吧,哎,确实这个这个系统启动还是比以前快了很多的,好了,这是他们之间的一个区别啊,这个区别我们了解一下。接着系统启动以后,第一个进程启动以后,在六版本里面,它会有大量的依赖的一些配置文件,那么这个七上面八上面就变了,所以我们这块呢,给它分成两块啊,一个是七,一个是六。一个七和八,一个是六,那么他们在六版本之前的系统中启动之后,加载这个内的进程之后啊,他会去读取一个配置文件,那这个配置文件是谁呢?是这个。
18:13
这个东西。这个文件很重要,它决定了我们计算机启动的时候到底进入到哪种运行模式。我们都知道最经典的模式三模式五,模式三是图,呃,字符,五是图形,那么谁来定义这个模式呢?这个模文件。这个文件定义了模式,那么把它打开看一下。那这个文件井号开头好像是注释,我们先不用管它啊,不过呢,这行很关键,这行里边定义了计算机启动的时候,哎,到底是什么模式,那我们都知道,我现在的五是图形界面,你看我这个启动了啊,我这五模式图界面为什么图形,就是因为这是五,而我的六为什么是字符,那你看一下这个文件就知道了,你看这个六上面这写的是三,所以就是字符界面。
19:10
啊,所以这个就决定了,当然这还把零到六的七种模式做都做了介绍啊,告诉你了零是什么模式,Hot hot不就是断电吗?那一是什么单用户,哎,这个单用户不是用过了吗?单用户和破解口令不就在这做的吗?啊,那么这个二是。多用户,不过多用户呢,它是没有NFS功能啊,就是没有网络共享的这个NFS服务。啊,这个服务实际上二模式是没有的,那实际上它和三模式基本上差不多,三模式差不多。啊。四模式三和二和三都是字符界面,不是图形界面,四模式是保留的,没有使用的。
20:04
啊,以为将来过一段时间能用上,结果在七上就没有这个模式的概念了,在七上呢,我们可以看一下,也有这个文件是有,但是这个文件已经不起作用,大家看在七上这写了一行,这什么意思,看见了吗?说这个文件怎么样,不再使用就淘汰了。所以这个文件只有在六版本以前才有用啊,六版本以前才有用,所以这个四模式呢,已经。也没用上啊,五是图形六是重启啊,六是重启。它这个下面的这个每一行的内容是由若干个冒号隔开的列组合而成,那分别是表示。ID就是编号,这是接着是在哪个级别上运行,这个ID就是个唯一标识啊,唯一标识啊,这个标识随便写一个字符倒不是很重要,然后重要的这个地方,这一个run level run level就是在那个级别运行,运行什么action动作,那动作呢,比方说包括wait呀,包括response呀,包括以内的portt呀等等,那这些不同的动作是含义不一样。
21:26
你像这个force呢,就是默认开机进入到什么模式下。这个意思,那wait呢,是切换到此级别运行一次,只运行一次呢,就是如果发现此进程终止,那进程在哪呢?就在后面放这个进程,如果进程在这个模式下运行的时候死掉了,我们就要重新启动制,我就会把它激活。啊,激活这个C呢,是系统的初始化方式啊初始化方式,所以这些呢,这个action有不同的关键字,不过呢,在渗S6的上面,它这只有一行,没有别的,为什么呢?他把其他内容给拆了,把其他那些相关的配置给它拆分到不同的分的文件去了,放到不同文件里去了,而五版本呢,它就全都放到这个文件里的,大家看除了这一行,你看这不有C吗?为什吗?对吧,包括还有这些。
22:23
都有这些都是action啊,这是action,哎,这。哎,大家记不记得我们曾经上次讲进程管理的时候看到过这个东西,有没有印象?这什么东西啊?对,这个。杀不死的小强嘛,是吧,哎,他那负责就是登录终端嘛,为什么杀不死,因为这有个流方瑞SPA什么意思,再生嘛。啊,你杀死了,我再把它激活,看到没原因,就是这个原因啊,杀不死。
23:01
好。当然。那目前来讲,在3S6上这个文件基本上已经没有什么特别多的功能了,不像这个五版本里面,这个文件丰富的功能比较多,那么六上面呢,他把那些不同的配置的给拆分到不同文件里去了,因为六版本他用的是APP star,它不是那个CSV的面,所以这个文件的功能仅仅留了一个功能设置开机什么模式。当然这个模式呢,如果我们不小心改错了,例如我这如果改成了六,那成了什么意思了,是不是就是不断的循环重启对吧?当然人家括号里写了说你别这么设啊,是吧?哎,别这么设,当然了,我就想这么设,设完以后我要重启一下。那么这时候理论上它就会循环重启,是不是这样呢?那我们来看一下吧。电。
24:01
如果循环重启了,那当然也就是导致你系统起不来了嘛,对吧,起不来了,那起不来了,那我们怎么修复它呀。你看是不是循环重启了,确实起不来了,起不来了怎么修复呢?大家应该知道怎么修复,什么修复实际上就是他去启动的时候,它。通过类tap文件定义了默认的启动模式,那我就不用了那个模式了,我不用这个模式怎么修改呢?起到这个菜单也会输个A,咱们这刚才进入到单用户来着,那现在你知道零到六七种模式,我现在不想进入到六默认的,我想我自己想进入到模式,那就写个数字不就得了。比方说写三三,是不是这次启动就进入到三,你写一不就进入到单用户吗?对不对啊,比方说我要进566,呃,这个进五五不就是图形界面了吗?对不对,那我们来试试吧,我就写个数字,当然你写个数字的话,那就意味着你那tap文件那个就不失效了,相当于。
25:18
就是我不用那个文件里定义的模式,我这临时的自己指定一个模式,那这样的话是不是就绕过这个故障就可以起来了。那刚才我们用单用户不就是这种方式吗?啊,单用户不就是这么干的吗?这无非就是写了个一而已吗?好,你看看见没。哎,起来了。大家不觉得有点奇怪吗?起是起来了,你不觉得有点奇怪吗?奇怪哪啊,启动了,但是你不觉得有点奇怪吗?聪明同学,意识到奇怪在哪了吗?
26:05
看来没反应过来,我是不是没有输密码,你没有注意到我没输密码吗?起来了,连密码都不输就进来了,哎,为什么这个不是一导致的啊,就是这个不是三导致的,是这个这个系统被我改过了,这改过以后我可以让它自动登录,哎,我这有个自动登录,这个自动登录是可以实现的啊,自动登录改了一个文件,呃,这个文件在哪呢?我找找啊,好像是这个时间长了忘了,好像是这个,诶这写着呢,把这两行一家就行了。把这两行一加,就可以让开机root自动登录,不过它只是对图形界面啊,这是图形界面有效,字符界面无效。不。这个游戏你们上课做实验啊,我就想每次省得我输密码了,哎,你想自己登录这个挺方便啊,挺方便。
27:04
把这两行一加,他就可以做到不用输密码就能登录。啊,当然刚才这个文件我还得肯定得改回去啊,我们不能每次都用这种方式写,这是不合理的。那么他还把一些别的配置分散在了别的地方,比方说这个这个文件它定义了什么呢?这个文件的这个内容和这五上面的这个功能是一致的,就这个功能是一致的,什么意思呢?就是当我们按三个键ctrl l delete键三个键的时候,系统会怎么办?那么系统它会自动重启。因为这个文件里面定义了那三个键的行为,那。
28:05
当你按三个键的时候,它会自动触发这个命令的执行。这个命令不就是立即重启吗?明白吧,立即重启,当然了,这个重启不是说你在你这个远程啊,比方说我在这儿,我敲个三个键是不起作用的啊,你就是你必须坐在机器跟前,哎就是说白了,你就是在电脑跟前,哎在这个地方你电脑跟前这么做,而且是字符界面啊,一定是字符界面啊,字符界面下你看三个键,这时候它就重启了,明白吧,就重启了啊,当然工作中的话呢,由于我们万一就在机器跟前,呃,通常生产中都是字符界面不在图形,所以这时候呢,是有可能有一种。就是误操作的风险,就不小心按了三根键把机给重启了,所以呢,为了这避免这种情况呢,建议大家这个地方给改了啊,怎么改呢,很简单,如果是五的话呢,实际上就把这一行给它注释掉就行了,加个井号,那如果是六的话呢,也是你把刚才那个文件找到,把刚才文件找到以后呢,嗯,把对应的内行给它删了或者注释掉就行了,这样的话。
29:21
好,那么这个我们把这个行,你看这个地方我不想按三个键重启了,那我把这行删掉就行,删掉的话你按三个键它就重启不了了,明白了吧?哎,这个就避免误操作,那你看我现在改完了以后,你看这边再做,他应该就不起作用了。那有三个键没反应了啊,不会重启了。好,那还有就是在这里面还有一些别的文件,那比方说这个命令这个文件和这个文件,这两个文件呢,嗯,记录的是一些初始化的脚本。
30:03
这个文件记录了系统加载内核之后,一看你定义了什么模式,它开始要做初始化。那么做初始化的时候,他要执行一些初始化脚本,这个初始化脚本哎,它是怎么执行的,实际上关键的就是执行了这个,这就是一个初始化脚本,这个初始化脚本在五上面看的非常清楚,大家看哪呢?这在这你看这就定义了那个脚本路径。啊,无非在六上呢,他写的这个位置而已。这个脚本是我们系统启动之后,加载进程内进程之后,它做的第一次初始化,这个初始化内容非常丰富,我们可以打开随便看一看,大家看这里面有哪些东西,大家看这是不就是这个文件,还记得吗?这个文件干嘛的呀,这是。
31:01
是不是放你的主机名的,对不对,放你的主机名的,你看这边hold name,这不执行这个命令吗?把这个主机名然后生效,所以这个文件里面呢,它做了一些初始化,比方说初始化你的主机名,初始化你的swap,初始化你的挂载啊,包括你的什么逻辑卷之类的全在里面,所以这个脚本呢,也是挺挺长的啊,你看600多行。600多行的一个初始化脚本,这个脚本它的功能我在这做了一个总结啊,大家看这个脚本的功能是干这些活,这活啊,这些活都是做初始化的啊,比方说设什么主机名,设什么设备名,设什么挂载啊,设什么swap时钟之类的模拟卷啊,全在里面,所以这个脚本一般我们也不动它啊,别破坏了啊,这里面600多行呢,别别随便瞎盖。好这个,那么这个脚本我们一般不动,那接下来还有就是它加初始完这个脚本之后,它开始根据你系统的默认模式,比方说我现在是五模式,好它就会加载这个五模式对应的相关服务。
32:18
那如果是三模式,它就会加载三模式对应的相关服务,因为每个模式实际上本质上的区别就是他们加载的服务不同。啊,就相当于有两套环境,一个是三模式的环境,一个是五模式的环境,他们加载的服务不同,比方说我可以做到这样的一个效果,就是在三模式下,我让他加载at这个服务就是一次性的任务啊,在五模式下我让它加载chromeb服务。这两个让他在不同模式下加载,哎,也就是说三模式只加载一次性任务,不让他加载周期性的,但是五模式我加载那个周期性的,不让他加载ad,这是可以做到的。
33:06
所以所谓的三模式、五模式不仅仅是个图形界面,有没有图形界面这个一个表面上的现象,主要是根本上就是哪些服务可以启动,在什么模式下可以区分,就是不同的环境。那么到底加载了哪些服务呢?那么实际上咱们每一个系统中的服务对应的都实际上是一些启动脚本,这个启动脚本都在这个地方。都在这放着,有一个叫盈利的D的,大家看,这里面有我们比较熟悉的服务,比方说咱们曾经学过的计划任务服务,Ad服务,包括Chrome服务,还记得吗?在这吧,这两个服务是必须启动的,大家记得我们当时要查看这两个服务的话呢,在C6上,你要用这个命令来看。哎,你看这两个服务目前是启动的,启动当然在申度七申度八上就不用这个命令了,C7度八是用CCTL来命令来实现的,哎,SS7和八是用这个命令来实现,但是功能上实际上是差不多的啊,Status。
34:22
实际上是一样的啊,换了个命令。哎,注意,我们实际上在PHOTO6上用这个service命令去执行查看某个服务的status,本质上就是调用了atd这个脚本,调用了CD这个脚本。你们做没做,我们前面讲的那个脚,脚本那个函数那块留了个作业,那个作业其中有一道题就是要求你写个脚本,后面跟上不同的参数,让他能做不同的事儿,实际上就是干这个活的,我们这个执行这个命令,它实际上就等于。
35:07
执行地下的atb下的,它是等价的。啊,不相信我们可以试一试,你看我这执行一下,你看看和刚才那个效果一样不一样。是不是一样,所以你本质上你执行这个service,实际上调的就是对应的这个脚本,比方说现在用这个prod,那你就点D啊,这个这个Chrome DS,你看一样不一样,一模一样。啊,所以我们实际上所谓的service,实际上本质上就是调动的这个脚本啊,调用的是这些脚本。这每一个绿色的脚本就是一个服务。就是一个服务。那这个atd呢,实际上最终就是表现为一个进程,它是在2061,你看这个2061对应的这个进程at TD,你找找是不是有一个2061的进程,是不是在运行这后台运行。
36:10
所以开机的时候,我们现在就大概心里有数了,那为什么一开机这么多进程都在运行,是不是都是表现为这里面的一大堆的绿色的脚本啊?对吧,每个脚本对应的实际上就是一些进程啊,都是一些进程,但是我们刚才不是说了吗,我们有零到六的七种模式,那么这七种模式下不同的模式是不是我们并不希望他们启动的服务都一样,对不对?哎,所以呢,我们如何来定义说,诶我是三模式,我启动哪些服务,五模式启用的是别的服务,这个怎么怎么来来来实现呢?哎,那就是靠另外一个脚本来实现,另外一个来实现谁呢?就这个。
37:00
叫rcs.rcs.com,它定义了零到六七种模式下,到底哪个模式启动哪些服务。靠他来定义。在六上这个文件看起来不是很直观,因为它实际上也是个脚本,看起来不是很直观啊,看起来不是很直观。应该是这个啊,这个通过它来调用,那通过它来调用这个,你看这写了零到六,那么最终呢,它会把零到六的七种模式对应的期望启动的服务放到一个文件夹里面。通过RC后面跟上这样的一个数字,这个数字就是零到六,来调用对应的那个文件夹里的所有程序,那么这实际上关键的就是这个文件,这是个脚本,大概这里面调用了很多内容,其中我们往下翻一翻,往下翻一翻看这了吗?看这个,这是个文件夹。
38:10
这个文件夹里面定义了ETCRC 0.d 1.d 3.d,一直到6.d。七个文件夹,那我们来试试是不是真的七个文件夹,你看看到没?每个文件夹里面都定义了需要在这个模式下,比方说我是三模式,那么三模式呢,就是RC3.d,这个目录里面就定义了三模式下希望提供的服务脚本。看见没有?啊,那5.d那放的就是五模式下希望启动的脚本。但是并不是都是启动的。大家可能聪明的发现了,这个颜色好像不是一般脚本颜色,脚本真的颜色应该是绿的,对吧,它这是什么东西啊,实际上这都是软链接对不对。
39:11
而且是软链接,大家观察一下我们和下面这个是不是基本上和对应的,这是我们真正的脚本,而这些只是他们的软软链接,那咱们找一个大家比较熟的,你看Chrome Chrome计划任务,大家看这是我们真正的这个脚本名字,我们在这个Chrome的这个地方。Chrome这但是它这个软链接呢,它加了个S90是吧,那是不是这样呢,我们来试一试。九零。哎,你对比一下它的软链接是不是指向到了我们ETC以内的地下的Chrome,你看看就知道了,看是不是指向它。
40:02
真的是指向他们?但是他为什么他不原名指向而起了一个叫S90的东西呢?为什么不就叫Chrome d就得了,为什么再来个S90呢?那事实上我们这儿还有一个atd的TD在哪呢?看看A开头就是s satat在在九五这。啊,你看这个九五是不是指向也是咱们那个at服务那个脚本。换句话说,我们这个0123。实际上这些文件夹全都是软链接,真正指向的脚本都在这里面的。这些都是软链接,那这个软链接我们刚才也说过了,这些RC几点D,它存的就是几模式下希望启动的服务。或者不希望启动的服务,那怎么去表示哪些服务是要启动,哪些服务不启动呢?就靠这个软连接名称来决定。
41:04
那么软链接如果是F开头表示启动,当然我们看发现还有K开头的,K开头的你应该猜到啥意思。K是不是QM开头你应该猜的,不就你可以理解成start吗?那不就是K开头的,就是这些服务就不起了,那S开头的是不是这些服务就起,那换句话说,我们这里面一大堆服务,好,那在三模式下,这些都是不启动的。那么S开头的就是这些普式启动,不就这意思吗?当然五模式它又不一样,有的是K开头的,有的是S开头的,也不一样。所以我们利用这种软链接的方式,哎,就可以定制说三模式五模式,他们哪些服务启动,哪些服务不启动就可以不一样。虽然我们对应的软链接是同一个,呃,就是这个真正的程序是同一个。啊,这是同程序同一,那这地方呢,我们看到有一个atd啊,这个我们看S开头,S开头在我们5rc5.d里面,刚才是RC3点DRC5点D里面它也是S开头,S开头表示开机启动,那如果我想让它开机不启动,那很简单,把它变成K开头不就行了吗?对吧?那那K开头和S开头它是怎么个顺序执行呢?哎,这就是和我们这个RC程序有关了。
42:26
我们现在打开的就是这个。RC程序,那个RC程序它是怎么来处理RC开头的,这个什么几开头F开头,什么这个这个K开头的呢?你看看这段代码就看懂了,看看这段代码了吗。看这代码什么意思,你看。如果是K开头是不是就执行这些东西啊,其中看这段代码这啥意思。也就是不是如果这个I是K开头的好,它就会加一个stop,我们stop什么意思,Stop不就是把这个服务相当于跟了一个,比方说K这个这个ad,这不就跟了一个这个东西吗?你跟什么,不就把这个图停了嘛,对不对?哎,那同样的聪明的同学应该发现了,你看他这是不是还有S开头的,那S开头他会怎么办呀?哎,他会添加start这个,你看那这是不是大。
43:28
那加大不就起来了吗?不就意思吗?那换句话啊,那现在明白了,闹了半天,这个软链机的名称就决定了这个服务到底起还是不起。是不是这个道理啊?回过头来看看,我要求大家写那个函数,那脚本你知道什么意思了吧?那函数不就是后面加不同的东西,让它能实现不同的功能吗?你加大它就启动,你要加stop它就关闭,你加这个大就重启,是不这样。啊,不就这意思吗,就这一个脚本支持参数。
44:00
而且这个参数加什么和名称有关,你这个名称是K开头我就加stop,你如果是S开头就加啊。而这就是他背后的逻辑。当然,那我要想给。啊,那而且还有一个问题,还就是他们之间的执行次序,因为K开头也好,S开头也好,它是不是有好多都是S开头的和K开头的,那问题是他们先执行后执行有一个次,那次序由谁决定呢?次序由谁决定?由他决定,由便利次序决定啊。那就是由这个次序决定了,这个次序是啥,它就执行啥,那你看那这个显示次序是啥。比方说我们以三开头,以三为例,三。
45:00
我这行次序对不对,那当然大家应该发现它这个显显示次序,诶,那这个是数字的意思吗。是纯粹按数字大小来排的序吗?那表面上好像感觉真的是数字,但实际上我们都知道文件的排序并不是以数字为单位的啊,数字排序它是按照字符顺序排序的。啊,比方说你看这个0101的话呢,呃,如果说我这儿建一个文件叫。1TEST。我建个1TEST,我再建个10TEST,你说这两个文件真正显示的时候,谁在前谁在后一的就是如果就行的。
46:13
反而一零在前了,为什么一零在前?因为一大家都一样,那我就比第二个零和点零的优先级比点高,所以它就要一零先显示了,明白吧,如果是脚本的话,一零是不是就先执行了,是不是这意思?所以不要误认为它是数字,不过他这写的时候就要尽可能遵守这个数字的,那按照这个方式的话呢,就是这个是先执行,最后是后执行这个。当然先执行后执行,这是之,之所以这么设计,那肯定是,是不是有些服务之间可能还有依赖关系啊。对吧,比方说最典型的例子就是网络服务,网络服务你看他排在了好前面啊,Network网络服务那我们这边我们都知道,你像我们天天用的SSS远程连接,你说这个SR服务,它依赖别要的网络呀,依赖啊没有网络那S连不上去呀,所以呢,人家网络服务是不是应该先启动,你是不是应该后启动啊,对不对,所以你看你就排到了S55,这人家是幺零是吧。
47:20
八。那现在请问大家一个问题。如果你将来。编译安装一个软件,自己也想让这个软件开机自动启动。比方说咱们。考试不是考虑到提叫一键编译HTTP吧,那个一键编译HTP,它不是没有做成这个启动服务嘛,我们是手工启动的,那将来我们也希望它开机的时候自动启动,那你要写一个啊开机启动脚本,那开机脚本这就要写一个S开头什么什么一个软链接给他,那这个S开头软链接后面应该跟他这个数字应该是多少,你应该想想应该用多少合适啊。
48:01
啊,这个是咱们自己准备吗。啊,你自己写一个叫,那你说你将来S开头,你不是开机启动吗?你开机启动不是S开头吗?S开头应该后面跟几啊跟几合适啊。那跟几合适啊,你自己研发的服务是不是有可能是和系统一些自带的服务有依赖关系,所以尽可能往后放。啊,你别人说,哎,我当老大吧,我排第一个,你排在第一个,人家网络服务还没启动,你H服务起来是不是有问题啊,对吧,所以往后放,往后放放哪呢?比方说哎,这个放到at TD后面,At后面96不是没人用吗?是不是96比较合适,对吧?哎找一个就是插个插个空嘛,是吧,插个空没人用,我就待在这。这样的话呢,这些服务按顺序起起到我们96的时候,就把咱们的HP扶起来了,理解了吧,HB服务起来了。当然这个东西我们要定义它的这个次序,这个你自己要在脚本里写的啊,自己要脚本里写。
49:04
那当然这是F开头,那同样的还有K开头,K开头是不是也有个执行次序,同样的也是按照这个字符顺序来。执行。哎,我这里面有一个问题大家思考一下,就是开机的时候,这些服务本身是不是就是没启动啊,那既然没启动,我何必执行stop呢?我我本身服务都没启动,我直接缩干嘛呀,他就不我不起它不就得了吗。那它是怎么实现的呢?哎,这就是我们之前给大家讲的。看到这句话了吗?啊,往上翻。你看这句话。这什么意思?你比方说你刚开机的时候,是不是要先执行K开头的,K开头就是关闭它,你要执行stop,但是大家都知道这个服务刚开机,它没启动,你执行stop是不是没有意义啊,就不执行不就得了吗?那不执行怎么跳过这个执行啊这个吗?就判断此文件存在不存在,如果存在那就说明浮起来了,我就执行它,如果不存在,干脆那就肯定就跳过就行了,那这个循环是不就不执行了呀?那这不执行了不就下一个就行了吗?那也就干脆就不执行stop了,不存在说明这个服务没启动,没启动我就不执行了。
50:25
是不是这背后的逻辑就是这一套来实现的?好,那我们懂了逻辑以后,当然你像我们真正控制的话,不可能去手工去写这些什么软链接啊,这些东西太多了,那问题是来了,那比方说就以at TD服务为例吧,At TD服务呢,在3M3模式,现在是开机启动的S开头嘛,那现在我不想让它开机启动,那我们就应该把它变成K开头就好了,那怎么变成K开头呢?用不着手工改,要手工改的话太麻烦,不是不行,可以改,我们有专门的工具可以让他来实现。
51:00
变成开机不启动,方法呢,有这样的一个命令,叫NTSV。这个命令可以把所有的服务进行开机启动或者不启动的调整,大家看这列出了所有服务。而这些服务星号开头的就表示开机启动,所以大家看atd这是不是有星号啊,那你把这个空格一拍,它不就开机不启动了吗?当然这时候大家应该明白,他最终改的实际上就是把那个S开头的变成K开头。啊,那现在我们切换到OK存一下,那注意我现在他只改了当前模式啊,当前我是什么模式。三模式,所以它只改的是S那个RC3.d,那你看这里面我们再看RC3.d。RC3.d,你看这里面的atd现在还是S的95AT TD吗?S95还有它吗?没了,没了去哪了?K开头去了,K变成多少了?K05去了。
52:14
7057,诶刚才是九五,现在是零五。啥关系啊,加起来是100是吧?啊,难道他真的有100的关系吗?这也没有啊,这是凑巧了,巧凑巧了,不过呢,有一定的逻辑关系,大家想S开头95是不是号偏后,那你偏后你开的时候,偏后你关的时候就应该什么。就应该在前面关,是不是这意思,你想想是不是这个道理。你开的时候后开后开是因为有好多服务你依赖人家,你关的时候不得先关了你吗?你不先关,你先把人家你依赖的服务关了,你这服务不就有问题了吗?所以是不是这个开服务要晚,关服务就应该早啊?
53:05
所以呢,你是S号大,那么将来K就应该号小,是不是这意思对不对,当然这个号零五也好,还是零六也好,那这个是谁定义的呢?诶,这是由我们的脚本定义的,这个脚本里面它定义了,那它指向的实际上它指向的是我们一。RK05AT TD啊这个实际上它是个软链接,它真正的指向的程序呢,在内的D下面,所以呢,我们可以看一下这个内的D下面的atd,你看这个脚本里咋写的,大家看这有一个九五看到没。实际上你这个95怎么来的,就是由这行来的来的。啊,为什么一个95,一个是五,就是因为这。但是大家可能发现这个是什么东西,这就是我现在开机默认情况下是什么模式,是S开头的,默认是345。
54:05
所以现在为什么我们现在三模式开机,它是ATP服务式启动的。啊,五模式也是A启动的,因为这写了345。那当然这没有写二,没有写二是不是应该在二模式下,它应该是K开头的是吧?那我们来试一下是不是RC2点D2点D去找一找那个atd的,你看它是什么开头的。是不是可以开头?因为他写了345嘛,345就是默认只是345是二。啊,开机的。我打。当然,我刚才给改了,把人家给改了,我是不是人为用用命令就把人家给改了。改了以后就不一样了,但是这个东西命令有个缺点,就是它只能改一个模式。改什么模式,我现在是五模,呃,三模式,我就改三模式,那如果要改五模式,那你只能这么写,你再加个选项。
55:00
你纸上你要改五模式的,我们知道这个atd服五模式是不是还是现在是S开头吧,我没改吗?那现在你要改,你看这样是不是找到它把它也去了,是不是它也变成off了,就开机不启动了。哎,改了改了以后呢,验证一下吧,看看它那个RC5.b是不是也变成了K开头。下了吧。但是这个命令啊,说实在的不好用,因为每次他只能改一个模式,太烦,所以我们有一个更简单的方法,这个命令,这个命令可以一次性的把好几个零到六七种模式,你都可以进行调整和查看,看起来比较直观,看呢它有一个命令叫。可以看所有服务在零到六的七种模式下,到底是开机自动启动还是开机不启动,也就表现为一个是K开头,一个是S开头,看非常直观。
56:03
看,比方说我们找ad,大家看是不是刚才的三和五被我改成了off,就是开机不启动对吧,但是四模式我没改过,所以默认还是二,这不就看的清清楚楚了啊,这里面每个服务都能看,当然你也可以去只挑某个服务看也可以。就是只看这个服务,那现在过滤一下。这个命令不仅可以看,还可以改。还可以改啊,比方说我现在又想把三和五再把它视为开机启动啊,目前来讲呢,这些都是已经变成K开头了,那我们可以在ETCRC清点D里面去找所有的atd的这些文件,大家看目前来讲你这显示的这个和这是不是正好对应的,你看零零啊,RC0点DRC0点D呢是K开头是不表现为是off 1.d是K开头是不是off,二开头是K是不off,三个开头的是K是不是off,五开头是S是不是表示了。
57:11
看见没,是不是对上了,对上了吧?啊对上了,那这个命令呢,还可以改,那我可以把它改了,那怎么改呢?啊,比方说我现在把三和五变成二,变成二以后呢,稍后再看的话,这应该就变成S开头了,这应该也变成S开头了,那怎么变呢?非常简单,LEVEL35AD2就行了,就这么改,简单一条命令改两图改两个,这个这个运行级别都可以改,改了,改了以后你再验证一下。大家看是不是三五也变成二了,大家我们看一下那个文件名是不是变成S了,S开头了,看改了没?你看三刚才是K,现在是不是变成S了吧,五是不是也变成了S了,改了吧。
58:00
所以用这个命令改的话是方便,当然有说我就想用改软链接的方式,能不能改可以啊,你可以直接把它软链接改了,比方说我们就跳舞来改。啊,它是这个F995的,好,那我就把它改了。我把他删了。我把他删了。不就是个软链接吗?那重新创建一下啊,创建啥呢?哎,创建一个点点D。Ad创建一个软链接。叫S。K开头,K05。刚才是S开头,现在我被我删了,重新创建一个K开头零五。
59:05
好,创建完以后呢,我们再执行一下这个命令。你看它是不是应该五变成了二。要了吗?明白了吧,所谓的二号不就是个软件接的名字吗?对不对,那本质上就是这个,不过我们改软连接麻烦嘛,是不是还是用人家这个命令提供的现成方便,对不对,这命令改起来多方便。对吧。好,那我们讲了这些以后呢。那将来我们比方说编写了一个编译了一个软件,我想把它也就像这样做成一个服务开机能启动,那这个怎么写呢?那这个脚本格式要符合要求,什么格式呢?就是参考这个文件,你可以看看人家怎么写的这个脚本。
60:04
这里面全是脚本,这些脚本都符合一个启动脚本的规范,就是有两个规范要遵守,第一要写个check,这个呢,就是将来S开头的数字和K开头的数字。然后这个呢,是表示刚刚加入服务以后,到底你是属于。什么模式下是S开头的啊,345呢,表示345就是S就是。开机会自动启动的表现为S开头,除了这一行,还有一个叫描述,描述也要写上这个描述,随便写一些文字描述就行了啊,同时它也是个share脚本就完了,就这么多要求,当然了,作为服务来讲,我们一般来讲是不是经常要执行一些什么,呃,比方说star啊,Stop啊,Star这些操作呀,所以呢,对这个脚本来讲,也应该支持这些参数,那怎么支持呢?非常简单,就加加函数呗。
61:01
你看start stop加这函数。然后通过这个调用就行了嘛,那比方说当你的到一是start的时候就调用这个,呃,Stop的时候就调用这个不就完了吗。啊,所以这就是服务脚本,就这么写。啊,比方说上次不是留了一个作业让你们写那个函数吗?那函数那个题是怎么回事儿来着,你们还记得吗?有一道题就是用函数来完成这个功能,那实际上当初就是是写一个服务脚本。就这道题,看到没有?那现在你写完了吗?
62:00
啊,你看他不是要求要创建这个文件吗?这个文件呢,如果有那表示启动,那实际上很简单啊,那怎么做呢?啊,我们可以写一个来让大家看看。先到这来准备一个文件叫test吧,就自己测的一个服务啊。啊,星释放机制还得写吧?啊,刚才说了要写康这个,这是要求啊。他虽然是个脚本,但它有两个要求,要特殊。啊开机你希望就是把这个加入服务以后呢,你希望什么模是哪个模式下是,呃开头是要启动的,那如果是345,你就写345,如果我写个横线,那意味着刚加进来所有服务都是所有的模式全是off的,全是不启动的。啊,那不启动也好,启动也好,你最终有可能后来改改的话呢,如果启动的话,数字是呃,S开头后边跟紧,比方说我们刚才发现96个人没人用嘛,你就写个96吧,但是你这96,那将来K开头不有个数字吗?K头几啊。
63:15
嗯,加起来十一百嘛,没这个说法啊,所以呢,我就写个三嘛啊,就故意的不是100啊,要不你非得理理解100了啊,然后呢,接着我们这加个描述叫description。Description。啊,这个单词对不对。啊,你要是不行,你就参考一下人家别人写的脚本。
64:00
诶,不在这吗,少了个D这件事,好这description。我复制一下吧,别写错了。然后那这这是一个测试的。测试的服务脚本听完了吗?啊。然后接着里面就写你要干的活了,写啥呀。就把我们题目要求写一下就行了,比方说我们写个start函数,当然我们这加载一下那个系统自带那个函数库吧,那个用起来不是方便吗方式。是这个吧,哎,加载一下吧,然后这是一个start函数,这个函数呢,呃,将来将来我们这个脚本将来要支持什么呢?支持参数。
65:02
就是如果将来我们写这个test s RV后面跟可以跟stop,可以跟start,还可以跟status。是吧,那这三个这这这四个参数都得支持,那四个支持的话,我们是不是就要判断了,说第一个参数是。是start的时候我就干嘛,我就调用start函数呗,对吧,所以我这这是不是就得写个start start start函数,哎,那同样道理啊,如果这是stop,是不是要调用那个stop函数。但是这个函数待会儿得准备好。那如果是。是不是,当然这个我们就不用再写了,因为先stop再start不就行了吗?是不就他俩组合吗?对不对,对吧,然后还有一个是status。
66:08
那status可以来调status函数,当然可能对方就补写了一个我不支持的,不支持的我就打一个说明不就得了,你看人家这怎么写的,这不有一个说明吗。这不现成的吗?拿个就行了啊是吧,当然咱们这不支持这么多东西啊,我们只支持一部分,所以我这块就把这些不支持的就删了,咱们只支持几个是吧,这几个。把stops,然后ES。GC是不是结束了,那接着你就把那面函数写上了,然后第一个函数是start啊,第二个函数是啊,Stop,还有一个status。
67:05
行。多了个括号啊,还有啥函数不用写了,这个就是start加stop加就完了,然后接着就开始写函数,改成好在这start start啥意思?再就是把刚才那个题目的要求是怎么做,是不是就把那个文件判断一下。如果start是不是就是创建这个文件啊,那我就直接创建了啊,啊这个图就叫SRV。然后这边我就给他touch创建出来。哎,创建出来创造。创建出来以后同时执行一个action,当然这个地方正确要判断一下啊,说这个服务已经启动,哎,那咱们就模拟一下吧,你看看人家平时服务启动是啥样的,比方说我们启动一个atb,呃,那star我现在把它停了啊,停是这个样子,启动是这个样子啊,是这个样子,好了,那我们就知道了,不就是跟这个东西吗?Studying后面跟上这个东西啊,那就是。
68:21
啊,这个SRV行了,这不就模拟了启动成功了吗。是吧,那stop呢是啥?无非就是把这个文件删了。把这个文件删了,删了以后呢,执行。今天。Stopping啊,这个你看这边是不是stopping stopping。
69:10
啊,这不行了吗?删了,那thess是看它的状态,那状态的话是不是就判断这个文件存在不存在对吧?哎,如果这个文件存在,比方说我们就这个中国号存在与否,如果存在说明这个服务就正在运行啊,比方说啊,我们看一下SP啊,他这有个进程在运行,那我们就写上正在运行。如果存在,好,那我就打一句话说啊,Echo一下吧。正在运行,我就不写那么详细了啊,大家知道这个意思对吧?哎,说这个服务正在运行。
70:03
如果这个文件不存在,那说明这个服务就停了嘛,啊,比方说我们把它停了,停了以后你看看人家这边什么样啊,就stop。不就这意思吗?啊,Test是停了的,是不是就就就这么简单啊,啊就这么简单,就判断这个服务启动不启动,不就是看他这个有没有这个文件吗?啊当然我们可能还有一个更复杂一点,比方说你去启动的时候,说不定人家这个文件已经有了。说不定就是人家已经启动了啊,对吧,比方说你看我这现在这个服务是停的,结果我又想停一次,又想停一次。我又想提一次,又stop一下,你看他就啥也不干了。啊,也就是说人家已经停了,你再停一次是不是就啥也不干了啊,所以呢,我们这是不是将来,呃,如果是停的时候,本身人家已经停了,你是不是就不用打印这句话了,对吧?那所以我们这儿是不是应该加个判断,那如果。
71:17
如果这个文件存在。如果这个文件存在,那当然你去干这个事。如果这个文件存在,你去干这个事是吧?哎,如果不存在。如果这个文件不存在,那不存在说明他就跟啥也没干嘛,那是不是我就直接退出就好了。是不是这意思啊,那我也不执行底下的操作了是吧,不就完了吗。啊,那同样的启动的时候是不是不是也存在这种问题,那比方说启动的时候,我我先把它起来,起来以后再启的时候,那动它已经起来了,是不是就啥也不干了,对不对?哎,所以我们是不是也可以在这同样的做这样的事,在启动的时候,如果判断一下这个文件存在。
72:13
这个文件存在存在,我们就判断它已经启动了,启动了那我就退出就好了,不存在了,我是不是就执行创建的文件,并且打一句话启动它。是不是看明白了吧,啊啊,这是大体上就这样做就行了啊,当然我们没有考虑特别复杂的场景,这这是不是基本上够用了,这这差不多这个脚本不就是。初步有点像那个服务的样子了。啊,无非就是你们将来比方说你要编译HTDP,你无非就是你将来不是光打印这东西,你是不是能用程序启动起来不就行了,对不对?好,那这样的话呢,我们这个脚本就写完了,大家看中间有什么疏漏的地方。
73:06
啊,粗略的就是这么来判断的,好,那接着我们要加执行权限,因为这是要执行权限的,你看这里面的脚本,人家都有执行权限,对不对,所以你要加执行权限,那加上执行权限以后呢,现在你是不是就可以用它了,比方说我现在就可以诶启动一下了啊,比方说我先看看吧,看看这个我们自己写的服务是不是。这个这个状态你看是停的是不是好使啊,对吧,那我们洗一下吧,诶你看看起来是不是还还不错呀,启动成功了,那实际上啥也没干啊,那还有状态吗?诶是不是有那个意思吧。是吧,那我们也停一下吧,把它停了,停了以后再看是不是这个意思啊,待会我已经停了,我再停一次,你看啥也不干吧。
74:01
对不对,哎,启动了再启一次啥也不干,是不是就跟我们系统自带的服务差不多了啊,当然现在还有个问题,就是我怎么让它开机启动,现在它是在这里面能看到他吗?这里面有没有它大家发现没有,为什么没有呢?就是因为你没有创建对应的各种软链接。你这软链接里是没有他的,你看没有,根本就没有。啊,这里面有人家那个APP呀,那些服务就是没有你没有。但是这些软件之前我们说了,手工创建不是不可以,太麻烦了,所以我们刚才说过有个命令叫这个可以把它加进去,知道吧,把它加到这个服务列表里面去,一旦加进去以后你再看。
75:01
过了吗?出来了吧,当然我们发现怎么全是off的呀,这是为什么呀,这不全是off的呀,哎,因为我们当时就是这么说的,我们这里面是不是写了一行就这个这个这个杠呢?那杠的话就是所有模式全是不启动的,那如果你写个345,那就是3545就是二知道吧,那当然我们现在没关系,我可以把它改了嘛,那加进来不是没有吗?加进来没有没关系,我可以后改,比方说怎么改啊,还记得吗?比方说我现在希望三和五是二,二的,那我就三和五是二不就行了吗?这不就行了吗?这把它改了,改了以后看是不是真的改了,改了当然那你应该知道所谓的on of不就是软链接吗?所以呢,我们现在看一下,这是不是就出现了,所有软链接出现了。
76:03
那这不就行了吗?那当然为了看到更效果更明显啊,我现在既然三和五开机,它是能做到启动的,所以我这故意的加一个。加一个休眠,因为这样的话呢,咱们能看见。休眠的,比方说三秒钟这样的话,咱们能看到启动的时候那个卡在那,哎有一个停顿就知道,哎确实起来了,那看看要子吧,看是不是都长得跟咱们系统服务类似的,走一下,看看咱们自己做的服务啊,这是看看能不能像一般的服务一样,也能看到一个什么绿色的,OK。当然这个地方因为它默认是有个隐藏的,它转圈圈的时候呢,把我的符给挡住了,所以按一下ec啊,要不它默认看不到,你看把这个按e ec以后,你看每个服务启动OKOK就能看见了。
77:04
要不你看不见,看看盯着点有没有咱们写那个test s RV。不过他是排在最后的是吧,因为他96秒是吧,排在最后看见了吗?三秒钟看见了吗?诶是不是长的。咱们也成功的成为服务了,是吧,就编了一个啊,就这么简单。就成了,那无非就是将来你上工作以后呢,你把你自己想执行的东西替换成里面的想干的事不就行了,大的框架咱们已经有了,是吧,框架已经有了,不过呢,这个问题还是有一点,万一你的脚本出了故障,比方说我这万一不小心写了一个写错了,那请问这时候怎么办?怎么能解决这个问题吗?这就起不来了,你知道它会卡在那啊对一直等等等等那么长时间,那这时候因为这一个服务搞得不好,导致你机器起不来了,是不是这意思是吧。
78:12
那这个问题怎么解决?这是个故障排错啊。这这故障排速,这故障排速怎么排?因为服务写错了,或者顾服务出问题了。导致咱们服卡在这儿,迟迟无法下一步进不来。你看那这个服务呢,这样做,那我现在能不能远程连啊,实际上它已经成远程连了,只不过就是你看不到后面的过程啊,后面的过程。那这个终究来讲界面看不见,那这个问题怎么解决。这个这个故障实际上不严重,因为我们这还可以敲命令的,你看见没有,是不是我们这还可以敲命令的,那实际上大不了改回来不就行了吗?啊或者如果说连网络服务都没加载,出了故障,那实际上也有简单的方法,你就是可以进到重新开启进单用户。
79:11
进单用户以后把这个东西给它改了,怎么进单用户啊,重启以后进单用户。重启啊,假设就我们这个服务坏了以后,导致我们网络都连不上去了,那这时候怎么办呢?单用户在这挑单用户,单用户进来以后。你应该知道怎么办怎么办啊,就是这个服务起不来吗?服务起不来,那我们把它别启了呗,我们是不是可以让它先不启动啊,那怎么做呀,在这改了它不就行了吗?Test s RV off这个呢,可以直接改,这off的话就相当于把二到五全给它改off了,这个就是相当于我们就不用写那个level了,就二到五全改了,因为二到五用的最多嘛,所以我们往往就不要写模式,那这一改你看是不是全是off了,全是off以后呢,你想你下次再启是不是它就不启动,不启动是不是机器不会受影响了,对吧,就可以跳过这个故障,当然这个没有彻底解决啊,只是说哎,我们先让机器起来,起来以后咱们咱们再说呗,是不是意思啊,至少这个故障不会导致我们机器起不来了。
80:22
是吧?那将来我们万一工作中不一不一定是你自己编的服务啊,有可能是系统某个服务出了故障,卡在那半天起不来,这时候你就可以用这种方法。是哎,跳过它,跳过它,至少咱们机器起来,起来以后咱们才能做更多的事,而这就是这个。启动服务的实现,啊,启动服务的实现,哎,起来了。啊,当然这个服务由于没有加载,所以它自然它不应该是启动的,看到没有还是没有启动啊。
81:00
啊,当然这个服务你要是写错了也没关系,比方说我这个地方写错了参数,你看他是不是也能告诉你,告诉你说明啊,这些都是有脚本实现,看到没有。但是这个服务如果我不想要了,想把它删了,删了那也简单,删的话实际上就把所有软链接删了就行了,不过删了链接不如我们用专门的命令删啊,那就是用这个命令能加就能删,这就是把所有的软链接全删了,把这个命令实际上就把所有软链接删了,你看软链接一旦删了以后,你看RC这个新点D的啊,新的test s RV,你看就全没了。那全没了,那个列表里就没有它了,你看这里面就没它了,看到没有,但是这个脚本删了吗?这个脚本删了没有,没删对脚本不会给你删,只是把软链接删了,听了吧,啊,这样的话,软链接删它就不能做到开机启动了啊,这就是他背后的时间逻辑,所以你们现在就可以参考我这个把我们HTTP的个一键安装真正的写成服务了。
82:18
以前的话,我们启动服务你们怎么起的,是不是手工的执行了一个什么阿巴提CPL这么来起来的,但这个启动你每次启动以后,计算机起来手工起,那这个不能做到开机自动启动啊。那现在你是不是就可以把这个命令写到哪去呢?比方说你把这个命令写到这了。不就行了吗?这不就他就可以开机启动了吗。是不是?就这么简单吗?啊,你要停服停服务这个阿帕奇CT啊,Stop,是不是就停服务对不对。
83:04
哎,你把把你们考试题那个一键安装脚本,现在就可以做到开机启动了啊,不仅编辑完了还能做到开机启动。你怎么?啊,这个脚本把它拿出来啊,之前写过,可以分享给你们,你们可以,当然我建议你们自己写一个,这个自己写一个,自己写一个,反正这个框架照着这框架抄就行了,也没什么难的,是不难吧,那这个题目实际上就帮我们做完了,已经看到没,是不是。看来你们都没做呀,做了是吧,做了苹果这个写的怎么样啊,好吧,那应该到时候共享一下啊,共享一下。
84:04
好,这是咱们给大家讲的这个啊,这个启动顺序,启动顺序。啊,当然我们写这个脚本啊,虽然说难度不是特别大,但是对于好多人来讲不爱写啊,为了开机自动启动还写这么复杂一个东西,哎呀,觉得有点烦啊,也有别的办法啊,当然这个更简单的方法咱们下午再说啊,这样的话咱们就不用写脚本了,好,那我们下午再继续后面内容,咱们上午先上到这。
我来说两句