shell命令以及运行原理(详解)

2023-11-09

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
1.从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。
2.对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
3.shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。

                                        

补充: 

1.命令行和图形化界面

                        


2.OS和外壳程序的关系

                

3.shell外壳

①  什么是she1l外壳 : 包裹在操作系统外层的软件层,方便用户和OS进行沟通

②  shell : 接受用户的输入,交给OS执行,得到结果反馈给用户

③  shell的作用 :a.交互  b.保护OS
④  shell是所以外壳程序的统称,笼统的概念 ;bash是一种具体的shell
centOS7的外壳程序是: bash

                
        
                        

4.Linux外壳程序的理解:

①shell是进行命令行解释的 ,命令行解释器在系统层面上就是一个进程!

②保证内核的安全运行的同时,也要保证自身的安全,如何保护?                                             shell进程->创建子进程去进行命令行解释->如果失败是不会影响shell进程。

③大部分指令的运行,都是会变成进程的。

         

                       

5.shell进程 

①执行一个程序

                 

②进程之间的关系

 1.myproc这个进程是bash帮我们创建的,也就是说 " ./myprco "这个指令是bash帮我们进行执行的。

2.自己grep出来的每一行都有一个grep,原因:当你使用管道的时候grep,它自己在过滤的时候它也要把自己运行起来,只要把自己运行起来也是个进程,自己的进程就包括myproc关键字

                

 ③bash的父进程      

 sshd是xshell登陆,底层用的协议工具,当你用xshell每次登陆的时候OS帮你创建了一个对应的bash;打开xshell登陆的时候就是在链接sshd的一个服务,登陆成功之后这个sshd会帮你创建子进程,然后创建一个bash,所以我们沟通(输入命令行)的时候其实是在和bash沟通。

④进程之间的独立性

 杀掉子进程不会影响父进程

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell命令以及运行原理(详解) 的相关文章

  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • UNIX 统计时间格式

    是否可以格式化 stat 的时间输出 我在用 stat c n A z filename 在 bash 脚本中 但它的时间格式不是我想要的 是否可以在命令中更改此格式 或者我必须稍后手动执行此操作 示例输出如下 lib drwxr xr x
  • 如何在 Bash 中按自然顺序循环文件?

    我使用以下命令循环目录中的所有文件 for i in fas do some code done 不过 我按这个顺序得到它们 vvchr1 fas vvchr10 fas vvchr11 fas vvchr2 fas 代替 vvchr1 f
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • “/bin/bash -l”无效选项

    好吧 我正在尝试在我们的超级计算机上运行隐藏为一项作业的串行 MPI 作业 主要提交脚本基本上如下所示 bin bash l PBS l nodes 4 ppn 8 walltime 24 00 00 cat PBS NODEFILE un
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre

随机推荐

  • 【Php】PhpSpreadsheet安装的坑怎么这么多!

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 人是代码非 一 PhpSpreadsheet不安装直接用行不行 二 安装的坑 1 缺少fileinfo扩展 2 下载中断 3 proc open函数被禁用 4 co
  • Jmeter 集合点详细讲解

    集合点 让所有请求在不满足条件的时候处于等待状态 如 我集合点设置为50 那么不满足50个请求的时候 这些请求都会集合在一起 处于等待状态 当达到50的时候 就一起执行 从而达到并发的效果 那么Jmeter中可以通过同步定时器Synchro
  • Mybatis

    最近又遇到mybatis的问题了 所以把之前写的和补充的笔记一起放上来 一 动态sql 在编写项目的时候经常需要拼接一些复杂的SQL语句 而拼接过程中很容易导致错误 而Mybatis的动态SQL功能正好能够解决这种问题 可以通过使用 if
  • 【长文预警】美团联合创始人王慧文清华产品课

    前言 一 成功和失败的产品 一般来说在一个领域里一款产品的成功对应着无数产品的失败 根据老王个人的经验 成功和失败的比例大约是1 30 失败的原因多种多样 有些啥都没做对 有些作对了一部分 这里列举的失败案例主要讲做对了一部分的 准确说算是
  • sonar.java.binaries的配置

    从sonarQube 4 12开始 sonar将会进行程序的动态检查 不配置sonar java binaries属性将会出错 From SonarJava version 4 12 binary files are required fo
  • 在 Mac 上使用 VMware 安装 Windows 11

    因为项目原因 需要在 windows 环境下测试一下 electron 的表现 于是就记录一下在 mac 虚拟机上安装 windows 的体验 总体来说难度不大 我电脑的情况 2020 款 macbook pro 16g 512g 前期准备
  • golang版本管理gvm

    今天小土带来一篇关于Go版本管理器gvm的小短文 废话不多说 开始安装 安装 如果你使用的mac mac 需要先安装xcode select 没安装过的同学可以按照如下命令进行执行安装 这里不做太多说明了 xcode select inst
  • 地震逃生【最大流模板题】

    题目链接 P1343 地震逃生 简单的最大流的模板 小心 0 的RE情况 读题 另外 写的是ISAP include
  • 微信小程序授权登录页面(有提示窗)

    微信小程序授权登录 有弹窗提示 1 效果显示 1 1 授权登录页面 1 2 授权登录提示弹窗 1 3 拒绝授权登录 1 4 允许登录后 跳转到小程序首页 2 代码 2 1 wxml 文件
  • 日志审计功能实现

    1 前言 日志审计功能就是将用户进行的增加 修改和删除操作内容 操作方法 操作人以及操作时间等统一格式后集中放入数据库存储 这样做是为了提高系统的安全性 方便系统发生事故后的溯源和恢复 2 日志审计实现 2 1 设计数据库 下图为数据库中的
  • react基础06--react综合案例-电商网站导航

    react基础06 react综合案例 电商网站导航 1 介绍 2 案例设计模块 2 1 分类导航数据模型设计 2 2 一级分类导航切换高亮效果 2 3 显示二级分类导航 2 4 路由跳转到二级导航的商品列表 2 5 商品搜索 3 注意事项
  • Go语言面试题--基础语法(29)

    文章目录 1 下面的代码有什么问题 2 下面代码最后一行输出什么 请说明原因 3 下面代码有什么问题 4 下面的代码输出什么 1 下面的代码有什么问题 func main data int 1 2 3 i 0 i fmt Println d
  • U-Boot启动流程详解

    参考 U Boot顶层目录链接脚本文件 u boot lds 介绍 作者 一只青木呀 发布时间 2020 10 23 13 52 23 网址 https blog csdn net weixin 45309916 article detai
  • VAR模型

    文章目录 一 VAR是什么 1 引入库 2 读入数据 3 执行程序 总结 一 VAR是什么 以金融价格为例 传统的时间序列模型比如ARIMA ARIMA GARCH等 只分析价格自身的变化 模型的形式为 其中称为自身的滞后项 但是VAR模型
  • Navicat安装教程

    众所周知 Navicat是一款轻量级的用于MySQL连接和管理的工具 非常好用 使用起来方便快捷 简洁 下面我会简单的讲一下其安装以及使用的方法 并且会附带相关的永久安装教程 简介 一般我们在开发过程中是离不开数据库的 Navicat是一款
  • svn: Can't find a temporary directory 问题解决

    Error Can t find temporary directory internal error 然后试了下其他的SVN源 发现均无法提交 并且update时也出现上面的错误信息 对比项目文件时出现 不能创建目录或文件 公司网站首页正
  • Nginx集群+websocket 获取websocket客户端的真实IP

    Nginx增加如下配置 proxy set header Host host proxy set header X Real IP remote addr proxy set header REMOTE HOST remote addr p
  • UMI多环境配置

    一般来说项目不止有dev和prod两个环境 umi可以通过环境变量 UMI ENV 区分不同环境来指定配置 需求 三套环境 gt 本地测试环境local 测试发布环境testbuild 正式环境probuild 1 在根目录新建 umirc
  • 云计算基础——云计算与移动互联网、物联网

    8 1 云计算与移动互联网 8 1 1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心 可同时提供语音 数据 多媒体等业务服务的开什么是移动互联网 放式基础电信网络 从用户行为角度来看 移动互联网广义上是指用
  • shell命令以及运行原理(详解)

    Linux严格意义上说的是一个操作系统 我们称之为 核心 kernel 但我们一般用户 不能直接使用kernel 而是通过kernel的 外壳 程序 也就是所谓的shell 来与kernel沟通 1 从技术角度 Shell的最简单定义 命令