shell运行原理

前言

前一段时间由于身体的缘故和一些琐事,好久没有更新Linux的博文了。从本篇博文开始会接着以前的内容一直持续更新!

本期类容介绍

为什么存在shell外壳?

什么是shell外壳?

shell外壳是如何工作的?

一、为什么存在shell外壳?

Linux广义上说是内核+外壳组成的,内核就是说操作系统的内核,外壳为就是在内核周围的一个可执行程序(命令行的等你输入,并给你输出的那个)。

狭义上讲,Linux是一款操作系统,只有单纯的内核组成。但是Linux的内核是非常复杂的,我们一般的使用者(用户)是无法直接和内核进行正常的交互的!主要的原因有两方面:一是内核操作难度很大一般用户容易控制不住,二是一般的用户可能在直接访问内核时会有一些非法的或不安全的操作会造成内核的安全问题!总之,就是一般的用户对内核操作很困难!此时,是通过内核的外壳程序即所谓的shell来与内核直接交互的!

举个栗子:

假设你要开车去上班,你是不是与车要交互呀!你是直接去打开发动机去与车交互在发动机那块让车起来的吗?不是吧!你开车直接与发动机交互的话是不是很难也很不安全呀!你只需要拿着钥匙,转一下。让钥匙这个对象帮你去与发动机交互呀!这里也是一样的!你不需要直接与内核交互,你只需要与内核周围的shell外壳进行交互即可!

这里也就知道了为什要存在shell外壳了:原因是用户不能直接访问操作系统的内核!

二、什么是shell外壳?

shell是一款内核的外壳程序。

从技术角度最简单的shell的定义是:命令行解释器!

它的核心就是将用户输入的指令翻译给内核处理,同时将内核的处理结果反馈给用户!

举个栗子:

就很像你一开始谈对象的时候的那个中间人一样!你把你的想法告诉中间人,中间人告诉你的意中人,你的意中人处理后的结果在给中间人,中间人在反馈给你!

OK,看看实际操作:

对比win的GUI,我们在操作win的时候也不是直接对win的内核直接操作的,而是通过点击图标进行的,其实点击的图标类似于我们这里的shell外壳!只不过win将shell外壳图形化了!同理shell对于Linux有相同的作用,主要是对我们的指令进行解析,然后内核,然后将内核的结果解析反馈给用户!

三、shell外壳是如何工作的?

我们上面刚刚解说过shell外壳本质是一款执行起来的程序(进程)!

他的工作方式主要是:

1、低风险的操作自己亲自去执行。

2、困难的、有风险的让shell外壳创建的子进程去尝试!

每次你登录xshell的时候系统会给你当前登录的用户创建一个shell外壳程序只不过名字不一样!一般是bash!我们登录上去看看!命令解释器不只是有shell, shell如果是媒婆的话,那么bash就是王婆,sh就是李婆!

低风险的自己去做我可以理解,但是有风险的不应该自己去做吗?简单的不应该让子进程去做吗?是的!现实生活中的很多是这样的!但是这个不同!如果高风险的操作自己亲自去做当前进程挂了咋办?是不是直接出问题了!所以为了保险起见,让子进程去执行高风险的操作,这样即使子进程挂科,shell还在,还可以继续正常工作!OK,我们可以写一个代码看看:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>int main()
{printf("我的pid:%d \n", getpid());//获取子进程printf("我的父进程的pid:%d\n",getppid());//获取父进程return 0;
}

shell一看这是用户写的,是不是有风险呀!所以就让子进程去执行了!

OK,shell的运行原理暂时只能介绍到这里了,后面的知识学了会在后面介绍的!下面我将所有的内容用一个例子来帮助理解一下:

假设你是一个从小就学习很好的学生,高考后考上了大学学的计算机,你也比较刻苦每天专心在学习,等到毕业后你的技术已经超过了学校的同龄人!也如愿的找到了一份满意的工作,但是过了两年后你爹坐不住了,每天催你找对象结婚!但是大学时期你每天都在和电脑打交道,与电脑交流是非常熟悉的,但是与人交流不行了!害羞,社恐!这是你爹看出你的窘迫于是问你儿啊你看上哪家的菇凉了,你爹我认识村东头的王婆,她可是远近闻名!你爹我好嘚也是一个村长,我让她帮你问问保准可以成!你同意了,你爹找来了王婆,你说你看上了隔壁的翠花,于是王婆得知后就去隔壁家问了!但王婆一到翠花家里就发现,翠花和张三好上了。。。于是王婆不好意思的回来,想着哎呦这可咋办嘛,人家是村长不好得罪,但是这里强行问的话或有被骂的风险,毁坏了我王婆的名声。于是他就让她的徒弟替他去问了,结果出事情了,但是王婆给村长的就是是徒弟业务不行,这次搞砸了,下次遇到好的我给你推荐!这样下来给了村长家一个交代,也自己的名声好着了!

你就是用户,王婆就是shell\bash\sh等命令行解释器,王婆的徒弟就是子进程,翠花就是内核!

OK,本期内容就到这里,下期我们再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【办公类-16-07-03】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环、有场地、贴墙版”(python 排班表系列)

作品展示——有场地说明 背景需求&#xff1a; 前期做了一份“贴周计划”用的班主任版的户外游戏安排表&#xff08;中X班19周&#xff0c;没有场地&#xff09; 【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地&#xff0c;6周一次循环”&#xff08;…

认识TypeScript 中的接口和类

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 接口 类 江城开朗的豌豆 在 TypeScript 中&…

企业办公终端文件数据\资料防泄密管理系统——天锐绿盾 | 防泄密软件——自动智能透明加密保护核心数据资料,防止外泄

其“数据防泄密系统”是一套从源头上保障数据安全和使用安全的加密软件系统&#xff0c;已全面覆盖Linux、Mac、Windows系统&#xff0c;可进行各类型文档加密、音视频加密、源码加密、Cad图纸加密、多种类型设计稿源文件加密。 PC端&#xff1a;https://isite.baidu.com/site/…

移动通信相关知识学习笔记

一、移动通信架构简图 移动无线的接入网是专指各种基站设备。核心网就是各种交换机。 二、无线信号基本原理 无线网络中&#xff0c;使用AP设备和天线来实现有线和无线信号互相转换。如上图所示&#xff0c;有线网络侧的数据从AP设备的有线接口进入AP后&#xff0c;经AP处理为…

Maxwell - 增量数据同步工具

前言 今天来学习一个新的大数据小工具 Maxwell &#xff0c;它和 Sqoop 很像。Sqoop主要用于在 Hadoop &#xff08;比如 HDFS、Hive、HBase 等&#xff09;和关系型数据库之间进行数据的批量导入和导出&#xff0c;而 Maxwell 则主要用于监控数据库的变化&#xff08;通过监控…

Docker基本使用【数据卷的挂载及常用命令】

镜像和容器&#xff1a;当我们利用docker安装应用时&#xff0c;Docker会自动搜索并下载应用的镜像&#xff08;image&#xff09;&#xff0c;镜像不仅包含应用本身还包含应用所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离的环境&#xff0c;称为容器&am…

基于MATLAB的QPSK调制解调仿真(仿真图超多,结果超清晰)

基于MATLAB的QPSK调制解调仿真(包含中间各个环节的时域波形、功率谱、频谱图、星座图和眼图、理论与仿真的误码率曲线) 目录 前言 一、QPSK调制解调过程 二、仿真结果 Ⅰ、码元信噪比eb/n010dB时 1、双极性不归零基带信号 2、成型滤波(根升余弦滤波)后 3、调制后 4、加入…

Linux CentOS stream 9 firewalld

随着互联网行业快速发展&#xff0c;服务器成为用户部署网络业务重要的网络工具&#xff0c;但随之而来的就是更密集的网络攻击&#xff0c;这给网站带来了很大的阻碍。防火墙作为保障网络安全的主要设备&#xff0c;可以很好的抵御网络攻击。 防火墙基本上使用硬件和软件两种…

C++函数模板、特例化、非类型参数、类模板、allocator

函数模板 模板对类型能进行参数化成【模板参数】&#xff0c;输入的是类型&#xff0c;生成的是代码。使用的时候&#xff0c;每指定一份类型&#xff0c;模板就会根据类型生成一份新的代码&#xff08;比如函数模板实例化生成的是【模板函数】&#xff09;&#xff0c;有利于…

深度学习(16)--基于经典网络架构resnet训练图像分类模型

目录 一.项目介绍 二.项目流程详解 2.1.引入所需的工具包 2.2.数据读取和预处理 2.3.加载resnet152模型 2.4.初始化模型 2.5.设置需要更新的参数 2.6.训练模块设置 2.7.再次训练所有层 2.8.测试网络效果 三.完整代码 一.项目介绍 使用PyTorch工具包调用经典网络架构…

redis 主从模式,sentinel 模式配置

编辑 sentinel.xml 和 redis.conf redis.conf 中核心是配置 bind 192.168.64.144 daemonize yes protected-mode no dbfilename redis-6379.rdb #默认dump.rdb replica-read-only yes # 自动2.6副本默认只读&#xff0c;也就是slave只有只读权限 replicationOf myapplicat…

Win10/Win11复制粘贴必须刷新才能显示

问题描述&#xff1a; 新建文件夹或复制粘贴文件时&#xff0c;不管是在桌面还是在其他磁盘中都需要右击刷新一下才显示。比如新建一个文件夹不显示以为没有新建成功&#xff0c;导致重复建了好几个。 解决方法&#xff1a; 使用WinR打开运行&#xff0c;输入regedit&#x…

HCIE-Datacom证书有效期多久?HCIE考试有哪些内容?

如今越来越多的人开始关注并参与到华为认证的学习中来。 其中&#xff0c;华为认证数据通信专家(HCIE-Datacom)作为华为认证体系中的高级认证&#xff0c;备受瞩目。 那么&#xff0c;关于HCIE-Datacom证书的有效期以及HCIE考试的内容&#xff0c;你知道多少呢&#xff1f;下…

PCIe学习笔记(2)错误处理和AER/DPC功能

文章目录 PCIe ErrorAER (Advanced Error Reporting)DPC (Downstream Port Containment) 处理器上错误通常可分为detected和undetected error。Undetected errors可能变得良性(benign)&#xff0c;也可能导致系统故障如silent data corruptions (SDC)。Detected errors则又可分…

Flutter面试之渲染流程

Flutter面试中必问的一个面试题就是渲染相关的话题。作为Google在2018年发布的一款跨平台UI框架,使用Dart作为其开发语言,底层使用Skia图形库进行视图渲染,渲染速度和用户体验堪比原生。 Flutter渲染流程 总的来说,Flutter中一帧的渲染可以分为三个过程:请求渲染、绘制和…

MySQL基础学习

MySQL基础 注意&#xff1a;本文的图片截图自尚硅谷MySQL笔记。 一&#xff1a;基本概述&#xff1a; 什么是数据库&#xff1a; 数据库是一种用来存储和管理数据的系统。它是一个组织化的数据集合&#xff0c;可以通过计算机系统进行访问、管理和更新。数据库可以存储各种…

如何使用CloakQuest3r获取受安全服务保护的网站真实IP地址

关于CloakQuest3r CloakQuest3r是一款功能强大的纯Python工具&#xff0c;该工具可以帮助广大研究人员获取和查看受Cloudflare和其他安全服务商保护的网站真实IP地址。 Cloudflare是一种广泛采用的网络安全和性能增强服务&#xff0c;而CloakQuest3r的核心任务就是准确识别隐…

每天一个数据分析题(一百六十)

以下关于代码片段&#xff08;使用sklearn&#xff09;的使用和PCA&#xff08;主成分分析&#xff09;的描述中&#xff0c;哪项是正确的&#xff1f; A. preprocessing.scale(data)用于对数据进行归一化处理&#xff0c;确保PCA分析前各特征处于同一量级。 B. PCA(n_compon…

怎么在抖音带自己的货?带货方式和带货要求,如下所示

我是王路飞。 不管你是无货源的新手小白&#xff0c;还是有货源的厂家/供应链&#xff0c;想在抖音卖货的话&#xff0c;无非就两种方式&#xff1a;要么开店、要么开直播带货。 看似都是在抖音卖货&#xff0c;但其实这是两条不同的赛道。 这篇文章就给你们聊下想在抖音卖货…

C语言系列13——网络编程基础

网络编程是计算机编程的一个分支&#xff0c;它允许程序在网络中发送和接收数据。本文将深入探讨网络编程的基础&#xff0c;包括Socket编程入门、客户端与服务器端的通信&#xff0c;以及常见网络协议的应用。 目录 写在开始1 Socket编程的基本概念与原理1.1 什么是Socket&…