1. 什么是Linux
1.1 Linux的地位
随着 IT 系统和工作负载变得愈发复杂,底层基础架构和操作系统必须做到可靠、可扩展并且有助于提高性能。从裸机到虚拟环境,再到云环境和容器,无论是传统还是创新型 IT 工作负载或部署工作,Linux 都能为之打下稳固基础。
1.2 关于Linux
Linux® 是一个开源的操作系统(OS)。它由 Linus Torvalds 于 1991 年构思设计而成,最初这只是他的一项兴趣爱好。当时还在读大学的 Linus 想要基于 Unix 的原则和设计来创建一个免费的开源系统,从而代替 MINIX 操作系统。自此,这项兴趣爱好便逐步演变成了拥有最大用户群的操作系统。如今,它不仅是公共互联网服务器上最常用的操作系统,还是速度排名前 500 的超级电脑上使用的唯一一款操作系统。并且Linux也没有那么难用,几乎每个 Linux 发行版都有一个图形用户界面(GUI),用于简化点击操作。现在你看到的文章,就是用Linux写出来的,其发行版是Arch Linux。
1.3 Linux 能做些什么
Linux 能为几乎所有类型的 IT 计划奠定基础,包括容器、云原生应用和安全防护。许多全球规模最大的行业和企业都仰赖于 Linux——从 Wikipedia 等知识共享网站,到纽约证券交易所,再到运行 Android(一个包含免费软件的 Linux 内核专用发行版)的移动设备,它无处不在。经过多年的发展,Linux 已成为了行业广泛接受的标准,成为在数据中心和云部署中运行高可用性、高可靠性和关键工作负载的首选。它有适合不同目标系统和设备的多种用例和发行版本,而且功能丰富 ,完全可根据您的需求和工作负载进行调整。
微软也以其他方式引入了 Linux 和开源技术,其中包括:推出 Linux 版 SQL Server;将 .NET 框架(.NET Core/Mono)打造成一种开源技术,以便在任意平台上运行;允许使用 Linux 的开发人员利用这个框架来开发应用。到 2027 年,所有 SAP 客户都会改用 SAP HANA,这是一个只能在 Linux 上运行的内存中关系数据库管理系统。但截至 2017 年,SAP 市场上尚有 50% 的客户使用的是 Windows 产品。
而在云技术方面,即使是在 Microsoft 的 Azure 上,也有 60% 以上的 Azure Marketplace 镜像和近 ⅓ 的虚拟机是基于 Linux 的。与此同时,Amazon Web Services 和 Google Cloud Platform 还以公用镜像的形式推出了多个 Linux 发行版。
未来,Linux 仍会是热门的操作系统之一,并且更会有越来越多的系统因其稳定性和可扩展性择木而栖。
1.4 Linux安全吗
安全这件事,一直被人看中,在前面我们已经提到了Linux是一款开源的操作系统,谁都可以为它发布程序或者修补程序,我们并不能保证那些修补程序都是安全无害的,所以Linux也并不是完全安全。但是,它凭借着用户群体较少,注意这里说的不是公司或企业!!!在安全这块,Linux可以完全让您信任。当然效率也很高。这里特指Windows Server,微软自己都不会用,全世界超过百分之99的服务器在运行着Linux系统,这样的占比,可想而知。
1.5 Linux都分什么版本
1.5.1 运行在服务器上的Linux
这里谈论的是在服务器上面部署并且运行的Linux操作系统,这类系统必须满足“安全,稳定,高效,可维护性高”,这几个条件。除了这几个条件,也要满足软件需求,以方便后期的业务操作。例如Apache、MySQL和PHP这些在服务器版中是标准配置。需要注意,这些Linux发行版,都是没有DE的,DE即桌面环境。
1.5.2 供个人使用的Linux
这里谈论的是在个人桌面环境使用的Linux,即桌面版。这类系统一般内置了DE以及一些开源驱动。在桌面系统中,你可以随意搭配桌面环境以及部署你的开发环境,例如著名的Debian操作系统,即可以部署到服务器上面又可以给个人开发者一个稳定高效的桌面环境。
2. 我和Linux的关系
2.1 Linux就在我们身边
你低头看看你正在浏览的博客,它就是建立在Linux系统之上的,在看看你的安卓手机,它也是由Linux衍生出来的。还有每年的双十一等活动,你所下单购买的商品,都是需要经过服务器处理,而这些服务器运行的大部分都是Linux系统,所以,Linux它就在我们身边,默默支撑着我们的生活。
2.2 我可以做什么贡献
Linux是一个开源免费的,它向我们所有人开放,你可以任意去修改然后去发布。例如软件包,我们都知道没有软件的系统是枯燥无味的,所以你可以成为个人开发者,然后去编写一个软件,将它发布到GitHub或者软件包仓库里面。或者你使用最原始的系统从头编写一个属于所有人的系统,这样也是可以的。\
3. 我需要学习Linux吗
3.1 前言
假如你是一个汽车工程师,或者还在学习造汽车的技术,那如果业界有这么一款汽车,性能稳定,设计思想优秀,而且不断在改进,汽车内部一些模块的实现方式甚至成为了业界标准,不仅如此,这款汽车的内部所有详细的技术资料都可以免费获取,也正因为如此,市面上也萌生了超级多的 Linux 发动机构造详解,深入理解 Linux 悬挂系统,你觉得你需不需要学习这款汽车?
答案是当然得学,不学不行。
3.2 我为什么要学
使用Linux,它免费,稳定,并且有大量优秀的开源软件可以使用,学习Linux,它继承了大部分Unix的设计哲学,源码公开,社区健壮,教程数不胜数。所以Linux是计算机学习者和工程师必学/用的东西,谁都逃不开。和Windows不同,Unix把软件的复用性做的非常好,每一个工具,都只做一件事,但要把这件事做到极致。排序的程序,就只排序,过滤的程序,就只过滤,统计行数字数的,就只统计行数字数,每个工具各司其职,当使用的时候,使用 pipe 管道将它们连接在一起,从而实现了复杂功能。从这一点就可以看出,Linux的效率非常高。这里还是要重申一下Linux的江湖地位,很多人想转行或者入门IT 运维,Linux作为云计算,是必须要掌握的技能,安利给大家一个可以轻松入门的课程,想提升的同学都可以先试听,比不知道怎么摸门道会省事不少。
3.3 它和Windows有什么区别
Windows系统上,需要一个复杂庞大的应用实现的功能,在Linux上是用一堆小工具通过 pipe 和 I/O redirection 组合实现的。在Linux系统中,你很清楚的知道每个文件都是做什么的,你知道临时文件存在 /tmp里,本地的 ip 映射存在 /etc/hosts 里,可执行应用存在 /usr/bin 里,library 存在 /usr/lib 里,安装和卸载大部分应用都可以直接用发行版提供的 package manager,如果不知道,Google一下,你就知道。在您Google回来之后更新一下题外话,最近有人私信问怎么入行或者转行Linux运维,想在云计算运维等方向长期发展,在这里推荐大家都可以了解学习Linux和红帽认证,掌握运维基本技能会对日后的职业发展会有一个更好的帮助。Linux作为云计算、网络安全等热门行业的操作系统,属于必须要掌握的技能,不管在Linux学习中处于什么段位,都可以考一个红帽认证,对于新手想入行运维工程师等相关职位的同学,甚至可以考红帽认RHCSA或RHCE作为行业敲门砖,主要包括红帽认证技师(RHCSA),红帽认证工程师(RHCE)和红帽认证架构师(RHCA)。是以实际操作能力为基础的测试项目,主要考察考生在实际操作系统中的实践能力。而且Linux提供了 “namespaces” 技术,这是一种可以把进程,文件系统,网络等资源通过 namespace 隔离开来的技术,它可以实现非常轻量的虚拟器(容器),而我们现在常常提到的 docker,就是基于此技术开发出来的。在 Linux 系统下,借助 seccomp 系统调用,你可以更加容易的实现沙盒环境,使用沙盒环境,你可以开发一个类似 leetcode 的线上刷题网站,把用户写好的代码放在沙盒里运行,不仅能限制系统调用的使用,还能限制资源的使用量。而且现在实现了CFS 调度器,用每个进程应该使用多少百分比的 CPU 时间去调度,而不是根据优先级粗暴的分配一个时间片,实现了所谓的“完全公平”调度,而其基于红黑树 + 最左节点缓存的实现方式,也非常值得我们学习。Linux 有组织良好的 man page,如果想知道某个工具如何使用,某个系统调用是做什么的,某个库函数怎么用,只需要一个 man 命令即可,文档良好的组织大大缩短了你寻找文档的时间。
3.4 写在最后
不知不觉写了快4000字了,感谢你能看完这篇文章。当然你可能会觉得Linux之路很艰难,很枯燥。但这些都是学习Linux所必须的。最后引用一下Harley Hahn's Guide to Unix and Linux中的话
Using Unix will change how you think, and for the better. I believe that if you learn how to read Shakespeare, listen to Mozart, or appreciate the paintings of Van Gogh, you will, in some sense, be a better person. The same is true for learning how to use Unix
使用 Unix 可以改变你的思考方式, 很可能是改进。我相信如果你阅读莎士比亚的戏剧,听莫扎特的音乐,听梵高的画作,会让你从某种意义上讲变成一个更好的人。学习 Unix 也同样如此。 |