艾锑无限硬核:理解Shell的概念
2020-03-11 20:15 作者:admin 浏览量:
世界疫情的发展将会对中国产生那些影响
在过去的一个多月,中国是世界最大的疫情受灾区,受感染的人数和死亡人数是2003年非典的10多倍,这个数据让全世界震惊,但好在中国的领导者当即立刻,做出了ALL IN的行动,全力以赴的处理这一件事,当举国上下,所有人的意识,焦点,能量全都聚焦处理这一件事的时候,很快这种靠空气就能传播的新型冠状病毒得到了很好的控制.
近期中国受感染的人数在持续下降,很多地区连续数日新增为零,但万万没想到中国邻近的一些国家有些人被感染,同时这些国家的领导人没有能快速反应,导致这几天在世界迅速的传播开来,从几个人扩展到了近万人的规模,本来只有一两个国家,但因为人数短时间的增长和流动,现在已经在34个国家和地区传播开来,这将导致整个世界的经济降速和减缓,美国硅谷的全球最著名的互联网公司全部放假在家办公, 好莱坞的电影业也全部暂停,还有更多的行业在陆陆续续的停止中,这场全球性的疫情将会为世界的经济带来巨大的挑战.
中国从刚开始的疫情输出国将很快变成疫情的输入国,所以我们接下来面临的是更多的封闭性的政策,不然疫情就很难被彻底的控制,前几天北京新增长的几个人全是从国外回来的,如果每个国家都开始封闭,都开始停止商业的运作,经济就会快速下滑,当世界的经济受到严重影响时,中国作为世界第二大经济体,自然也会受到重创.
受到最大影响的出口,中国向外出口主要有:
1.农产品:以水产品、蔬菜、水果、花卉.畜产品、粮食和食用油籽等为主。
2.通信产品:电子信息与通信技术领域
3.钢铁:焦炭.钢坯.铁合金.钢丝及制品等。
4.陶瓷
5.机电
6.服装.纺织品
7.冶金原料
8.我国高新技术产品出口最多的4 类技术领域是计算机与通信技术、电子技术、生命科学技术、光电技术。
9.汽车零部件
10.能源产品:煤
这些行业是中国的主体行业,有上亿的劳动者都在这些行业中,如果产能下降,直接导致的就是员工失业的问题,这将是我们急切需要思考的,如何帮助全球快速控制疫情的扩展,把我们的经验分享给这些疫情增长比较快的国家,从而让全球开始互帮互助.
只有全球疫情消失,世界的经济才能真正的恢复,钟南山院士说,全球疫情结束可能要到六月,其实他说的非常保守,只有全球所有国家像中国一样ALL IN 来处理这件事,才有可能六月结束全球疫情,如果不是这样的话,今年也结束不了,因为它的传播速度太快了,而且这种病毒它是一种细胞生命体,有生命体的细胞就具备变异的能力,一旦变异将会更难处理.
为什么中国能控制的这么好,大家看看自己的小区和出行就能明白,今天我们艾锑无限有位同事,进地铁的时候,测出了37度体温,立刻就被地铁站准备好的专车送到了医院全面检查,当然最后的结果是没有任何问题,可能是他赶地铁狂奔后温度升高的结果,但对于测量体温的人来说是,
宁可错判一百,也不能放过一个,花点钱,花点时间,都是小事,如果真是因为疏忽大意,最终放进了一个新冠患者,那后果将会不堪设想,这也就是为什么中国能在这么大范围的国家,这么多人口在疫情发展过程中这么快控制住的原因.也许这就是除中国以外的国家需要学习和效仿的.
之前我分享了八个字,可能很多人不太理解,
万物同体,能量合一,今天的世界将不在是分离的状态,我们在同一个星球,就像是同一个身体,如果我们身体某个部位出现了问题,就会对全身造成破坏,所以
一国有难,全球支援,我们不在是竞争和对立的关系,我们彼此之间如果有竞争也应该是为了让我们变得更好,我们是合一的整体,只有共同变好,才会让彼此在这个星球中活的更长,活的更久.
祝福中国,祝福世界,祝福我们这个美丽的星球,让我们联合起来,真正的去践行习主席提出的”人类命运共同体”的愿景,让我们的世界未来越来越好.
艾锑无限硬核:理解Shell的概念
现在我们使用的操作系统(Windows、Mac OS、Android、iOS 等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及离不开图形界面。然而在计算机的早期并没有图形界面,我们只能通过一个一个地命令来控制计算机,这些命令有成百上千之多,且不说记住这些命令非常困难,每天面对没有任何色彩的“黑屏”本身就是一件枯燥的事情;这个时候的计算机还远远谈不上炫酷和普及,只有专业人员才能使用。
早期的电脑,都是“黑纸白字”
对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。 换句话说,图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。 由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。你看,在用户和内核之间增加一层“代理”,既能简化用户的操作,又能保障内核的安全,何乐不为呢?用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。
Shell 是一个应用程序
它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前。用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。
Shell 是如何连接用户和内核的?
Shell 能够接收用户输入的命令,并对命令进行处理,处理完毕后再将结果反馈给用户,比如输出到显示器、写入到文件等,这就是大部分读者对 Shell 的认知。你看,我一直都在使用 Shell,哪有使用内核哦?我也没有看到 Shell 将我和内核连接起来呀?!其实,Shell 程序本身的功能是很弱的,比如文件操作、输入输出、进程管理等都得依赖内核。我们运行一个命令,大部分情况下 Shell 都会去调用内核暴露出来的接口,这就是在使用内核,只是这个过程被 Shell 隐藏了起来,它自己在背后默默进行,我们看不到而已。接口其实就是一个一个的函数,使用内核就是调用这些函数。这就是使用内核的全部内容了吗?嗯,是的!除了函数,你没有别的途径使用内核。比如,我们都知道在 Shell 中输入cat log.txt命令就可以查看 log.txt 文件中的内容,然而,log.txt 放在磁盘的哪个位置?分成了几个数据块?在哪里开始?在哪里终止?如何操作探头读取它?这些底层细节 Shell 统统不知道的,它只能去调用内核提供的 open() 和 read() 函数,告诉内核我要读取 log.txt 文件,请帮助我,然后内核就乖乖地按照 Shell 的吩咐去读取文件了,并将读取到的文件内容交给 Shell,最后再由 Shell 呈现给用户(其实呈现到显示器上还得依赖内核)。整个过程中 Shell 就是一个“中间商”,它在用户和内核之间“倒卖”数据,只是用户不知道罢了。
Shell 还能连接其它程序
在 Shell 中输入的命令,有一部分是 Shell 本身自带的,这叫做内置命令;有一部分是其它的应用程序(一个程序就是一个命令),这叫做外部命令。Shell 本身支持的命令并不多,功能也有限,但是 Shell 可以调用其他的程序,每个程序就是一个命令,这使得 Shell 命令的数量可以无限扩展,其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。更加惊讶的是,Shell 还可以让多个外部程序发生连接,在它们之间很方便地传递数据,也就是把一个程序的输出结果传递给另一个程序作为输入。大家所说的 Shell 强大,并不是 Shell 本身功能丰富,而是它擅长使用和组织其他的程序。Shell 就是一个领导者,这正是 Shell 的魅力所在。可以将 Shell 在整个 Linux 系统中的地位描述成下图所示的样子。注意“用户”和“其它应用程序”是通过虚线连接的,因为用户启动 Linux 后直接面对的是 Shell,通过 Shell 才能运行其它的应用程序。
Shell 也支持编程
Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程,这和使用 C++、C#、Java、Python 等常见的编程语言并没有什么两样。
Shell 虽然没有 C++、Java、Python 等强大,但也支持了基本的编程元素,例如:
· if...else 选择结构,case...in 开关语句,for、while、until 循环;
· 变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
· 函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)。
站在这个角度讲,Shell 也是一种编程语言,它的编译器(解释器)是 Shell 这个程序。我们平时所说的 Shell,有时候是指连接用户和内核的这个程序,有时候又是指 Shell 编程。Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、搭建 Web 运行环境、日志分析等,Shell 都非常合适。使用 Shell 的熟练程度反映了用户对 Linux 的掌握程度,运维工程师、网络管理员、程序员都应该学习 Shell。尤其是 Linux 运维工程师,Shell 更是必不可少的,是必须掌握的技能,它使得我们能够自动化地管理服务器集群,否则你就得一个一个地登录所有的服务器,对每一台服务器都进行相同的设置,而这些服务器可能有成百上千之多,会浪费大量的时间在重复性的工作上。
Shell 是一种脚本语言
任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。有的编程语言,如 C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。而有的编程语言,如 Shell、
JavaScript、Python、
PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。