简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(1)

Linux是一个操作系统平台。我们平时常用的操作系统叫作Windows。当然,也有不少朋友使用苹果电脑,苹果电脑所用的系统叫作macOS。也许你还听说过一种系统叫作Unix,Unix是比Linux更加古老的一种系统,多用在服务器领域。 Linux同样也是用在服务器领域,大家熟知的BAT公司(百度、阿里、腾讯)、Google、Facebook等一线互联网大公司的服务器99%的操作系统都是Linux。大家用的Android手机也是Linux操作系统。

Linux 的由来

说到Linux的历史,故事就多了,但总觉得讲太多你也记不住,甚至会产生放弃学习Linux的念头,所以这里只简要介绍一下Linux的由来。

在Linux诞生之前,一直是Unix的天下。只不过当时Unix并不能免费获得,要想使用必须先购买授权,这在当时是非常昂贵的,很少有人能承担得起。

在这样的背景下,很多计算机爱好者非常渴望有一个便宜或者免费的操作系统供大家学习研究。1983年,计算机界的牛人Richard Stallman发起了一个计划,目的就是构建一套完全自由的操作系统,这个计划就是著名的GNU计划。所谓完全自由,就是要求加入GNU计划的所有软件都必须自由使用、自由更改、自由发布。也就是说,软件发布必须要发布它的源代码,这个源代码可以供别人自由使用,也可以随便更改,但是必须要把更改后的代码发布。当然,光说不行,必须要有明文规定许可协议来制约大家如何自由使用,这套规定许就是著名的GPL协议。

GNU计划发起后,有很多支持者,所以在这期间产生了许多非常棒的软件,比如vi、Emacs、GCC等。但遗憾的是,一直没有一个比较完美的操作系统出现。直到1991年,芬兰大学生林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)基于兴趣开发了一个类Unix操作系统,一经发布便得到了广大爱好者的追捧,这个系统就是Linux。1994年,Linux加入GNU计划并采用GPL协议发布。自此,GNU/Linux真正实现了构建一套完全自由的操作系统的设想。

Linux系统

如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版。在查看Linux软件包时,你肯定被发行版、LiveCD和GNU之类的术语搞晕过。初次进入Linux世界会让人觉得不那么得心应手。在开始学习命令和脚本之前,我们将为你稍稍揭开Linux系统的神秘面纱。

Linux可划分为以下四部分:

每一部分在Linux系统中各司其职。但就单个部分而言,其作用并不大。图1是一个基本结构框图,展示了各部分是如何协作起来构成整个Linux系统的。下面我们将详细介绍这四部分,然后概述它们如何通过协作构成一个完整的Linux系统。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(2)

图1 Linux系统

深入探究Linux内核

Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

Linus还在赫尔辛基大学上学时就开发了第一版Linux内核。起初他只是想仿造一款Unix系统而已,因为当时Unix操作系统在很多大学都很流行。

Linus完成了开发工作后,将Linux内核发布到了互联网社区,并征求改进意见。这个简单的举动引发了计算机操作系统领域内的一场革命。很快,Linus就收到了来自世界各地的学生和专业程序员的各种建议。

如果谁都可以修改内核程序代码,那么随之而来的将是彻底的混乱。为了简单起见,Linus担当起了所有改进建议的把关员。能否将建议代码并入内核完全取决于Linus。时至今日,这种概念依然在Linux内核代码开发过程中沿用,不同的是,现在是由一组开发人员来做这件事,而不再是Linus一个人。

内核主要负责以下四种功能:

下面我们进一步探究以上每一种功能。

1. 系统内存管理

操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。

内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存(如图2所示)。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(3)

图2 Linux系统内存映射

内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上。

内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称为换出,swapping out)——即使还有可用内存。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内存页面。显然,这个过程要花费时间,拖慢运行中的进程。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。

2. 软件程序管理

Linux操作系统将运行中的程序称为进程。进程可以在前台运行,将输出显示在屏幕上,也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。

内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。

一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于专门文件/etc/inittab中。

另外一些系统(比如现在流行的Ubuntu Linux发行版)则采用/etc/init.d目录,将开机时启动或停止某个应用的脚本放在这个目录下。这些脚本通过/etc/rcX.d目录下的入口(entry)*启动,这里的X代表运行级(run level)。

*这些入口实际上是到/etc/init.d目录中启动脚本的符号链接。

Linux操作系统的init系统采用了运行级。运行级决定了init进程运行/etc/inittab文件或/etc/rcX.d目录中定义好的某些特定类型的进程。Linux操作系统有5个启动运行级。

运行级为1时,只启动基本的系统进程以及一个控制台终端进程。我们称之为单用户模式。单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,在这种模式下,仅有一个人(通常是系统管理员)能登录到系统上操作数据。

标准的启动运行级是3。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动。另一个Linux中常见的运行级是5。在这个运行级上系统会启动图形化的X Window系统,允许用户通过图形化桌面窗口登录系统。

Linux系统可以通过调整启动运行级来控制整个系统的功能。通过将运行级从3调整成5,系统就可以从基于控制台的系统变成更先进的图形化X Window系统。

3. 硬件设备管理

内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。在Linux内核中有两种方法用于插入设备驱动代码:

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块

以前,插入设备驱动代码的唯一途径是重新编译内核。每次给系统添加新设备,都要重新编译一遍内核代码。随着Linux内核支持的硬件设备越来越多,这个过程变得越来越低效。不过好在Linux开发人员设计出了一种更好的将驱动代码插入运行中的内核的方法。

开发人员提出了内核模块的概念。它允许将驱动代码插入到运行中的内核而无需重新编译内核。同时,当设备不再使用时也可将内核模块从内核中移走。这种方式极大地简化和扩展了硬件设备在Linux上的使用。

Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3种分类:

  • 字符型设备文件
  • 块设备文件
  • 网络设备文件

字符型设备文件是指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。块设备文件是指处理数据时每次能处理大块数据的设备,比如硬盘。

网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许Linux系统使用常见的网络编程协议同自身通信。

Linux为系统上的每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识它。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识主设备组下的某个特定设备。

4. 文件系统管理

不同于其他一些操作系统,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。除了自有的诸多文件系统外,Linux还支持从其他操作系统(比如Microsoft Windows)采用的文件系统中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。表1列出了Linux系统用来读写数据的标准文件系统。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(4)

表1 Linux文件系统

Linux服务器所访问的所有硬盘都必须格式化成表1所列文件系统类型中的一种。

Linux内核采用虚拟文件系统(Virtual File System,VFS)作为和每个文件系统交互的接口。这为Linux内核同任何类型文件系统通信提供了一个标准接口。当每个文件系统都被挂载和使用时,VFS将信息都缓存在内存中。

GNU工具

除了由内核控制硬件设备外,操作系统还需要工具来执行一些标准功能,比如控制文件和程序。Linus在创建Linux系统内核时,并没有可用的系统工具。然而他很幸运,就在开发Linux内核的同时,有一群人正在互联网上共同努力,模仿Unix操作系统开发一系列标准的计算机系统工具。

GNU组织(GNU是GNU's Not Unix的缩写)开发了一套完整的Unix工具,但没有可以运行它们的内核系统。这些工具是在名为开源软件(open source software,OSS)的软件理念下开发的。

开源软件理念允许程序员开发软件,并将其免费发布。任何人都可以使用、修改该软件,或将该软件集成进自己的系统,无需支付任何授权费用。将Linus的Linux内核和GNU操作系统工具整合起来,就产生了一款完整的、功能丰富的免费操作系统。

尽管通常将Linux内核和GNU工具的结合体称为Linux,但你也会在互联网上看到一些Linux纯粹主义者将其称为GNU/Linux系统,藉此向GNU组织所作的贡献致意。

1. 核心GNU工具

GNU项目的主旨在于为Unix系统管理员设计出一套类似于Unix的环境。这个目标促使该项目移植了很多常见的Unix系统命令行工具。供Linux系统使用的这组核心工具被称为coreutils(core utilities)软件包。

GNU coreutils软件包由三部分构成:

  • 用以处理文件的工具
  • 用以操作文本的工具
  • 用以管理进程的工具

这三组主要工具中的每一组都包含一些对Linux系统管理员和程序员至关重要的工具。

2. shell

GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。

shell包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显示和终止系统中正运行的程序等操作。shell也允许你在命令行提示符中输入程序的名称,它会将程序名传递给内核以启动它。

你也可以将多个shell命令放入文件中作为程序执行。这些文件被称作shell脚本。你在命令行上执行的任何命令都可放进一个shell脚本中作为一组命令执行。这为创建那种需要把几个命令放在一起来工作的工具提供了便利。

在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更利于创建脚本,有些则更利于管理进程。所有Linux发行版默认的shell都是bash shell。bash shell由GNU项目开发,被当作标准Unix shell——Bourne shell(以创建者的名字命名)的替代品。bash shell的名称就是针对Bourne shell的拼写所玩的一个文字游戏,称为Bourne again shell。

表2列出了Linux中常见的几种不同shell。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(5)

表 2 Linux shell

大多数Linux发行版包含多个shell,但它们通常会采用其中一个作为默认shell。如果你的Linux发行版包含多个shell,就请尽情尝试不同的shell,看看哪个能满足你的需要。

Linux桌面环境

在Linux的早期(20世纪90年代初期),能用的只有一个简单的Linux操作系统文本界面。这个文本界面允许系统管理员运行程序,控制程序的执行,以及在系统中移动文件。

随着Microsoft Windows的普及,电脑用户已经不再满足于对着老式的文本界面工作了。这推动了OSS社区的更多开发活动,Linux图形化桌面环境应运而生。

完成工作的方式不止一种,Linux一直以来都以此而闻名。在图形化桌面上更是如此。Linux有各种图形化桌面可供选择。下面介绍其中一些比较流行的桌面。

1. X Window系统

有两个基本要素决定了视频环境:显卡和显示器。要在电脑上显示绚丽的画面,Linux软件就得知道如何与这两者互通。X Window软件是图形显示的核心部分。

X Window软件是直接和PC上的显卡及显示器打交道的底层程序。它控制着Linux程序如何在电脑上显示出漂亮的窗口和图形。

Linux并非唯一使用X Window的操作系统,它有针对不同操作系统的版本。在Linux世界里,能够实现X Window的软件包可不止一种。

其中最流行的软件包是X.org。它提供了X Window系统的开源实现,支持当前市面上的很多新显卡。

另外两个X Window软件包也日渐流行。Fedora Linux发行版采用了试验性的Wayland软件;Ubuntu Linux发行版开发出了Mir显示服务器,用于其桌面环境。

在首次安装Linux发行版时,它会检测显卡和显示器,然后创建一个含有必要信息的X Window配置文件。在安装过程中,你可能会注意到安装程序会检测一次显示器,以此来确定所支持的视频模式。有时这会造成显示器黑屏几秒。由于现在有多种不同类型的显卡和显示器,这个过程可能会需要一段时间来完成。

核心的X Window软件可以产生图形化显示环境,但仅此而已。虽然对于运行独立应用这已经足够,但在日常PC使用中却并不是那么有用。它没有桌面环境供用户操作文件或是开启程序。为此,你需要一个建立在X Window系统软件之上的桌面环境。

2. KDE桌面

KDE(K Desktop Environment,K桌面环境)最初于1996年作为开源项目发布。它会生成一个类似于Microsoft Windows的图形化桌面环境。如果你是Windows用户,KDE就集成了所有你熟悉的功能。图1-3展示了运行在openSuSE Linux发行版上的KDE 4桌面。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(6)

图 3 openSuSE Linux系统上的KDE 4桌面

KDE桌面允许你把应用程序图标和文件图标放置在桌面的特定位置上。单击应用程序图标,Linux系统就会运行该应用程序。单击文件图标,KDE桌面就会确定使用哪种应用程序来处理该文件。

桌面底部的横条称为面板,由以下四部分构成。

  • KDE菜单:和Windows的开始菜单非常类似,KDE菜单包含了启动已安装程序的链接。
  • 程序快捷方式:在面板上有直接从面板启动程序的快速链接。
  • 任务栏:任务栏显示着当前桌面正运行的程序的图标。
  • 小应用程序:面板上还有一些特殊小应用程序的图标,这些图标常常会根据小应用程序的状态发生变化。

所有的面板功能都和你在Windows上看到的类似。除了桌面功能,KDE项目还开发了大量的可运行在KDE环境中的应用程序。

3. GNOME桌面

GNOME(the GNU Network Object Model Environment,GNU网络对象模型环境)是另一个流行的Linux桌面环境。GNOME于1999年首次发布,现已成为许多Linux发行版默认的桌面环境(不过用得最多的是Red Hat Linux)。

尽管GNOME决定不再沿用Microsoft Windows的标准观感(look-and-feel),但它还是集成了许多Windows用户习惯的功能:

  • 一块放置图标的桌面区域
  • 两个面板区域
  • 拖放功能

图4展示了CentOS Linux发行版采用的标准GNOME桌面。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(7)

图4 CentOS Linux系统上的GNOME桌面

GNOME开发人员不甘示弱于KDE,也开发了一批集成进GNOME桌面的图形化程序。

4. Unity桌面

如果你用的是Ubuntu Linux发行版,你会注意到它与KDE和GNOME桌面环境有些不一样。准确来说,这是因为负责开发Ubuntu的公司决定采用自己的一套叫作Unity的Linux桌面环境。

Unity桌面得名于该项目的目标——为工作站、平板电脑以及移动设备提供一致的桌面体验。不管你是在工作站还是在手机上使用Ubuntu,Unity桌面的使用方式都是一样的。图5展示了Ubuntu 14.04 LTS中的Unity桌面。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(8)

图5 Ubuntu Linux系统上的Unity桌面

5. 其他桌面

图形化桌面环境的弊端在于它们要占用相当一部分的系统资源来保证正常运行。在Linux发展之初,Linux的标志和卖点之一就是它可以运行在处理能力较弱的老旧PC上,这些PC无力运行较新的微软桌面。然而随着KDE和GNOME桌面环境的普及,情况发生了变化。运行KDE或GNOME桌面要占用的内存资源和微软的最新桌面环境旗鼓相当。

如果你的PC已经有些年代了,也不要泄气。Linux开发人员已经联手让Linux返璞归真。他们开发了一些低内存开销的图形化桌面应用,提供了能够在老旧PC上完美运行的基本功能。尽管这些图形化桌面环境并没有大量专为其设计的应用,但它们仍然能运行许多基本的图形化程序,支持如文字处理、电子表格、数据库、绘图以及多媒体等功能。

表3列出了一些可在配置较低的PC和笔记本电脑上运行的轻量级Linux图形化桌面环境。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(9)

表3 其他Linux图形化桌面

这些图形化桌面环境并不如KDE或GNOME桌面一样绚丽,但却提供了恰到好处的基本图形化功能。图6展示了Puppy Linux antiX发行版所采用的JWM桌面的外观。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(10)

图6 Puppy Linux发行版所采用的JWM桌面

如果你用的是老旧PC,尝试一下基于上述某个桌面环境的Linux发行版,看看怎么样,可能会有惊喜哦。

Linux发行版

到此为止,你已经了解了构成完整Linux系统所需要的4个关键部件,那你可能在考虑要怎样才能把它们组成一个Linux系统。幸运的是,已经有人为你做好这些了。

我们将完整的Linux系统包称为发行版。有很多不同的Linux发行版来满足可能存在的各种运算需求。大多数发行版是为某个特定用户群定制的,比如商业用户、多媒体爱好者、软件开发人员或者普通家庭用户。每个定制的发行版都包含了支持特定功能所需的各种软件包,比如为多媒体爱好者准备的音频和视频编辑软件,为软件开发人员准备的编译器和集成开发环境(IDE)。

不同的Linux发行版通常归类为3种:

  • 完整的核心Linux发行版
  • 特定用途的发行版
  • LiveCD测试发行版

下面我们探讨一下这些不同类型的Linux发行版,然后展示每种类型中一些Linux发行版示例。

1.核心Linux发行版

核心Linux发行版含有内核、一个或多个图形化桌面环境以及预编译好的几乎所有能见到的Linux应用。它提供了一站式的完整Linux安装。表4列出了一些较流行的核心Linux发行版。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(11)

表4 核心Linux发行版

在Linux的早期,发行版是作为一叠软盘发布的。你必须下载多组文件,然后将其复制到软盘上。通常要用20张或更多的软盘来创建一个完整的发行版!毋庸多言,这是个痛苦的过程。

现今,家用电脑基本都有内置的CD和DVD光驱,Linux发行版也就用一组CD光盘或单张DVD光盘来发布。这大大简化了Linux的安装过程。

然而当新手在安装核心Linux发行版时,仍然经常遇到各种各样的问题。为了照顾到Linux用户的所有使用情景,单个发行版必须包含很多应用软件。从高端的Internet数据库服务器到常见的游戏,可谓应用尽有。鉴于Linux上可用应用程序的数量,一个完整的发行版通常至少要4张CD。

尽管发行版中的大量可选配置对Linux极客来说是好事,但对新手来说就是一场噩梦。多数发行版会在安装过程中询问一系列问题,以决定哪些应用要默认加载、PC上连接了哪些硬件以及怎样配置硬件设备。新手经常会被这些问题困扰,因此,他们经常是要么加载了过多的程序,要么没有加载够,到后来才发现计算机并没有按照他们预想的方式工作。

对新手来说,幸运的是,安装Linux还有更简便的方法。

特定用途的Linux发行版

Linux发行版的一个新子群已经出现了。它们通常基于某个主流发行版,但仅包含主流发行版中一小部分用于某种特定用途的应用程序。

除了提供特定软件外(比如仅为商业用户提供的办公应用),定制化发行版还尝试通过自动检测和自动配置常见硬件来帮助新手安装Linux。这使得Linux的安装过程轻松愉悦了许多。

表5列出了一些特定用途的Linux发行版以及它们的专长。

这只是特定用途的Linux发行版中的一小部分而已。像这样的发行版足有上百款,而且在互联网上还不断有新的成员加入。不管你的专长是什么,你都能找到一款为你量身定做的Linux发行版。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(12)

表5 特定用途的Linux发行版

许多特定用途的Linux发行版都是基于Debian Linux。它们使用和Debian一样的安装文件,但仅打包了完整Debian系统中的一小部分。

2.Linux LiveCD

Linux世界中一个相对较新的现象是可引导的Linux CD发行版的出现。它无需安装就可以看到Linux系统是什么样的。多数现代PC都能从CD启动,而不是必须从标准硬盘启动。基于这点,一些Linux发行版创建了含有Linux样本系统(称为Linux LiveCD)的可引导CD。由于单张CD容量的限制,这个样本并非完整的Linux系统,不过令人惊喜的是,你可以自己加入各种软件。结果就是,你可以通过CD来启动PC,并且无需在硬盘安装任何东西就能运行Linux发行版。

这是一个不弄乱PC就体验各种Linux发行版的绝妙方法。只需插入CD就能引导了!所有的Linux软件都将直接从CD上运行。你可以从互联网上下载各种Linux LiveCD,刻录,然后体验。

表6列出了一些可用的流行Linux LiveCD。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(13)

表6 Linux LiveCD发行版

你能在这张表中看到熟悉的面孔。许多特定用途的Linux发行版都有对应的Linux LiveCD版本。一些Linux LiveCD发行版,比如Ubuntu,允许直接从LiveCD安装整个发行版。这使你可以从CD引导启动,先体验一下此Linux发行版,如果喜欢的话,再把它安装到硬盘上。这个功能极其方便易用。

就像所有美好的事物一样,Linux LiveCD也有一些不足之处。由于要从CD上访问所有东西,应用程序会运行得更慢,而如果再搭配上陈旧缓慢的PC和光驱,那更是慢上加慢。还有,由于无法向CD写入数据,对Linux系统作的任何修改都会在重启后失效。

不过,有一些Linux LiveCD的改进帮助解决了上述一些问题。这些改进包括:

  • 能将CD上的Linux系统文件复制到内存中;
  • 能将系统文件复制到硬盘上;
  • 能在U盘上存储系统设置;
  • 能在U盘上存储用户设置。

一些Linux LiveCD,如Puppy Linux,只包含最少数量的Linux系统文件。当CD引导启动时,LiveCD的启动脚本直接把它们复制到内存中。这允许在Linux启动后立即把CD从光驱中取走。这不仅提高了程序运行速度(因为程序从内存中运行时更快),而且还空出了CD光驱,供你用Puppy Linux自带的软件转录音频CD或播放视频DVD。

其他Linux LiveCD用另外的方法,同样允许你在启动后将CD从光驱中拿走。这种方法是将核心Linux文件作为一个文件复制到Windows硬盘上。待CD启动后,系统会寻找那个文件,并从中读取系统文件。dyne:bolic Linux LiveCD采用的就是这种技术,我们称之为对接。当然,你必须在从CD引导启动之前把系统文件复制到硬盘里。

一种非常流行的技术就是用常见的U盘(也称为闪存或闪盘)来存储Linux LiveCD会话数据。几乎每个Linux LiveCD都能识别插入的U盘(即使是在Windows下格式化的)并从U盘上读写文件。这允许你启动Linux LiveCD,使用Linux应用来创建文件,再将这些文件存储在U盘上,然后用Windows应用(或者在另外一台电脑上)访问这些文件。这该有多酷!

小结

本文探讨了Linux系统及其基本工作原理。Linux内核是系统的核心,控制着内存、程序和硬件之间的交互。GNU工具也是Linux系统中的一个重要部分。我们还讨论了Linux系统中的最后一个组件:Linux桌面环境。随着时间推移,一切都发生了改变。现今的Linux可以支持多种图形化桌面环境。

本文还探讨了各种Linux发行版。Linux发行版就是把Linux系统的各个不同部分汇集起来组成一个易于安装的包。Linux发行版有囊括各种软件的成熟的Linux发行版,也有只包含针对某种特定功能软件包的特定用途发行版。Linux LiveCD则是一种无需将Linux安装到硬盘就能体验Linux的发行版。

后面我们就可以学习启动命令行和shell脚本编程了。可以跟着下面这两本书继续学习。

——本文内容节选自《跟阿铭学Linux》《Linux命令行与shell脚本编程大全(第3版)》

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(14)

本书是一本入门级的Linux学习教材,适合初学者阅读。即使是零基础的人,只要能够坚持把所有章都学完,也一定会受益匪浅。对于有工作经验的人,它也是一本详尽的工具书,助你解决工作当中的一些需求和难题。

书中内容由浅入深,内容精湛,案例丰富,通俗易懂!书中分两部分:前面为基础知识,内容涉及Linux的安装、使用远程登录工具登录Linux、文件和目录管理、磁盘管理、Vim、压缩和解压缩文件和目录、安装和卸载软件包等;后面为进阶知识,内容包括正则表达式、shell脚本、日常管理操作、LAMP环境、LNMP环境、MySQL常用的操作、NFS、FTP、Tomcat、Linux集群和Zabbix监控等。

简单易懂的linux教程学习(什么是LinuxLinux快速简易入门)(15)

  • 圣经级参考书最新版,亚马逊书店五星推荐
  • 轻松全面掌握Linux命令行和shell脚本编程细节,实现Linux系统任务自动化

这是一本关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的shell脚本。本书针对Linux系统的最新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的shell脚本。

Linux 系统管理员要养成的习惯

不管是在生活还是工作中,每个人都会逐渐养成一些小习惯。坏习惯一旦形成就很难改正,所以阿铭在这里先给出一些建议,请大家务必引起重视。

  1. 要习惯使用命令行

操作系统必须要有图形界面,但早期的Linux并不完全支持图形界面,操作起来也没有Windows系统流畅,这也是Windows系统比Linux系统流行的原因之一。在图形界面下进行操作,既直观又简洁,但Linux的图形界面存在许多小问题,所以未被大多数PC机用户认可。

个人电脑的操作系统大多为Windows,其次为macOS,服务器要托管在IDC机房,通过远程去管理。开启图形界面不仅耗费资源,而且远程管理时还会有网络带宽的额外开销,因此Linux在服务器领域比较流行。

目前,也有不少朋友喜欢使用Linux的图形界面及支持图形界面的远程连接工具来管理Linux。鉴于以上使用图形界面的几个弊端,阿铭建议你不要轻易使用Linux的图形界面。

命令行是Linux系统正常运行的核心,也是专业Linux系统工程师必须掌握的技能,所以我们要习惯使用命令行。

2. 操作要严谨

在学习Linux之前,阿铭要问你一个问题:“你有没有误删某个重要文件的经历?”我想大多数读者朋友都会说“有”。任何人都会有疏忽的时候,作为一名Linux系统管理员,你每天都要和服务器打交道,养成严谨认真的习惯是必要的。

举例来说,服务器上的数据非常重要,你每天都必须备份,一旦数据损坏,你还可以使用备份的数据。阿铭曾经在多年前犯过这样的错误:没有为数据库上的数据制定备份计划。结果有一天,服务器磁盘损坏,数据不能恢复,以致丢失了大量的客户信息,造成了非常严重的后果。常言道:“吃一堑,长一智。”阿铭在这里提醒大家,请务必养成备份数据的好习惯。

数据备份固然重要,但也经不起一次次的操作失误。在学习Linux命令行的过程中,你输入命令的速度会越来越快,效率也会越来越高。但与此同时,你也有可能输入了错误的命令而不自知。比如,你要删除某个目录,却把要删除目录的名字写错了,结果可想而知。所以,阿铭建议你输入命令的速度不要太快,看准了再按回车。另外,对于重要的配置文件,在修改前一定要进行备份,这样一旦出现问题,我们便可以将文件快速还原。

3. 安全不可忽视

你有没有这样的习惯?

  • 各个网站的账号和密码都一样;
  • 密码中包含自己的名字或者生日日期;
  • 密码设置得非常简单,采用纯数字形式或者包含一些常用词汇(如love、china等);
  • 将密码存在一个文档里,并保存到U盘里随身携带;
  • 密码使用了好多年,一直没有更改过。

以上所有的习惯,不管你符合几条,都说明你的安全意识还不够,需要加强。

我们要登录服务器,必然要使用登录密码,那么这个密码如何设置、如何保存都是有讲究的。首先,密码设置得要复杂,至少要8个字符,包含数字和大小写字母,而且不能有规律性。首先,密码中不能包含你的名字或者生日日期。其次,你不能在所有的网站都使用同一个账号和密码。近几年有多起账号泄露事件,如果你在各大网站设置的密码都一样,一旦你在某一网站上的密码泄露了,那就相当于你所有的密码都泄露了。再次,密码最好不要长期沿用,建议你每隔1~3个月修改一次密码。最后,阿铭必须提醒你,密码不能保存在一个文档里,更不能把存有密码的文档存到可移动存储设备里。因为可移动存储设备有可能遗失,遗失之后,我们设置的密码也就遗失了。

说完了密码,阿铭接着来说一说在日常办公室中的安全习惯。你的办公电脑有设置密码吗?当你离开工位时,电脑有没有锁屏呢?阿铭觉得大公司应该都有规定:员工的电脑一定要设置好密码,并且员工在离开工位时要把电脑锁屏。这是为了防止一些重要信息被他人获取。你也许会说同事之间都相互信任,没有关系,但万一有人图谋不轨呢?任何意外都有可能发生。最后阿铭送你一句话:“小心驶得万年船。”

关于保存密码,阿铭在这里给大家分享一个小经验。阿铭的各大平台(淘宝、京东、阿里云、印象笔记、QQ、微信、支付宝等)的密码是不一样的,而且密码复杂度也是非常高的。但是这么多密码如何记住?这就需要借助一款工具“KeePass”来记忆了。KeePass是一款开源免费的软件,历史悠久,所以大家不用担心它的安全性。作为管理服务器的你来说,更应该注意公司服务器权限的安全性!

学习建议

好习惯养成了,剩下的就是如何学习了。好的学习方法和学习技巧可以大大提高学习效率。每个人都经历过中考和高考,阿铭相信你已经找到了一套最适合自己的学习方法。

  1. 稳中求进

有的朋友读书喜欢一蹴而就,恨不得几天就读完,这样即使读完了整本书,也学不到什么。咱们这本书不能和故事书相比,故事书可以一口气看完,但是技术方面的书,光看一遍可不行,我们的目的是要学会和掌握这项技能。

阿铭建议你每章内容都花2~3天的时间来学习。虽然每一章的内容不多,但其中的小案例需要多练习才能够真正掌握。正所谓“熟能生巧”,这就好比学唱一首歌,听一遍你只知道它是否好听,听两三遍你也许能熟悉它的旋律、记住它的歌名,但如果要学会唱这首歌,恐怕至少需要听十几遍吧。

2. 善于总结文档

“好记性不如烂笔头”,这是我们上学时老师经常跟我们说的一句话。我们的大脑不是计算机,不能让信息永久保存,所以需要大家善于记笔记,把一些你觉得不太容易记住的内容记在小本子上,方便日后复习。

在学习中,我们要善于总结文档,即使工作之后也不要放弃,工作的过程也是学习的过程。遇到问题时,我们通过查资料或者请教他人顺利解决了问题,那么你有必要记下解决这类问题的方法,以便日后举一反三。阿铭在2009年就建立了一个论坛(阿铭Linux - 猿课),用于记录日常工作中遇到的问题、学习笔记等各类文档。日子久了,文档积累得越来越多,多年后再回头看看自己早期记录的文档,何尝不是一件奇妙的事情!我建议大家申请一个免费的博客,来记录你的学习历程。

3. 复习很关键

记完笔记并不等于掌握了知识,要想完全掌握必须经常复习。比如说,你的11位手机号能记住吗?你的QQ号也很长,能记住吗?银行账号呢?身份证号呢?阿铭不知道这些号码你是否能全部记住,但阿铭可以。身份证号码18位,够长吧,相信99%的朋友不能一下子就记住,那为什么我们能记住呢?因为我们在反复使用它。再比如,小时候老师教我们写汉字,对于复杂的汉字,咱们写一两遍是记不住的,只有多写几遍才能完全记住。同样的道理,Linux的命令虽然多,但如果每天都用的话,不出一周,你一定可以记住它们。

4. 举一反三

在后面,阿铭会针对性地给出几个小案例,你不必掌握这些小案例,因为就算你背熟书中的所有案例,也不代表你就多么厉害了,阿铭只要求你学会一种技能——举一反三。

记得高三时,数学老师给我们买了好几套模拟题,这些题和高考题很像,因为它们考查的知识点是一致的。我们做这些模拟题的目的不是为了把题和答案记住,而是要掌握这道题考查的知识点。只要掌握了这些知识点,再难的题我们也都可以迎刃而解。

同样,阿铭在书中给出这些小案例也是为了告诉大家某个命令或者某个选项的用法及作用,所以,你需要掌握的并不是小案例本身,而是小案例背后的知识。这要求你会自己创造案例,多做几个相似的小案例,做到举一反三,你便能轻松地掌握相关的知识点。

希望你学习愉快~

,