shell运行原理

news2025/1/20 5:56:46

前言

前一段时间由于身体的缘故和一些琐事,好久没有更新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.coloradmin.cn/o/1458066.html

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

相关文章

领域驱动设计(Domain Driven Design)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、场景和要求二、领域模型关键词1.领域2.子域3.通用语言4.限界上下文5.领域模型6.实体和值对象7.聚合根8.领域服务9.领域事件 总结 前言 Domain Driven Desi…

垂起固定翼无人机基础知识,垂起固定翼无人机应用前景,垂起固定翼无人机优缺点分析

无人机定义与类型 无人机&#xff0c;也称为无人驾驶飞行器&#xff0c;是一种无需人工直接操作的航空器。根据其用途、设计及技术特点&#xff0c;可以分为多种类型。垂起固定翼无人机是其中的一种&#xff0c;它具有垂直起降的能力并采用固定翼设计以提高飞行效率和稳定性。…

基于WOA优化的Bi-LSTM多输入时序回归预测(Matlab)鲸鱼算法优化双向长短期神经网络时序回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 鲸鱼优化算法&#xff08;WOA&#xff09;&#xff1a; 双向长短期神经网络&#xff08;Bi-LSTM&#xff09;&#xff1a…

GC调优学习

一.常见工具P62P63 1.jstat 2.visualvm插件 3.Prometheus Grafana 4.GC日志 5.GC Viewer 6.GCeasy&#xff08;强推&#xff09; 二.常见的GC模式P64 三.GC调优 1.优化基础JVM参数P65 2.减少对象产生 看以前视频&#xff0c;内存泄露相关 3.垃圾回收器的选择P66 4.优化垃圾回…

数字孪生核心技术揭秘(一):渲染引擎

数字孪生最早是应用于大型装备制造业领域的一项革命性创新&#xff0c;通过搭建一个将制造流程全部进行整合的数字孪生生产系统&#xff0c;实现从产品设计、到生产计划、再到制造执行的全过程数字化。数字孪生概念与城市数字化管理结合之后&#xff0c;便诞生了“数字孪生城市…

解密短视频上火爆的“私董会”现象

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 最近“私董会”一词再一次上了热门&#xff0c;先是一夜暴火的商业博主dada管培生翻车暴雷&#xff0c;后面是三言财经、互联网大V纷纷发表了自己的看法。 国内领先的私董会服务机构通常每年的收费都在3万元起步。…

Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

1 概述 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&#xff1a;先规…

开源新手之邮件列表

很多老牌开源社区都使用邮件列表作为沟通的主要工具&#xff0c;比如Linux&#xff0c;Git&#xff0c;Apache等等&#xff0c;那么邮件列表是什么&#xff1f;又该怎么使用呢&#xff1f; 作为接触开源社区不久的新手&#xff0c;当然是求助程序员最好的朋友 google 了 什么是…

RK3588平台开发系列讲解(视频篇)ffmpeg 的移植

文章目录 一、ffmpeg 介绍二、ffmpeg 的组成三、ffmpeg 依赖库沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ffmpeg 是一种多媒体音视频处理工具,具备视频采集功能、视频抓取图像、视频格式转换、给视频加水印并能将视频转化为流等诸多强大的功能。它采用 LGPL 或 G…

CF778A String Game 题解

文章目录 CF778A String Game 题解题面翻译Input DataOutput DataInput Sample 1Output Sample 1题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示算法&#xff1a;二分代码&#xff1a; CF778A String Game 题解 link 题面翻译 …

如何通过API在1688平台选品呢?

API接口&#xff08;Application Programming Interface&#xff09;是一种定义了软件组件之间交互的规范。它允许不同的软件系统之间进行通信和数据交换&#xff0c;使得开发者可以利用已有的功能和服务来构建自己的应用程序。 API接口可以分为不同的类型&#xff0c;包括Web…

微信小程序swiper 视频中间大,两边小,轮播滑到中间视频自动播放组件教程

静态效果&#xff1a; 进入下面小程序可以体验效果&#xff0c;点击底部 看剧 栏目 一、创建小程序组件 二、代码 1、WXML <view class"swiper-wrapper" style"background-image:url(/asset/image/hot-banner.jpg);background-size: 100% 100%;">…

Linux程序性能分析60秒+

Linux性能分析大师Brendan Gregg有一篇非常著名的博客&#xff0c;介绍在性能分析开始的60秒内&#xff0c;利用标准的Linux命令行工具&#xff0c;执行一次充分的性能检查&#xff0c;获得系统资源利用率和进程运行情况的整体概念&#xff0c;查看是否存在异常、评估饱和度。本…

Elasticsearch:什么是搜索引擎?

搜索引擎定义 搜索引擎是一种软件程序或系统&#xff0c;旨在帮助用户查找存储在互联网或特定数据库中的信息。 搜索引擎的工作原理是对各种来源的内容进行索引和编目&#xff0c;然后根据用户的搜索查询向用户提供相关结果列表。 搜索引擎对于希望快速有效地查找特定信息的用…

【漏洞复现】大华DSS城市安防系统文件读取漏洞

Nx01 产品简介 大华DSS数字监控系统是一个在通用安防视频监控系统基础上设计开发的系统&#xff0c;除了具有普通安防视频监控系统的实时监视、云台操作、录像回放、报警处理、设备治理等功能外&#xff0c;更注重用户使用的便利性。 Nx02 漏洞描述 大华城市安防监控系统平台管…

计算机网络-广域通信网

1.广域网概念和分类 什么是广域网&#xff1f; 广域网是指长距离跨地区的各种局域网、计算机、终端互联在一起&#xff0c;组成一个资源共享的通信网络。 广域网分为传统广域网和现代广域网。 传 统 广 域 网公共交换电话网PSTN公共数据网X.25帧中继网FR综合业务数据网ISDN…

GitHub仓库文件部署

目录 软件下载和安装 git创建仓库 Github仓库配置 git管理软件配置 Git管理 软件下载和安装 首先需要下载git&#xff0c;以及git管理软件&#xff0c;对其进行安装。 git创建仓库 首先需要创建仓库&#xff0c;在本地仓库文件夹cmd之后输入以下指令创建git仓库文件。 …

数论 - 求组合数

文章目录 一、求组合数&#xff08;1≤n≤10000,1≤b≤a≤2000且取模&#xff09;1.题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 2.算法 二、求组合数&#xff08;1≤n≤10000,1≤b≤a≤10^5^且取模&#xff09;1.题目描述输入格式输出格式数据…

如何搭建一款论坛系统?简单介绍多功能论坛系统。

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 论坛系统简单介绍就是&#xff1a;跟微博类似的app系统&#xff0c;粉丝用户可以很好…

Linux调优指南

更多相关知识可以阅读&#xff1a; https://www.yuque.com/treblez/qksu6c/yxl59pkvczqot9us https://www.yuque.com/treblez/qksu6c/nqe8ip59cwegl6rk 本文不会讲解基础知识。 CPU 设置调度器 这几个调度类的优先级如下&#xff1a;Deadline > Realtime > Fair 如果你…