shell命令以及运行原理
- shell命令以及运行原理
shell命令以及运行原理
Linux严格意义上来说说的是操作系统,我们把操作系统称之为“内核”(kernel),但是我们用户是不会直接与kernel直接打交道的,我们是通过一个“外壳程序”来与kernel进行交互,这个外壳程序也就是我们说所的shell,就比如window下,在用户和操作系统之间进行交互的就是windows GUI,我闷操作window并不是直接就去操作window内核,而是通过鼠标点击,调用图形接口,从而将我们的操作传达给操作系统!
那么我们用户为什么不能直接与kernel直接进行交互嘞?
这个问题也就是要回答shell存在的意义:
1、课可以更好的帮助操作系统与用户之间的交互,通过shell我们可以将用户的命令翻译给操作系统,同时我们也可以将我们操作系统的反馈翻译给我们的用户;
2、保护操作系统;假设我们的用户下达了一些比较危险的指令,那么我们就可以在shell层就终止掉该指令,从而间接的保护操作系统;
3、执行命令的时候可以创建子进程来执行;就算子进程运行失败,也不会影响到shell进程!
下面我们可以通过一个比较实际的例子来理解这个shell命令和运行原理:
就比如张三是一个腼腆的程序员,只适合与计算机打交道,不适合与人打交道;他的老爹嘞是村长,现在张三看上了隔壁村的小花,但是嘞由于他的这个性格就不适合去和小花进行交流,他的老爹就去请了一个媒婆帮助张三,让媒婆去小花家说亲,然后张三将他的需求和要求给王婆说了一下,王婆进行了简单包装,然后就去小花家了,去跟小花交流了很久,小花最终得出了一个不同意的结论!!为此王婆就将这个信息也简单包装了一下并带来回来,反馈给了张三!
这上面的媒婆嘞就相当于我们用户、shell、操作系统中的shell,而张三就相当于用户、小花就相当于操作系统,张三通过媒婆给小花表达心意就相当于用户通过shell与操作系统进行交流,小花拒绝了他的要求,就相当于用户给操作系统下达的命令操作系统做出了反馈,然后由王婆带回反馈给了张三!;
好现在我们故事继续:
张三得知了这个消息,不甘心啊,就叫王婆继续去说,王婆又去了,但是当他要进门的时候,他看到了小花竟和李四正手拉手看电视,双方家长也都还早,王婆看到这就知道张三的事铁定成不了了,为了防止张三做出过激行为,王婆就直接拒绝了张三的请求!
那么这里王婆没要将请求送到小花家,就自动做出判断拒绝了张三的请求,也就相当于shell阻止了用户下达的危险指令,从而间接的保护了操作系统;
好现在故事继续!
但是迫于张三村长父亲的压力和自己的金子招牌,王婆得想个办法解决这个问题,于是王婆想到了一个办法,通过招牌实习生!每当张三要再次去小花家说媒的时候王婆就派一个实习生过去,无论实习生是谈成功了还是失败了都与我王婆无关!!
那么这里王婆的这个办法就相当于shell创建子进程去执行用户命令,无论是执行失败还是成功都不会影响我们的shell进程!!