# 01-Linux 系统简介

# 概述

Linux(读法:里纽克斯,利尼克斯,里纳克斯)是一款开源、安全、高效、稳定的操作系统,内核最初是由林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 个版本于 1991 年 9 月发布,当时仅有 10000 行代码。

在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥",后来的 Windows 和 Linux 都参考了 UNIX。

# 为什么

在编程世界中, Linux 就是主流,不会 Linux 你就会格格不入。 那些火得不行的技术,什么云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 技术的。那些牛得不行的团购、电商、打车等也几乎都是部署基于 Linux 技术服务端。 所以说,如果你想进大公司,想学新技术,Linux 一定是一道绕不过去的坎。只有进入 Linux 操作系统这扇门,你才能成为合格的软件工程师。 Linux 提供了一个生态,里面丰富多彩。很多大牛都是基于 Linux 来开发各种各样的软件。可以这么说,只要你能想象到的技术领域,几乎都能在里面找到 Linux 的身影。 数据库 MySQL、PostgreSQL,消息队列 RabbitMQ、Kafka,大数据 Hadoop、Spark,虚拟化 KVM、Openvswitch,容器 Kubernetes、Docker,这些软件都会默认提供 Linux 下的安装、使用、运维手册,都会默认先适配 Linux。

# 发行版本

在 Linux 内核的发展过程中,各种 Linux 发行版本起了巨大的作用,它们使用的是同一个 Linux 内核,因此在内核层不存在什么兼容性问题,每个版本有不一样的感觉,只是在发行版本的最外层(由发行商整合开发的应用)才有所体现。常见的发行版有 Red Hat、Ubuntu等。其中,Red Hat 是在我国国内使用人群最多的 Linux 版本,资料丰富,如果你有什么不明白的地方,容易找到人来请教,而且大多数 Linux 教程是以 Red Hat 为例来进行讲解的。本教程以我国国内互联网公司常用的 Linux 发行版本 CentOS 为例进行讲解,它是基于 Red Hat Enterprise Linux 源代码重新编译、去除 Red Hat 商标的产物,完全免费。缺点是不向用户提供技术支持,也不负任何商业责任。有实力的公司可以选择付费版本。

# 如何学习 Linux

很多人觉得 Linux 操作系统刚开始学起来很难,主要是因为我们平时办公或者学习用的都是 Windows 系统,而 Windows 和 Linux 的使用模式是完全不一样的。 Windows 的基本使用模式是“图形化界面 + 菜单”。也就是说,无论我们做什么事情,首先要找一个图形化的界面。在这里面,“开始”菜单是统一的入口,无论是运行程序,还是做系统设置,你都能找到一个界面,界面上会有各种各样的输入框和菜单。我们只要挨个儿看过去,总能找到想操作的功能。实在不行,还有杀手锏,就是右键菜单,挨个儿一项一项看下去,最终也能实现想做的操作。 如果你刚刚上手 Linux,就会发现,情况完全不一样。你基本是这也找不着,那也找不着,觉得 Linux 十分难用,从而“从入门到放弃”。 Linux 上手难,学习曲线陡峭,所以它的学习过程更像一个爬坡模式。这些坡看起来都很陡,但是一旦爬上一阶,就会一马平川。你会惊叹 Linux 的设计之美,而 Linux 的灵活性也会使得你有 N 多种方法解决问题,从而事半功倍,你就会有一切尽在掌握的感觉。 上手 Linux 的第一步,要先从 Windows 的思维习惯,切换成 Linux 的“命令行 + 文件”使用模式。在 Linux 中,无论我们做什么事情,都会有相应的命令工具。虽然这些命令一般会在 bin 或者 sbin 目录下面,但是这些命令的数量太多了。如果你事先不知道该用哪个命令,很难通过枚举的方式找到。因此,在这样没有统一入口的情况下,就需要你对最基本的命令有所掌握。 一旦找到某个命令行工具,替代输入框的是各种各样的启动参数。这些参数怎么填,一般可以通过 -h 查看 help,挨个儿看过去,就能找到相应的配置项;还可以通过 man 命令,查看文档。 无论是什么命令行工具,最终的配置一般会落到一个文件上,只要找到了那个文件,文件中会有注释,也可以挨个儿看下去,基本就知道如何配置了。 这个过程可能非常痛苦,在没有足够熟练地掌握命令行之前,你会发现干个非常小的事情都需要搜索半天,读很多文档,即便如此还不一定能得到期望的结果。这个时候你一定不要气馁,坚持下去,继续看文档、查资料,慢慢你就会发现,大部分命令的行为模式都很像,你几乎不需要搜索就能完成大部分操作了。

# 总结(Summary)

本章节主要对 Linux 系统做了一个概要性介绍,通过本章节的学习可以了解 Linux 系统的一个发展史,Linux 的重要性,Linux 发行版本以及 Liunx 该如何学习。

参考资料:

01-Linux 系统简介 (opens new window)