【devops系列】一文了解Linux(一):基础知识
工欲善其事必先利其器,怎么搭建一个Linux作为开发日常接触的环境,一些命令,操作,环境安装等需要熟悉。
第一章-Linux概述
1 | 在前面的学习中,我们无论是开发、测试。部署、存储都在Windwos操作系统的环境中,从今天开始我们一起学习下Linux,Linux系统和Windows系统最大的区别就是图形化界面操作和用途上有所差异,除了这两点,两者有异曲同工之妙,在国内, Linux 系统更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows,也就是说Linux与Windows一样,同样也是操作系统只是在使用以及应用上有所差异,其他都是一样的; |
1.0 为什么要学习Linux
对于windows操作系统而言,大家应该不陌生,这里我列举一些windows的不足:
- 个人用户正版windows需要收费
- 系统长时间运行后,不稳定,变慢,容易死机
- 且windows经常招到病毒攻击等
相反,上述windows的不足,恰好是另一款操作系统Linux的优势所在,这里我也列举一些Linux的优点:
个人用户正版Linux不需要收费
系统长时间运行后,还是比较稳定,比较快,不容易死机
且Linux不常招到病毒攻击等
做为一个后端JavaEE程序员,通常在windows/MAC中开发完程序后,得部署到一个相对比较安全,稳定的服务器中运行,这台服务器上安装的不是windows操作系统,而是Linux操作系统。
1.1 操作系统
操作系统(Operation System, OS),是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
操作系统作为接口的示意图:
如上图所示,在操作系统的最上层是用户,中间层是操作系统(里面可能装了很多的应用程序),最下层是硬件的支撑,包含CPU/内存/硬盘等
这就是一个完成的操作系统结构图,再看一张详细的图:
主流操作系统按照应用领域的划分
1、桌面操作系统
- Window 系列
- 用户群体大
- macOS
- 细节处理的更好, 没有windows软件丰富, 价格高
- Linux
- 应用软件少
2、服务器操作系统
Linux
- 安全、稳定、免费
- 占有率高
Windows Server
- 付费
- 占有率低
3、嵌入式操作系统
Linux
4、移动设备操作系统
- IOS
- Android (基于Linux)
- 华为鸿蒙(基于linux)
Linux内核
Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
内核主要负责以下四种功能:
- 系统内存管理
- 软件程序管理
- 硬件设备管理
- 文件系统管理
GNU工具
Linus Torvalds(林纳斯·托瓦茨)在创建Linux系统内核时并没有可用的系统工具。幸运的是就在他开发Linux内核的同时,有GNU组织正在模仿Unix操作系统开发一系列标准的计算机系统工具。
GNU组织(GNU是GNU’s Not Unix的缩写)开发了一套完整的Unix工具,但是没有内核系统。这些工具在开源软件的理念下开发。
尽管通常将Linux内核和GNU工具的结合称为Linux,严格讲,应该是GNU/Linux系统。
GNU coreutils软件包由三部分构成:
- 处理文件的工具
- 操作文本的工具
- 管理进程的工具
图形化桌面环境
- X Window系统
- KDE桌面
- GNOME桌面
- Unity桌面
- 其他桌面,如Fluxbox、Xfce、JWM、Fvwm、fvwm95等。
1.2 Linux发展历程
1 | 引子 |
- 1984年,Andrew S.Tanenbaum 开发了用于教学的Unix系统,命名为Minix,但是仅仅用于教学
- 1989年,Andrew S.Tanenbaum将Minix系统运行于x86的pc平台
- 1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统
- 1991年,Linus Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件
- 1991年年底,Linus Torvalds公开了Linux内核源码0.02版,仅仅是内核
- 1994年,Linux 1.0版本发行,Linux转向GPL版权协议
至此,Linux开始盛行开来…
Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 Unix操作系统 Minix 太难用了,于是决定自己开发一个操作系统。
第 1 版本于 1991 发布,当时仅有 10000 行代码。
李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。
据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux 内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,我更倾向于说是由李纳斯•托瓦兹和后来陆续加入的众多 Linux 好者共同开发完成的。
Unix
Unix 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。
Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。Unix 的商标权由国际开放标准组织(The Open Group)所拥有。Unix操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。
1.3 Linux简介
1 | 引子 |
1.3.1 什么是 Linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 的标志和吉祥物是一只名字叫做Tux(它克斯)的企鹅,Linux是基于Unix的。
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机
Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux操作系统不仅仅是被网络运维人员当作服务器使用,Linux既可以当作服务器,又可以当作网络防火墙是Linux的 一大亮点。
Linux与其他操作系统相比 ,具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈 ,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。
1.3.2 Linux的特点
基本思想
Linux的基本思想有两点:
第一:一切都是文件
第二:每个软件都有确定的用途
其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近
完全免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
安全稳定
Linux采取了很多安全技术措施,包括读写权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络环境中的用户提供了安全保障。实际上有很多运行Linux的服务器可以持续运行长达数年而无须重启,依然可以性能良好地提供服务,其安全稳定性已经在各个领域得到了广泛的证实。
完全兼容POSIX1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,指系统资源可以同时被不同的用户使用,每个用户对自己的资源有特定的权限,互不影响。是计算机能同时运行多个程序,且程序之间彼此独立,Linux内核负责调度每个进程,使之平等地访问处理器。由于CPU处理速度极快,从用户的角度来看所有的进程好像在并行运行。Linux可以使多个程序同时并独立地运行。
良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
良好的可移植性
Linux中95%以上的代码都是用C语言编写的,由于C语言是一种机器无关的高级语言,是可移植的,因此Linux系统也是可移植的。
广泛的硬件支持
得益于其免费开源的特点,有大批程序员不断地向Linux社区提供代码,使得Linux有着异常丰富的设备驱动资源,对主流硬件的支持极好,而且几乎能运行在所有流行的处理器上。
模块化程度高
Linux的内核设计分成进程管理、内存管理、进程间通信、虚拟文件系统、网络5部分,其采用的模块机制使得用户可以根据实际需要,在内核中插入或移走模块,这使得内核可以被高度的剪裁定制,以方便在不同的场景下使用。
优点
1)Linux由众多微内核组成,其源代码完全开源;
2)Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;
3)Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性;
1.4 Linux和Unix区别
1、开源情况
Unix 是商业化的,而 Linux 是开源的,是免费、公开源代码的。
2、硬件适用
Unix 系统大多是与硬件配套的,也就是说,大多数Unix系统如AIX、HP-UX等是无法安装在 x86 服务器和个人计算机上的,而 Linux则可以运行在多种硬件平台上。
可以先学习Linux后再学习Unix,因为Linux可以方便的在虚拟机上运行,防止新手的误操作。
3、本质不同
Linux是开放源代码的自由软件,用户对前者有很高的自主权,在实际的的开发是处在一个完全开放的环境之中;
而Unix是对源代码实行知识产权保护的传统商业软件,用户的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型;
Unix 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 Unix是操作系统中的”老大哥”,后来的 Windows 和 Linux 都参考了 Unix
1.5 Linux和Windows区别
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 Unix传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
Windows与Linux在其他方面的不同
开放性
所谓的开放性就是Linux 操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的Windows 系统是受微软版权保护,就是只能微软内部进行开发及修改。
文件格式不同
Windows 操作系统内核是NT,而Linux 是 shell;
另外,windows 硬盘文件格式是fat32或NTFS,而Linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区
免费与收费
在中国,对个人用户Windows 和Linux 都是免费的,对公用户Windows 需要收费,Linux 是免费的。
技术支持
Windows 较普及。Linux 需要深度的Linux 版块支持。
安全性
Linux 相对Windows 来说安全性更高。
开源
开源就是指对外部开放软件源代码。Linux 开源,而Windows并不开源。
使用习惯
Windows 放弃了dos的字符模式,主攻图形界面,让桌面系统更易用。Linux 字符模式运行的更好,图形界面还只是附带品,可有可无。
软件与支持
Windows 下可以运行绝大部分软件、玩99.999%的游戏、硬件厂商近乎100%的支持。Linux 下可直接运行的软件数量和win下比起来就是1和99的区别,而且目前选择Linux 的人基本不会考虑玩游戏,同时Linux 正期待更多硬件厂商的支持
1.6 Linux发行商和常见发行版
Linux的版本分为两种:内核版本和发行版本;
- 内核版本是指在Linus领导下的内核小组开发维护的系统内核的版本号 ;
- 发行版本是一些组织和公司根据自己发行版的不同而自定的
Linux发行版是由个人,自由组织,以及商业机构和志愿者组织编写。它们通常包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。大多数系统还包括了像提供GUI界面的XFree86之类的曾经运行于BSD的程序。
一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件
Linux发行版的某些版本是不需要安装,只需通过CD或者可启动的USB存储设备就能使用的版本,他们称为LiveCD。
Linux的版本号分为两部分:内核版本和发行版本。
1.Linux的内核版本
内核版本指的是在Linus Torvalds领导下的开发小组开发出的系统内核的版本号,通常,内核版本号的第二位是偶数表示是稳定的版本,如2.6.25;是奇数表示有一些新的东西加入,是不稳定的测试版本,如2.5.6。Linux操作系统的核心就是它的内核,Linus Torvalds和他的小组在不断地开发和推出新内核。
任务:进程调度、内存管理、配置管理虚拟文件系统、提供网络接口以及支持进程间通信。像所有软件一样,Linux的内核也在不断升级。
2.Linux的发行版本
一个完整的操作系统不仅仅只有内核,还包括一系列为用户提供各种服务的外围程序。外围程序包括GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。所以,许多个人、组织和企业,开发了基于GNU/Linux的Linux发行版,他们将Linux系统的内核与外围应用软件和文档包装起来,并提供一些系统安装界面和系统设置与管理工具, 这样就构成了一个发行版本。
实际上,Linux的发行版本就是Linux内核再加上外围的实用程序组成的一个大软件包而已。相对于操作系统内核版本,发行版本的版本号是随发布者的不同而不同,与Linux系统内核的版本号是相对独立的,例如:RedHat EnterpriseLinux 5.2的操作系统内核是Linux-2.6.18。
Linux的发行版本大体可以分为两类:
一类是商业公司维护的发行版本,如著名的Red Hat;
一类是社区组织维护的发行版本,如Debian、CentOS;
以下为Linux的主流版本:
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
以下是主要的发行版本
1 | 需要注意的: |
1、Debian 介绍
Debian名字的由来—-DebianGNU/Linux是由一个叫做伊恩·默多克(IanMurdock)在1993年发起的,他的名字以Ian开头,他太太的名字Debra开头三个字母是Deb。
Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由 Ian Murdock于1993年创建,分为三个版本分支: stable(服务器版), testing(稳定版) 和unstable(测试版)。
2、Ubuntu介绍
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。
共分三个版本:
- 基于Gnome的Ubuntu,
- 基于KDE的Kubuntu以。
- 基于Xfc的 Xubuntu。
特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。稳定性,其实都差不多,难易度嘛,
Ubuntu 默认桌面环境采用 GNOME,一个 Unix和 Linux 主流桌面套件和开发平台。
Ubuntu的版本和发布号
Ubuntu的版本号是由该次发布的年份和月份组成,并未反映其实际版本。我们的首次发布是在2004年10月,因此该版本为4.10。当前版本(DapperDrake)于2006年6月发布,因此版本号为6.06 LTS。
3、Redhat
可能这是最著名的Linux版本了,Red Hat Linux已经创造了自己的品牌,越来越多的人听说过它。Red Hat在1994年创业,当时聘用了全世界500多名员工,他们都致力于开放的源代码体系。
Red Hat Linux是公共环境中表现上佳的服务器。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。
Red Hat Linux的安装过程也十分简单明了。它的图形安装过程提供简易设置服务器的全部信息。磁盘分区过程可以自动完成,还可以选择GUI工具完成,即使对于 Linux新手来说这些都非常简单。选择软件包的过程也与其他版本类似;用户可以选择软件包种类或特殊的软件包。系统运行起来后,用户可以从Web站点和 Red Hat那里得到充分的技术支持。我发现Red Hat是一个符合大众需求的最优版本。在服务器和桌面系统中它都工作得很好。Red Hat的唯一缺陷是带有一些不标准的内核补丁,这使得它难于按用户的需求进行定制。 Red Hat通过论坛和邮件列表提供广泛的技术支持,它还有自己公司的电话技术支持,后者对要求更高技术支持水平的集团客户更有吸引力
4、Fedora
Fedora和Redhat这两个Linux的发行版放联系很密切。Redhat 自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora项目是由 Red Hat 赞助,由开源社区与 Red Hat 工程师合作开发的项目统称。Fedora 的目标,是推动自由和开源软件更快地进步。
特点:
1、 Fedora 是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。可运行的体系结构包括x86(即i386),x86_64 和PowerPC!
2、Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作。
3、Fedora 是一个独立的inux发行版本的操作系统。
5、centos
CentOS(Community ENTerprise Operating System)是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用(我会告诉你,以为企业想省钱,运维要靠这个东西来赚钱嘛,国内运维主流是CentOS剩下版本很少)。两者的不同,在于CentOS并不包含封闭源代码软件,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。每个版本的CentOS都会获得十年的支持(通过安全更新方式)。新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境
6、Slackware介绍
Slackware 由PatrickVolkerding(帕特里克.沃克登)创建于1992年。算起来应当是历史最悠久的Linux发行版。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的 Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。
7、openSUSE介绍
SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统也大受好评。SUSE于2003年年末被Novell收购。SUSE在收购之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其它发行版本。最近还跟微软扯到了一起。但是瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。
openSUSE 项目是由Novell公司资助的全球性社区计划,旨在推进 Linux 的广泛使用。这个计划提供免费的openSUSE 操作系统。这里是一个由普通用户和开发者共同构成的社区,我们拥有一个共同的目标—创造世界上最好用的 Linux 发行版。openSUSE 是 Novell 公司发行的企业级 Linux 产品的系统基础。
openSUSE 项目是由Novell 发起的开源社区计划。 旨在推进 Linux 的广泛使用。提供了自由简单的方法来获得世界上最好用的 Linux 发行版,SUSE Linux。openSUSE 项目为 Linux 开发者和爱好者提供了开始使用 Linux 所需要的一切。
8、中国大陆的Linux发行版
红旗Linux(RedflagLinux) ,冲浪Linux(Xteam Linux) ,蓝点Linux , GNU/Linux,OpenDesktop等等 。
9、 台湾地区的Linux发行版
鸿奇Linux
目前最著名的发行版本:Debian,ubuntu、OpenSuse(原Suse)、CentOS、fedora等。国内比较著名的红旗Linux版本
对于上面的知识我们做下重点总结
- redhat:目前,全球最大的linux发行厂商,功能全面、稳定。
- Redhat 被 IBM 收购!
- ubuntu:目前,是linux桌面操作系统做的最好的。
- centos:免费版的redhat,centos 基于 redhat 发行版基础之上,再重新编译发布的版本。
- 目前 centos 已经被 Redhat 公司收购,但是依然免费
1.7 Linux 应用领域
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。在企业级开发中,我们通常使用Linux作为我们的服务器。
比如:服务器系统Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;
嵌入式系统路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,高性能运算、计算密集型应用Linux有强大的运算能力。
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
- 巴西联邦政府由于支持 Linux 而世界闻名。
- 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
- 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
- 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
- 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
- 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
- 法国和德国同样开始逐步采用 Linux。
Linux系统的使用场景
- 服务器是Linux系统的最主要的使用场景
- 大型运算场景的计算机系统
- 安全性要求比较高的场景,比如说”大型公司的网关环境”
- 嵌入式设备、手机等等
1.8 Linux之CentOS
1 | 前面章节介绍了一些Linux的基本知识,前已经对Linux有了一个初步的认识,也知道了在Linux发行版中有各个家族的发行版本;比如比较知名的ubuntu、CentOS,我们将采用发行版CentOS作为日常学习的环境。 |
CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本;是一个稳定,可预测,可管理和可复制的免费企业级计算平台
主要特点:
1.主流: 目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS
2.免费: RedHat 和CentOS差别不大,CentOS是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本
3.更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT那样需要花钱购买支持服务!
学习使用的环境:
Windows7 , VMware Workstation15.02, CentOS Linux release 7.6.1810
1.9 Linux的目录结构
Linux不像windows那样有盘符的概念,它的最高目录为根目录(用/表示)
记住一句经典的话:在Linux世界里,一切皆文件。
1 | 具体的目录结构: |
1.10 Linux系统启动流程
1.10.1 计算机加载BIOS
这是计算机上最接近硬件的软件,BIOS对自身的硬件做一次健康检查,只有硬件没有问题,才能运行软件,操作系统也是一种软件。如果所有的硬件自检通过,一般都会发出一次“滴”的短声提示,说明硬件一切正常。
1.10.2 引导系统
这个动作是BIOS设定的,BIOS默认会从硬盘上的第0柱面、第0磁道、第一个扇区中读取被称为MBR的东西,即主引导记录。一个扇区的大小是512字节,存放的内容是一段引导程序和分区信息,其中引导程序部分占用446字节,另外64字节是磁盘分区表DPT,最后两字节是MBR的结束位。这512字节的空间内容是由专门的分区程序产生的,比如说Windows下的fdisk.exe,或者Linux下的fdisk命令,所以它不依赖于任何操作系统,而MBR中的引导程序也是可以修改的,所以可以利用这个特性实现多操作系统共存。由于RedHat、CentOS默认会使用Grub作为其引导操作系统的程序,而Grub本身又比较大,所以常见的方式是在MBR中写入Grub的地址,这样系统实际会载入Grub作为操作系统的引导程序。
1.10.3 运行Grub
Grub最重要的功能就是根据其配置文件加载kernel镜像,并运行内核加载后的第一个程序/sbin/init,这个程序会根据/etc/inittab来进行初始化的工作。其实这里最重要的就是根据文件中设定的值来确定系统将会运行的runlevel,默认的runlevel定义在“id:3:initdefault:”中,其中的数字3说明目前的运行级别定义为3。
1.10.4 系统初始化配置
Linux将根据/etc/inittab
中定义的系统初始化配置si::sysinit:/etc/rc.d/rc.sysinit执行/etc/rc.sysinit
脚本,该脚本将会设置系统变量、网络配置,并启动swap、设定/proc、加载用户自定义模块、加载内核设置等。
1.10.5 将运行/etc/rc.local
1.10.6 生成终端或X Window来等待用户登录
1.11 Linux用户和用户组
Linux是一个多用户分时系统,想要使用系统资源,就必须在系统中有合法的账号,每个账号都有一个唯一的用户名,同时必须设置密码。在系统中使用用户的概念,一方面可以方便识别不同的用户,另一方面也可以为用户设置合理的文件权限,为每个用户的数据提供安全保障。另外,为了更灵活地管理用户和控制文件权限,Linux还采用了用户组的概念,这为系统管理提供了极大的便利。
1.11.1 UID和GID
1)User ID,简称UID,是用来区分不同用户的数字,系统会自动记录“用户名”和UID的对应关系。
Linux系统中的用户分为3类,即:
普通用户
指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。Linux有着极为详细的权限设置,所以一般来说普通用户只能在其家目录、系统临时目录或其他经过授权的目录中操作,以及操作属于该用户的文件。通常普通用户的UID大于500,因为在添加普通用户时,系统默认用户ID从500开始编号。
使用 id 命令可以查看当前用户的uid以及gid:
1 | [user1@linux30 ~]$ id |
根用户
也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。所以root用户也是系统里面最具危险性的用户,root用户甚至可以在系统正常运行时删除所有文件系统,造成无法挽回的灾难。所以一般情况下,使用root用户登录系统时需要十分小心。
1 | [root@linux30 ~]# id |
系统用户
系统运行时必须有的用户,但并不是指真实的使用者。比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。在RedHat或CentOS下,系统用户的ID范围是1~499。
1 | [root@linux30 ~]# ps aux | grep apache |
2)Group ID,简称GID,是用于区分不同用户组的ID。
在下面的例子中,使用ls -l查看文件时,第三列和第四列显示的是这个文件的所有者是用户root,所有组是root组,如果加上了-n参数,第三列和第四列则是用UID和GID来显示的,这里分别是0和0。
1 | [root@linux30 ~]# ls -l |
在Linux下每个用户都至少属于一个组。
想获取自己的UID:
1 | [root@linux30 ~]# id |
想获取自己所属的组:
1 | [root@linux30 ~]# groups |
1.11.2 /etc/passwd和/etc/shadow
在登录Linux时必须要输入用户名和密码。而系统用来记录用户名、密码最重要的两个文件就是/etc/passwd和/etc/shadow。
1 | [root@linux30 ~]# cat /etc/passwd |
可以看到,虽然每行的内容不一样,但格式却是一致的,即每行都是使用6个分隔号“:”隔开的7列字符串。
拿 zuoer:x:1000:1000:zuoer:/home/zuoer:/bin/bash 行举例说明:
- 用户名:zuoer
- 密码:用x显示,为了安全起见,密码被保存到了
/etc/shadow
- UID:1000
- GID:1000
- 说明栏:itcast
- 家目录:
/home/zuoer
- 登录shell:
/bin/bash
/etc/passwd
的第二列最早是在UNIX系统中用于记录密码的,但是这其中存在一个问题:由于每个用户都需要有读取这个文件的权限,而随着现代密码破解技术的发展,即便是加密的密码,也有被破解的可能,所以将密码从这个文件中剥离出去是非常必要的。目前Linux的做法是,将密码相关的信息保存到/etc/shadow
中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。这种密码保存方式被称为“影子密码”
1 | [root@linux30 ~]# cat /etc/shadow |
user1:$6$uQDWyuAK$ysmwSzxwe/NxZ5VTIagfphx.voxsuFXHihlWJLMnR60xMZPMV5hsj5soemUXar85SV2d9riCgDVovJek/JlTu.:18978:0:99999:7:::
- 用户名:user1
- 密码:$6$uQDWyuAK$ysmwSzxwe/NxZ5VTIagfphx.voxsuFXHihlWJLMnR60xMZPMV5hsj5soemUXar85SV2d9riCgDVovJek/JlTu.
- 密码的最近修改日:18978
- 密码不可修改的天数:0,随时可以修改
- 密码重新修改的天数:99999
- 密码失效前提前警告的天数:7
- 密码失效宽限天数
- 账号失效日期
- 保留字段
ps: /etc/group 文件 用来保存系统中的所有组
1.12 分区
什么是分区格式?
磁盘的主要组成部分:
磁盘,它是由一个个盘片组成的,从盘片的结构上来看 图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线 ,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称为一个扇区(图中绿色部分)。
扇区是磁盘的最小组成单元,通常是512字节
磁盘物理结构:
磁头(head) 磁道(track) 柱面(cylinder) 扇区(sector) 盘片(platter)
了解了磁盘物理组成,还需要了解磁盘分区是什么?
磁盘分区:指定分割区域起始与结束磁柱
磁盘分区是告诉操作系统,磁盘在此分割区域内可以存取的区域 例如A磁柱到B磁柱之间的区块,如此一来操作系统就能够知道它 可以指定区块进行文件读,写,查询等操作。
使用硬盘之前为什么需要格式化呢?
因为每种操作系统所设定的文件属性/权限,以及存放数据的格式有所不同
Ext2/Ext3/Ext4区别
这仨都是文件系统格式 NFTS和FAT32
Linux kernel自2.6.28开始正式支持新的文件系统Ext4
Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构。
Ext3对Ext2,只是增加了一个日志功能而已。Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能,更大的文件系统和更大的文件。
较之Ext3所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。
无限数量的子目录
- Ext3只支持32,000个子目录,而Ext4支持无限数量的子目录
Extents(区段)
- Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一 个100MB大小的文件,在Ext3中要建立25,600个数据块(每个数 据块大小为4KB)的映射表。在Ext3中,每个物理块都需要一个 逻辑块结构与之相对应。
- Ext4引入了extents概念,提高效率,每个extent为一组连续的数据块,理想情况下,上述文件则表示为只需要一个extent来记录 映射关系。
多块分配
- 当写入数据到Ext3文件系统中时,Ext3的数据块分配器每次只能 分配一个4KB的块,写一个100MB文件就要调用25,600次数据块 分配器,而Ext4的多块分配器“multiblockallocator”( mballoc)支持一次调用分配多个数据块。
延迟分配
- Ext3的数据块分配策略是尽快分配,而Ext4是尽可能地延迟分配,直 到文件在cache中写完才开始分配数据块并写入磁盘。
- 如此能优化整个文件的数据块分配,显著提升性能。
快速fsck(文件系统检查)
- 老的fsck会很慢,因为它要检查所有的inode
- Ext4给每个组的inode表中都过它们而只去检查那些在用的inode添加了一份未使用inode的列表,执行 fsck就可以跳过它们而只去检查那些在用的inode。
日志校验
日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。
Ext4的日志校验功能可以很方便地判断日志数据是否损坏,将过去两阶段日志机制合并成一个阶段,提高性能。
补充,两阶段提交:
(1) 文件系统将准备执行的事务的具体内容写入日志
(2) 文件系统进行文件操作
(3) 操作成功后,将事务具体的内容从日志中删除
- “无日志”(NoJournaling)模式
- Ext4允许关闭日志,以便某些有特殊需求的用户可以借此进一步 提升性能。
- 在线碎片整理
- Ext4支持在线碎片整理,并提供e4defrag工具进行个别文件或整 个文件系统的碎片整理。
- inode相关特性
- Ext4支持更大的inode,较之Ext3默认的inode大小128字节, Ext4为了在inode中容纳更多的扩展属性(如纳秒时间戳或inode 版本),默认inode大小为256字节。
swap介绍
swap(交换分区)概述 :
- 使用磁盘存储内存不够而“溢出来”的内容。
- 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。
- 最容易成为被释放的对象:一些很长时间没有什么操作的程序。 –被释放的空间中的内容被临时保存到swap空间中。等到那些被换出的程序
- 要继续运行时,再从swap中恢复保存的数据到内存中。
一般来说可以按照如下规则设置swap大小:
- 4G以内的物理内存, swap设置为内存的2倍。
- 4-8G的物理内存, swap等于内存大小。
- 8-64G 的物理内存, swap设置为8G。
- 64-256G物理内存, swap设置为16G。
文件系统
安装Linux时的自定义分区
如果在Linux安装的时候要自定义分区,
- 挂载点
/boot
(安装Linux用的),文件类型ext4
,大小200
单位是MB。 swap
(交换分区),设置大小为2048MB,(根据经验,低于4G的一般交换分区给2倍)- 新分区挂载到
/
(根分区),文件类型设置为ext4
,大小选择磁盘剩余总容量。
1.13 网络基础知识
OSI七层和TCP/IP四层的关系
七层结构记忆方法:应、表、会、传、网、数、物
OSI七层网络模型 | TCP/IP四层概念模型 | 对应网络协议 |
---|---|---|
应用层(Application) | 应用层 | HTTP、TFTP, FTP, NFS, WAIS、SMTP |
表示层(Presentation) | Telnet, Rlogin, SNMP, Gopher | |
会话层(Session) | SMTP, DNS | |
传输层(Transport) | 传输层 | TCP, UDP |
网络层(Network) | 网络层 | IP, ICMP, ARP, RARP, AKP, UUCP |
数据链路层(Data Link) | 数据链路层 | FDDI, Ethernet, Arpanet, PDN, SLIP, PPP |
物理层(Physical) | IEEE 802.1A, IEEE 802.2到IEEE 802.11 |
- OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
- OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
- OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。
传输协议:
- TCP:transmission control protocol 传输控制协议
- UDP:user data protocol 用户数据包协议
网络常用设备:交换机
思考:MAC地址是全球唯一,为何不使用MAC地址连入互联网,而是使用IP地址呢?
身份证号也是唯一的,发快递时为何使用收件地址相同的道理
家用路由器
将交换机和路由器合在了一体
网络连接涉及概念
- IP地址(IPADDR)
1 | IP地址=网络位+主机位 |
- 子网掩码(NETMASK)
1 | 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。 |
- 网关(GATEWAY)DNS
1 | 又称网间连接器、协议转换器 |
- DNS(Domain Name System,域名系统)
1 | 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。 |
虚拟机的3种连接方式
1 | 1.NAT即为网络地址转换,通常它的名称为VMnet8,通过nat的连接方式可以使得虚拟机和真实机的网卡在不同的网段中,从而实现联网。 |
虚拟机网络连接之NAT模式
虚拟机网络连接之桥接模式
网络配置优化
1 | 为什么删除70-persistent-net.rules? |
运行级别
1 | Linux运行级别 |
1.14 总结
当前章节主要介绍了Linux发行的主要版本(使用的是CentOS Linux release 7.6.1810 )、以及与Unix、Windows系统的区别;主要了解Linux是基于Unix的以及与Windows一样,Linux也是操作系统即可。