【Linux】浅谈shell命令以及运行原理

这篇具有很好参考价值的文章主要介绍了【Linux】浅谈shell命令以及运行原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:上篇博文把linux下的基本指令讲解完了。本期我们聊聊Linux下【shell】命令及其运行原理。

shell调用命令接口还是系统调用,Linux,linux,服务器,运维


 

目录

Shell的基本概念与作用

原理图展示

 shell命令执行原理


Shell的基本概念与作用

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

  • 大家可以从这方面进行相应的理解记忆:我们作为普通的用户,在操作系统内核看来对于普通用户来说,直接去访问或者使用操作系统内核是存在一定的不安全因素的,基于这种情况情况,操作系统在内核的外层就嵌套了一层的【shell】,虽然我们不能直接去访问内核,但是有了这层【shell】之后,我们可以通过【shell】去间接的访问操作系统内核。

注意事项:

  • 这里的【shell】与我们操作系统的“系统调用”是不一样的哟!!!系统调用是程序的事情【shell】是人机接口,是你输入命令的,这两个完全无关。你在【shell】里面输入命令,【shell】会根据你的命令执行程序,执行的程序有可能调用系统的功能。但是执行系统功能的指令,并不一定是通过【shell】发出的,通过【shell】发出的命令也不一定会执行系统调用。

说了这么多,其实理解起来就一句话,【Shell】的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者

原理图展示

shell调用命令接口还是系统调用,Linux,linux,服务器,运维

由上图可以看出,shell 在系统中是处于中间层次的。他为用户和kernel的交互提供了一种方式,方案。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序) 

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。

  • 帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的 且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提 亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫 它王婆,它对应我们常使用的bash。

shell调用命令接口还是系统调用,Linux,linux,服务器,运维


 shell命令执行原理

表层理解  ,我们一般做法就是:打开终端,输入命令,敲回车,等待命令运行,得到结果

那么,对于这个过程进行细致的解析,又包含了哪些东西呢?

  • 打开终端,输入命令,敲回车----IO中断
  • 等待过程:

    shell分析命令及参数----shell(一个终端位置的解释性程序)

    fork拷贝附近成pcb相关资源,为命令执行做准备----系统调用

    exec在fork得到的子进程中执行命令

  • 执行完成,返回结果----堆栈保护

注:

  • 上述的【fork】和【exec】将会在后序给大家进行讲解。

到此,关于【shell】的概念和原理便全部讲完了,后面我们还会进行实操,模拟实现一下。

最后,如果本文对您有帮助的话,希望大家不吝三连哟!!!

shell调用命令接口还是系统调用,Linux,linux,服务器,运维文章来源地址https://www.toymoban.com/news/detail-778564.html

到了这里,关于【Linux】浅谈shell命令以及运行原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • shell命令或脚本 调用远程jenkins并运行job

    shell命令或脚本 调用远程jenkins并运行job

            可以使用job中的token,shell命令调用执行。   shell调用jenkins进行构建时,报错: Error 403 No valid crumb was included in the request HTTP Status 403 – Forbidden The server understood the request but refuses to authorize it 解决办法: 在Jenkins启动命令中,添加crsf关闭配置。 添加启动参数:-Dh

    2024年02月14日
    浏览(9)
  • 【Linux】Shell运行原理和Linux权限

    【Linux】Shell运行原理和Linux权限

    大家好我是沐曦希💕 Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel? 从技术角度, Shell的最简单定义:

    2023年04月14日
    浏览(6)
  • 【Linux】shell运行原理及权限

    【Linux】shell运行原理及权限

     ========================================================================= 主页点击直达: 个人主页 我的小仓库: 代码仓库 C语言偷着笑: C语言专栏 数据结构挨打小记: 初阶数据结构专栏 Linux被操作记: Linux专栏 LeetCode刷题掉发记: LeetCode刷题 算法: 算法专栏 C++头疼记: C++专栏 计算机

    2024年02月08日
    浏览(18)
  • 【Linux】权限(shell运行原理、概念,Linux权限)

    【Linux】权限(shell运行原理、概念,Linux权限)

      🌈个人主页: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 🔥 系列专栏: https://blog.csdn.net/qinjh_/category_12625432.html 目录 shell命令以及运行原理  创建和删除用户 创建新普通用户  删除用户 Linux权限的概念   Linux权限管理 文件访问者的分类(人) 文件类型和访问权限(

    2024年04月25日
    浏览(5)
  • Linux 查询正在运行的shell脚本命令

    Linux 查询正在运行的shell脚本命令

    1.查看当前运行的所有进程。 ps -A 2.如果太多了找不到,看的眼花,可以加条件 grep是分组 查看正在运行的shell脚本的进程shell脚本就是 sh ps -ef |grep  sh 如图下面就是查询出来的所有sh脚本,看第三列就是脚本的进程UID,直接杀死UID就行    3.杀死进程UID kill  4491 如图 直接杀

    2024年02月12日
    浏览(6)
  • 【Linux】Shell脚本中获取命令运行的结果

    【Linux】Shell脚本中获取命令运行的结果

    写shell脚本的时候,常需要将一个命令的运行结果做为参数传递给另外一个命令,除了我们熟知的管道 | 和args,我们也可以通过获取命令的运行结果。 执行结果: 来点复杂的应用: 再比如: 😉 运行结果: 把反引号``换成$()即可 反引号不支持嵌套,而 $ 支持嵌套。 举个例

    2024年02月11日
    浏览(10)
  • 二、Linux入门| shell运行原理及Linux权限的理解

    二、Linux入门| shell运行原理及Linux权限的理解

    centos7的安装方式 1、源码安装(较复杂) 2、rpm包安装(较复杂,未解决依赖关系) 3、yum安装(不用编译源码,不用解决软件的依赖关系,门槛较低) 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了,于是有些人把一

    2024年02月03日
    浏览(5)
  • Java进程ProcessBuilder类的介绍及使用,ProcessBuilder调用外部程序执行shell命令Linux命令

    Java进程ProcessBuilder类的介绍及使用,ProcessBuilder调用外部程序执行shell命令Linux命令

    目录 ProcessBuilder类的介绍及使用 【前言】 【正文】 --构造方法-- --常用方法-- --使用技巧-- --调用本地Shell命令,实例-- 【总结】 【注意】         在做一个项目的时候需要用到运行时动态执行JAVA命令,一开始的思路是运行时生成bat脚本,然后通过Runtime类的exec方法之行

    2024年02月09日
    浏览(6)
  • 【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    现代计算机设计大都遵守冯·诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器: 内存(提高数据读写速度,降低硬件成本) 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控

    2024年02月11日
    浏览(10)
  • Java利用JSCH库远程连接Linux服务器以及操作多条Shell命令

    Java利用JSCH库远程连接Linux服务器以及操作多条Shell命令

    为了实现 DHCP 服务器的 IP 存储、回收和查询机制,我们需要将服务器中 LXD 容器的网卡 IP 查询出来,并且存储到服务器中的 Mysql 中。所以,下面介绍如何通过 Java 远程连接 Linux 服务器以及操作多条 Shell 命令。 创建 Maven 项目,导入依赖 jsch 实现远程连接,往后我们只需要调

    2024年02月13日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包