什麼是Linux?Linux快速簡易入門

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內核
  • GNU工具
  • 圖形化桌面環境
  • 應用軟件

每一部分在Linux系統中各司其職。但就單個部分而言,其作用並不大。圖1是一個基本結構框圖,展示了各部分是如何協作起來構成整個Linux系統的。下面我們將詳細介紹這四部分,然後概述它們如何通過協作構成一個完整的Linux系統。

什麼是Linux?Linux快速簡易入門

圖1 Linux系統

深入探究Linux內核

Linux系統的核心是內核。內核控制著計算機系統上的所有硬件和軟件,在必要時分配硬件,並根據需要執行軟件。

Linus還在赫爾辛基大學上學時就開發了第一版Linux內核。起初他只是想仿造一款Unix系統而已,因為當時Unix操作系統在很多大學都很流行。

Linus完成了開發工作後,將Linux內核發佈到了互聯網社區,並徵求改進意見。這個簡單的舉動引發了計算機操作系統領域內的一場革命。很快,Linus就收到了來自世界各地的學生和專業程序員的各種建議。

如果誰都可以修改內核程序代碼,那麼隨之而來的將是徹底的混亂。為了簡單起見,Linus擔當起了所有改進建議的把關員。能否將建議代碼併入內核完全取決於Linus。時至今日,這種概念依然在Linux內核代碼開發過程中沿用,不同的是,現在是由一組開發人員來做這件事,而不再是Linus一個人。

內核主要負責以下四種功能:

  • 系統內存管理
  • 軟件程序管理
  • 硬件設備管理
  • 文件系統管理

下面我們進一步探究以上每一種功能。

1. 系統內存管理

操作系統內核的主要功能之一就是內存管理。內核不僅管理服務器上的可用物理內存,還可以創建和管理虛擬內存(即實際並不存在的內存)。

內核通過硬盤上的存儲空間來實現虛擬內存,這塊區域稱為交換空間(swap space)。內核不斷地在交換空間和實際的物理內存之間反覆交換虛擬內存中的內容。這使得系統以為它擁有比物理內存更多的可用內存(如圖2所示)。

什麼是Linux?Linux快速簡易入門

圖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?Linux快速簡易入門

表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?Linux快速簡易入門

表 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?Linux快速簡易入門

圖 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?Linux快速簡易入門

圖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?Linux快速簡易入門

圖5 Ubuntu Linux系統上的Unity桌面

5. 其他桌面

圖形化桌面環境的弊端在於它們要佔用相當一部分的系統資源來保證正常運行。在Linux發展之初,Linux的標誌和賣點之一就是它可以運行在處理能力較弱的老舊PC上,這些PC無力運行較新的微軟桌面。然而隨著KDE和GNOME桌面環境的普及,情況發生了變化。運行KDE或GNOME桌面要佔用的內存資源和微軟的最新桌面環境旗鼓相當。

如果你的PC已經有些年代了,也不要洩氣。Linux開發人員已經聯手讓Linux返璞歸真。他們開發了一些低內存開銷的圖形化桌面應用,提供了能夠在老舊PC上完美運行的基本功能。儘管這些圖形化桌面環境並沒有大量專為其設計的應用,但它們仍然能運行許多基本的圖形化程序,支持如文字處理、電子表格、數據庫、繪圖以及多媒體等功能。

表3列出了一些可在配置較低的PC和筆記本電腦上運行的輕量級Linux圖形化桌面環境。

什麼是Linux?Linux快速簡易入門

表3 其他Linux圖形化桌面

這些圖形化桌面環境並不如KDE或GNOME桌面一樣絢麗,但卻提供了恰到好處的基本圖形化功能。圖6展示了Puppy Linux antiX發行版所採用的JWM桌面的外觀。

什麼是Linux?Linux快速簡易入門

圖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?Linux快速簡易入門

表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?Linux快速簡易入門

表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?Linux快速簡易入門

表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?Linux快速簡易入門

本書是一本入門級的Linux學習教材,適合初學者閱讀。即使是零基礎的人,只要能夠堅持把所有章都學完,也一定會受益匪淺。對於有工作經驗的人,它也是一本詳盡的工具書,助你解決工作當中的一些需求和難題。

書中內容由淺入深,內容精湛,案例豐富,通俗易懂!書中分兩部分:前面為基礎知識,內容涉及Linux的安裝、使用遠程登錄工具登錄Linux、文件和目錄管理、磁盤管理、Vim、壓縮和解壓縮文件和目錄、安裝和卸載軟件包等;後面為進階知識,內容包括正則表達式、shell腳本、日常管理操作、LAMP環境、LNMP環境、MySQL常用的操作、NFS、FTP、Tomcat、Linux集群和Zabbix監控等。

什麼是Linux?Linux快速簡易入門

  • 聖經級參考書最新版,亞馬遜書店五星推薦
  • 輕鬆全面掌握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. 舉一反三

在後面,阿銘會針對性地給出幾個小案例,你不必掌握這些小案例,因為就算你背熟書中的所有案例,也不代表你就多麼厲害了,阿銘只要求你學會一種技能——舉一反三。

記得高三時,數學老師給我們買了好幾套模擬題,這些題和高考題很像,因為它們考查的知識點是一致的。我們做這些模擬題的目的不是為了把題和答案記住,而是要掌握這道題考查的知識點。只要掌握了這些知識點,再難的題我們也都可以迎刃而解。

同樣,阿銘在書中給出這些小案例也是為了告訴大家某個命令或者某個選項的用法及作用,所以,你需要掌握的並不是小案例本身,而是小案例背後的知識。這要求你會自己創造案例,多做幾個相似的小案例,做到舉一反三,你便能輕鬆地掌握相關的知識點。

希望你學習愉快~

相關推薦

推薦中...