当前位置: 首页 > news >正文

shell命令以及运行原理

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进程!!

相关文章:

  • 【MySQL】 B+ 树存储的原理
  • 网络安全——SQL注入之安全狗bypass深度剖析
  • java每日一练(2)
  • C# 类实现接口(Interface) 多态 多继承
  • 量子计算(八):观测量和计算基下的测量
  • 2022年第三季度泛出行行业洞察:泛出行行业正在经历数智化升级的关键时期,用户规模保持平稳增长,行业整体良性发展
  • 配置FTP站点操作步骤—图解
  • lazada买家订单导出
  • MySQL事务管理 MVCC,隔离性详解
  • Docker入门教程(详细)
  • 免费申请Jetbrains全家桶
  • C语言中字符串相关操作函数
  • linux篇【11】:linux下的线程<后序>
  • 让学前端不再害怕英语单词(二)
  • Java培训教程给bean的属性赋值
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • codis proxy处理流程
  • happypack两次报错的问题
  • Java,console输出实时的转向GUI textbox
  • JavaScript DOM 10 - 滚动
  • Java教程_软件开发基础
  • js
  • JS 面试题总结
  • Laravel 菜鸟晋级之路
  • Node + FFmpeg 实现Canvas动画导出视频
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 回流、重绘及其优化
  • 技术:超级实用的电脑小技巧
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 将回调地狱按在地上摩擦的Promise
  • 讲清楚之javascript作用域
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 时间复杂度与空间复杂度分析
  • 协程
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ${factoryList }后面有空格不影响
  • (solr系列:一)使用tomcat部署solr服务
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (九)c52学习之旅-定时器
  • (区间dp) (经典例题) 石子合并
  • (转)详解PHP处理密码的几种方式
  • (转载)hibernate缓存
  • ../depcomp: line 571: exec: g++: not found
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET基础篇——反射的奥妙
  • .Net接口调试与案例
  • ??myeclipse+tomcat