Linux 基礎學習訓練教材 - CentOS 8.x

第 1 堂課:初次使用 Linux 與指令列模式初探

第一周就先熟悉一下 Linux 的基礎操作,會用到圖形介面一點點~還有雲端系統的操作!

最近更新時間: 2020/03/08

Linux 是作業系統核心,CentOS 是 Linux 作業系統發佈套件,作業系統核心的目的第一是管理硬體、第二是提供系統呼叫給程式設計師開發軟體。 Linux 作業系統發佈套件則更提供常用軟體與工具及一個快速安裝的程序,讓操作者可以輕鬆的使用系統。理解核心、作業系統發佈套件等等是很重要的! 瞭解這些基本資料後,再來實際操作一下 CentOS 的圖形 (GUI) 與文字 (Command Line) 模式的運作~ 同時查詢一下一般用戶家目錄的資料吧!Linux 的基礎學習確實稍微困難,請大家從這一章仔細的開始進行操作的行為喔!

1.1:Linux 是什麼

這個問題,以標準答案來說,Linux 是一個作業系統『核心 (kernel)』的部份,目的除管理硬體分配資源之外,還需要提供軟體開發者一個可以遵循的開發標準, 讓程式開發人員可以在這個核心上面開發出人們所需要的軟體,諸如伺服器軟體、生產力軟體等等。由於 Linux 核心的主要目的是在管理硬體, 因此,當然我們得要先來了解一下什麼是電腦的硬體,以及相關的硬體分類,這樣才比較好入門 Linux 的學習!

1.1.1:硬體與作業系統

  • 電腦硬體與資料傳輸

目前的電腦硬體系統主要經由底下的元件所組成:

  • 輸入單元:包括鍵盤、滑鼠、讀卡機、掃描器、手寫板、觸控螢幕等等一堆;
  • 主機部分:這個就是系統單元,被主機機殼保護住了,裡面含有一堆板子、CPU 與主記憶體等;
  • 輸出單元:例如螢幕、印表機等等

上述主機部份是整體系統最重要的部份,該部份的組成為:控制單元、算術邏輯單元以及記憶體單元(含主記憶體、外部儲存裝置)等, 相關的組成圖示有點像底下這樣:

圖1.1.1-1、電腦硬體系統的示意圖,請特別注意資料傳輸流程!
圖1.1.1-1、電腦硬體系統的示意圖,請特別注意資料傳輸流程!

一般來說,上述的各個元件會以主機板為媒介,將所有的元件整合起來:

  • 主機板上面最重要的 CPU,則同時涵蓋『控制單元』與『算術邏輯單元』這兩個部份
  • 主記憶體則主要是提供 CPU 元件在處理資料時,所存取的資料存放處。但是主記憶體資料是『揮發性』的,關機就不見了。
  • 為了讓使用者的資料可以保存,因此有外部儲存裝置,或稱為輔助記憶體,這個就是一般常見的磁碟或網路磁碟
  • 包括鍵盤、滑鼠、觸控螢幕等,都屬於輸入單元
  • 包括螢幕、印表機等,都屬於輸出單元

模擬一般使用者打開電腦準備使用瀏覽器的機制而言,首先電腦開機後,載入作業系統,將硬體驅動並且準備好使用者的操作界面, 接下來,使用者登入系統後,操作滑鼠 (輸入單元) 去點擊瀏覽器,這時作業系統會從硬碟 (輔助記憶體) 將資料載入到主記憶體 (記憶單元), 等到資料載入完畢後,這時算術邏輯單元與控制單元就會開始去主記憶體存取程式與影音文字資料,並且操作各項硬體,如顯示卡與音效卡, 最後將處理完畢的資料輸出到螢幕 (輸出單元)。

例題 1.1.1-1:

硬體系統最靈魂的部份當然就是 CPU 了。但是, CPU 要有資料存取才能夠邏輯的告知我們有用的資料數據。因此,這兩個部份 (CPU與記憶體) 哪個比較快,或哪個比較忙,就顯得很重要。請先閱讀 1.6 參考資料內關於 CPU bound 與 I/O bound 的相關文件後, 分析在一般伺服器的環境下,電腦五大單元的哪個元件可能是相對比較重要的?

  • 不同的 CPU 類型

目前的電腦硬體架構主要均由中央處理單元 (CPU) 所定義的各項連結元件所組成,而目前世界上消費市場中,最常見到的 CPU 架構大概可以分為兩大類:

  • X86 個人電腦:由 Intel / AMD 為主要製造廠商,此架構通用於個人電腦 (包括筆記型電腦) 以及商用伺服器市場上 (亦即 x86 伺服器)。 目前 (2020) 無論 Intel 還是 AMD 在個人電腦市場都推出多核心的 CPU,一般入門級 CPU 就具有 6 核心 6 執行緒的配備,AMD 最高階桌上型電腦, 就具有 64 核心 128 執行緒的配備,在伺服器市場則可以具有兩路的 EPYC 64 核心兩顆,亦即可組成 128 核心 256 執行緒的設備,對於 CPU bound 的需求來說, 相當具有吸引力。
  • ARM 手持式裝置:由安謀公司所開發的 ARM CPU ,由於其架構較為精簡,且可授權其他公司開發,因此目前很多廠商均針對 ARM 架構進行自身的 CPU 開發。ARM 通常使用於手持式裝置,包括手機、平板等等,其他像是單板電腦 (Raspberry pi, Xapple pi 等) 亦使用此架構。
  • 硬體與作業系統

為了簡化硬體的資源操作,因此後來有開發『作業系統』來管理硬體資源的分配。故而程式設計師僅須考量程式的運作流程,而無須考量記憶體配置、 檔案系統讀寫、網路資料存取等,在程式開發上面較為簡易。硬體、作業系統、作業系統提供的開發界面以及應用程式的相關性,可以使用底下的圖示來說明:

圖1.1.1-2、硬體與作業系統相關性
圖1.1.1-2、硬體與作業系統相關性
  • 硬體:例如 x86 個人電腦以及 ARM Raspberry pi 即是兩種不同的硬體。但 x86 個人電腦與 x86 筆記型電腦,兩者則是相同的硬體架構喔。 不同的硬體架構具有不同的微程式指令集,驅動方式與資源分配方式會有所不同,因此需要有不同的作業系統去驅動與管理。
  • 核心:就是作業系統最基本的部份!該系統內部涵蓋檔案系統、網路系統、記憶單元管理系統、硬體驅動程式、資料加密機制等等的子系統, 提供基礎的硬體管理,還有資源分配的功能。
  • 系統呼叫:可視為核心提供的一系列函式庫,程式設計師只要參考此部份的系統呼叫即可設計相關的應用程式,而不用去考慮核心所管理的各項子系統。 例如撰寫 java 程式時,你可以僅針對 java 程式的語法去撰寫,而無須考慮 CPU 的佇列、記憶體的分配放置、檔案存取的方式等等,開發當然變得更簡單。
  • 應用程式:就是在該系統呼叫的環境中,撰寫程式碼編譯而成的 binary code 程式。

現代的作業系統主要的目的就是在控管硬體的資源,並且提供一組開發環境讓其他第三方協力廠商可以方便的在該作業系統上面開發相關的軟體。 故作業系統主要包含的部份是:『核心+系統呼叫』

例題 1.1.1-2:
  1. 運用圖 1.1.1-2 的四個同心圓,嘗試說明當年為何從 windows XP 轉到 Vista 時,很多應用程式無法運作?
  2. 除了雲端軟體之外 (一般雲端軟體,如 office 365) ,大部分的作業系統軟體在販售時,會告知適合的硬體等級, 而一般應用軟體則會告知適用的作業系統,其主要的原因為何?
  3. 桌上型 Linux 作業系統發佈套件的 binary code 安裝光碟,能不能拿來安裝到手機硬體上?說明為什麼?

現代的 Linux 作業系統主要以可跨硬體平台的 C 程式語言所寫成,且 Linux 自從 3.x 以來的核心版本已經支援了 ARM 的 CPU 架構, 因此 Linux 可以輕鬆的在不同的硬體平台間編譯後安裝。但你依舊不可以直接拿 x86 架構的編譯好的 Linux 去安裝在 ARM 的平台上! 因為兩者對個別硬體的設計還是不太相同的!

1.1.2:Linux 作業系統的發展沿革

Linux 並非憑空撰寫而來,其發展有一定的歷史背景。由於這些歷史背景,目前 Linux 是自由軟體,可以自由的使用、學習、修改、編譯、再發行, 而且是相對穩定的作業系統。

  • 1965年以前的電腦系統:
    最早的硬體沒有作業系統的概念,後來為了管理方便,因此有了『多元程式處理系統』, 更於後來以多元程式處理系統的概念再開發出了分時相容系統。當時的硬體主要是透過大型主機系統,內含分時相容系統,並提供大約 16 個文字終端機連線。不過當使用者過多時,需要等待才能夠使用電腦系統。
    圖1.1.2-1、多元程式處理系統的程序概念
    圖1.1.2-1、多元程式處理系統的程序概念
  • 1969年以前:一個偉大的夢想--Bell,MIT與GE的『Multics』系統:
    Multics 計畫希望能夠改善以前的大型主機系統,提供至少 300 個以上的文字終端機。最終雖然成功的開發出 Multics 系統, 但是相對於 Unix 而言,Multics 的使用率並不高。
  • 1969年:Ken Thompson的小型file server system
    參與過 Multics 計畫的 Thompson 為了移植一套遊戲,透過組合語言程式撰寫一套暱稱 Unics 的軟體,該軟體可以控制 PDP-7 這個硬體主機, 提供了小型的檔案系統管理功能等。
  • 1973年:Unix的正式誕生,Ritchie等人以C語言寫出第一個正式Unix核心
    Thompson 與 Ritchie 合作,Ritchie 撰寫 C 程式語言後,再以 C 改寫 Thompson 的 Unics ,最後編譯成為一套作業系統。 此系統就被稱為 Unix。由於使用 C 高階程式語言撰寫,人們很容易看得懂程式碼,因此改寫、移植程式就變得很簡單。
  • 1977年:重要的Unix分支--BSD的誕生
    柏克萊大學的Bill Joy 在取得了Unix的核心原始碼後,著手修改成適合自己機器的版本, 並且同時增加了很多工具軟體與編譯程式,最終將它命名為Berkeley Software Distribution (BSD)。
  • 1979年:重要的 System V 架構與版權宣告
    Bell lab. (貝爾實驗室) 的母企業為 AT&T 公司,AT&T 在 1979 開發最新的 SystemV 之 Unix 作業系統。這個系統最特別的地方是, SystemV 可以支援當時沒有多工環境的 x86 個人電腦。此外,AT&T在1979年發行的第七版Unix中,特別提到了『不可對學生提供原始碼』的嚴格限制!
  • 1984年之一:x86架構的Minix作業系統開始撰寫並於兩年後誕生
    因為 SystemV 之後,大學老師不可以教授 Unix 核心原始碼,因此 Andrew Tanenbaum 自己動手寫了 Minix 這個 Unix Like 的核心程式! 同時搭配 BBS 新聞群組與相關書籍來販售 Unix Like 的程式碼。因為強調的是學習程式碼,因此改版的速度相當緩慢。
  • 1984年之二:GNU計畫與FSF基金會的成立
    Richard Mathew Stallman(史托曼)在1984年發起的 GNU 計畫,目的是想要恢復以前『知識分享的駭客文化』,因此強調程式碼需要公開以利學習的自由軟體概念, 並開發出 bash, gcc, glibc, emacs 等膾炙人口的軟體。Stallman 將所有的軟體都上網,但是沒有網路的朋友也能夠透過郵件請 Stallman 寄送軟體磁帶,Stallman 經由這樣販售 emacs 的『服務費用』(Stallman 認為協助人們燒錄軟體,花費他很多的時間成本) 賺了點錢,然後成立了自由軟體基金會 (FSF, Free Software Foundation),同時與律師共同簽署了 GNU 的通用公共許可證(General Public License, GPL), 該授權讓使用者可以自由的使用軟體,且軟體的授權可以永續的存在。
  • 1988年:圖形介面XFree86計畫
    為了解決圖形使用者界面 (Graphical User Interface, GUI) 的需求,於是有 XFree86 這個組織的形成。XFree86 是由 X Window System + Free + x86 所組成的,目的在提供 server/client 的圖形畫界面。
  • 1991年:芬蘭大學生Linus Torvalds的一則簡訊
    Torvalds 在 1991 年於 BBS 上面公告他透過 GNU 的 bash, gcc 等,透過學習 Minix 系統,在 x86 (386) 上面成功的開發一個小型的作業系統, 並且放在 Internet 上面提供提供大家自由下載。同時,還鼓勵大家告知 Torvalds 自己,這個系統還有哪些部份可以值得繼續修改等的訊息。 這就是 Linux 的起源!
  • 1992年:Linux distributions 發行:
    為了讓使用者更方便安裝與操作 Linux,於是有了 Linux 開發套件的軟體釋出,就稱為 Linux distribution 了。 一開始於 1992 年就有 Softlanding Linux System(SLS), Yggdrasil Linux 等版本。
  • 1994年:Linux kernel version 1.0 釋出:
    1994 年 Linux 核心釋出 1.0 版本,同時目前世上最知名的 Linux 商業公司 Red Hat 也在當時成立。
  • 1996年:Linux kernel version 2.0 釋出,此核心版本可以支援多核心 CPU 的運作 (SMP)
  • 2004年:X.Org 基金會接管 XFree86 團隊,開始加快 X window system 的開發
  • 2005年:Google 收購 Android 公司
    從 2003 年開始,加州的一家公司開始發展 Android 系統在手機上面。後來 Google 於 2005 年收購該公司,並將 Android 在 Linux 核心上開發, 以發展可以讓手持式裝置使用的作業系統。首個商用手機 Android 作業系統則在 2008 年由 HTC 推出!
  • 2011年:Linux kernel version 3.0 發佈
  • 2012年:教育市場的 Raspberry pi
    為了讓小朋友能夠輕鬆愉快的學習程式語言,一個小型的單板電腦製造基金會依據 ARM 的架構開發了一版大約與筆記型硬碟差不多大小的主機板, 內嵌入所有電腦系統所需要的硬體,這就是樹莓派 (Raspberry pi)。Raspberry pi 的預設作業系統即是搭配 Linux 核心所開發的小型作業系統。
  • 2013年:Android 佔據大約 75% 的智慧型手機市場
  • 2015年:Linux kernel version 4.0 發佈
  • 2019年:Linux kernel version 5.0 發佈
例題 1.1.2-1:
  1. 參考圖 1.1.2-1 並嘗試說明多元程式處理系統需要可以 I/O 與 CPU 分離運作的主要架構,是透過記憶體內的哪些程序狀態達成的?且這些程序的狀態運作情況為何?
  2. 暱稱『最純種的 UNIX 』指的是那兩套 Unix 作業系統?
  3. 上網找出: (1)GNU 計畫的全名; (2)GNU 計畫的官網; (3)GNU 的吉祥物; (4)GNU 的核心名稱為何?

1.1.3:GNU 的 GPL 與 Opensource 開放原始碼授權

GNU 的 GPL 授權主要強調自由的學習,Free Software(自由軟體)是一種自由的權力,並非是『價格!』 舉例來說,你可以擁有自由呼吸的權力、你擁有自由發表言論的權力,但是,這並不代表你可以到處喝『免費的啤酒!(free beer)』, 也就是說,自由軟體的重點並不是指『免費』的,而是指具有『自由度, freedom』的軟體,史托曼進一步說明了自由度的意義是: 使用者可以自由的執行、複製、再發行、學習、修改與強化自由軟體。

GNU 的 GPL 授權有底下的權力與義務:

  • 取得軟體與原始碼:你可以根據自己的需求來執行這個自由軟體;
  • 複製:你可以自由的複製該軟體;
  • 修改:你可以將取得的原始碼進行程式修改工作,使之適合你的工作;
  • 再發行:你可以將你修改過的程式,再度的自由發行,而不會與原先的撰寫者衝突;
  • 回饋:你應該將你修改過的程式碼回饋於社群!
  • 不可修改授權:你不能將一個GPL授權的自由軟體,在你修改後而將他取消GPL授權~
  • 不可單純販賣:你不能單純的販賣自由軟體。

由於自由軟體使用的英文為 free software,這個 free 在英文是有兩種以上不同的意義,除了自由之外,免費也是這個單字! 因為有這些額外的聯想,因此許多的商業公司對於投入自由軟體方面確實是有些疑慮存在的!許多人對於這個情況總是有些擔心~

為了解決這個困擾,1998 年成立的『開放原始碼促進會 (Open Source Initiative)』提出了開放原始碼 (Open Source,亦可簡稱開源軟體) 這一名詞! 另外,並非軟體可以被讀取原始碼就可以被稱為開源軟體喔!該軟體的授權必須要符合底下的基本需求,才可以算是 open source 的軟體。

  • 公佈原始碼且用戶具有修改權:用戶可以任意的修改與編譯程式碼,這點與自由軟體差異不大;
  • 任意的再散佈:該程式碼全部或部份可以被販售,且程式碼可成為其他軟體的元件之一,作者不該宣稱具有擁有權或收取其他額外費用。
  • 必須允許修改或衍生的作品,且可讓再發佈的軟體使用相似的授權來發表即可。
  • 承上,用戶可使用與原本軟體不同的名稱或編號來散佈。
  • 不可限制某些個人或團體的使用權
  • 不可限制某些領域的應用:例如不可限制不能用於商業行為或者是學術行為等特殊領域等等
  • 不可限制在某些產品當中,亦即程式碼可以應用於多種不同產品中。
  • 不可具有排他條款,例如不可限制本程式碼不能用於教育類的研究中,諸如此類。
例題 1.1.3-1:

如果你自己開發的軟體未來可能會有商業化的可能,但目前你希望使用 Open source 的方式來提供大家使用。 另外,也希望未來能夠有一支保有開放源碼軟體的分支,那最好使用 GPL 還是 BSD 呢?

1.1.4:Linux kernel

Linux kernel 主要由 http://www.kernel.org 維護,且在 2019 年已經釋出了 5.0 版。Linux kernel 1.0 在 1994 年釋出, 在 1996 年釋出 2.0 版,在 2.0 之後,核心的開發分為兩個部份,以當時廣為使用的 2.6 來說明的話,主要的分類有:

  • 2.6.x:所謂的偶數版,為穩定版,適用於商業套件上;
  • 2.5.x:所謂的奇數版,為發展測試版,提供工程師一些先進開發的功能。

這種奇數、偶數的編號格式在 2011 年 3.0 核心推出之後就失效了。從 3.0 版開始,核心主要依據主線版本 (MainLine) 來開發,開發完畢後會往下一個主線版本進行。例如 4.9 就是在 4.8 的架構下繼續開發出來的新的主線版本。

舊的版本在新的主線版本出現之後,會有兩種機制來處理,一種機制為結束開發 (End of Live, EOL),亦即該程式碼已經結束, 不會有繼續維護的狀態。 另外一種機制為保持該版本的持續維護,亦即為長期維護版本 (Longterm)!例如 4.14 即為一個長期維護版本,這個版本的程式碼會被持續維護,若程式碼有 bug 或其他問題,核心維護者會持續進行程式碼的更新維護。

例題 1.1.4-1:
  1. Android 的版本搭配的 Linux 核心版本為何?
  2. 由 Linux kernel 官網的『Releases』相關說明,找出現階段的 Linux Mainline, Stable, Longterm 版本各有哪些?

1.1.5:Linux distributions

為了讓使用者能夠接觸到Linux,於是很多的商業公司或非營利團體,就將Linux Kernel(含tools)與可運行的軟體整合起來, 加上自己具有創意的工具程式,這個工具程式可以讓使用者以光碟/DVD或者透過網路直接安裝/管理Linux系統。 這個『Kernel + Softwares + Tools + 可完整安裝程序』的咚咚,我們稱之為Linux distribution, 一般中文翻譯成可完整安裝套件,或者Linux發佈商套件等。

常見的 Linux distributions 分類有:

RPM 軟體管理DPKG 軟體管理其他未分類
商業公司 RHEL (Red Hat 公司)
SuSE (Micro Focus)
Ubuntu (Canonical Ltd.)
社群單位 Fedora
CentOS
OpenSuSE
Debian
B2D
Gentoo

一般用途在個人電腦 (包括筆記型電腦) 的使用,建議可以使用 Ubuntu / Fedora / OpenSuSE 等,若用在 Server 上, 建議可以使用 CentOS 或 Debian。

CentOS 的產生較為有趣,他是取自 Red Hat 的 RHEL 作業系統,將原始碼中與 Red Hat 相關的註冊商標或其他著作相關的資料移除, 改以自己的『企業商用社群版本作業系統』取名,然後再次發行。因此 CentOS 的版本與 RHEL 是亦步亦趨的! (包括 Oracle Linux 與 Scientific Linux 也是同樣的作法)。

例題 1.1.5-1:

為什麼 CentOS 社群可以直接取用 RHEL 的程式碼來修改後釋出?這樣做有沒有任何法律的保護呢?

1.1.6:Linux 的常見用途

用在企業環境與學術環境中,最常見到的應用有:

  • 網路伺服器
  • 關鍵任務的應用(金融資料庫、大型企業網管環境)
  • 學術機構的高效能運算任務

個人的使用則有:

  • 桌上型電腦
  • 手持系統(PDA、手機、平板電腦、精簡電腦等)
  • 嵌入式系統 (如 raspberry pi / Xapple pi 等內建的 Linux 系統)

物連網 (Internet of Things, IoT) 的使用:

  • 由於目前物連網的需求廣泛,例如空氣盒子以及各種相關的偵測器元件,這都需要一些作業系統進行資料收集與傳輸, 因此導致類似樹莓派的流行。這樹莓派的內建作業系統,就是 Linux。
例題 1.1.6-1:

超級電腦可以說是一個國力的展現,而 top500 每年會有兩次去調查全世界跑得最快的超級電腦,台灣在 2019/11 的調查中,有一部超級電腦名列 21 名, 在 https://www.top500.org/system/179590,查詢一下該系統: (1)擁有幾顆 CPU 核心 (2)使用多少容量的記憶體 (3)使用什麼作業系統呢? (4)耗電量若以一度電 5 元台幣計算,系統運作一天要花多少錢?

例題 1.1.6-2:

前往 Dell 官網,調查其支援的 Linux distribution 主要是那幾種?另外,請思考這個查詢的意義為何? (https://linux.dell.com/files/supportmatrix/)

1.2:登入與操作 Gocloud 雲端系統 (鳥哥教室專用)

為方便教師/學生可以在任何地方學習 Linux 作業系統,一個教學環境是需要事先建置的。除了使用實體機器原生的 Linux 之外, 虛擬化的環境更方便教師製作教學單元。因為虛擬化的環境軟/硬體可以模擬的完全一致,對於教師與學生的實作練習以及錯誤重現,都有很大的幫助。

本教材預設使用的 Gocloud 雲端系統為鳥哥在自己的課堂上面搭建的小型雲伺服器,對於同學無間斷的學習是很有幫助的。不過因為系統硬體資源太少了, 所以僅開放給鳥哥實際課程的同學們使用,實際並未對網際網路開放,在此跟大家說聲抱歉!如果您是自學的朋友,那只好請參考書上的光碟資料, 使用 VirtualBox 軟體作為自學磁碟的系統了!

(ps. 除了 Gocloud 系統之外,老師們也可以選擇 Ovirt (https://ovirt.org/) 作為教學訓練的環境建置, 或者單純在原有的教室 windows 系統上面建置 virtualbox 的環境來教學即可。關於 virtualbox 的建置,可以參考光碟附件。如果是預計使用 ovirt, 可以參考如下的連結:https://www.ovirt.org/documentation/install-guide/Installation_Guide.html)

1.2.1:註冊 gocloud 與登入

除非貴單位有購買與安裝 Gocloud 系統,否則請以光碟內容的 virtualbox 環境取代底下的說明。若有安裝 Gocloud 系統, 請依據貴單位的環境設定 (網際網路 IP 或 主機名稱),直接以瀏覽器來連線到 Gocloud 系統,系統示意圖如下所示:

圖1.2.1-1、Goucloud 畫面示意圖
圖1.2.1-1、Goucloud 畫面示意圖

如果是第一次使用的學生,那就請先來註冊一下!按下如上圖的箭頭指向的地方,點下去就會出現註冊的項目了,如下所示:

圖1.2.1-2、Goucloud 註冊畫面示意圖
圖1.2.1-2、Goucloud 註冊畫面示意圖

一般來說,如果是學校單位,鳥哥建議如上述畫面所示,最好請學生依據自己的學號作為帳號,真實姓名作為姓名填寫, 這樣老師比較知道學生與帳號的對應,在考試出題與作答時,會比較清楚對應。如果沒有強調這一點,那學生註冊的姓名可能會比較傷腦筋。 等到註冊完畢後,還要等老師將你的帳號開通之後才能夠使用。因此,此時請稍微等待一小段時間喔!

等到老師將你的帳號開通,並且假設老師已經將硬碟製作好給你了,此時請回到圖 1.2.1-1 去輸入帳號與密碼欄位, 並按下登入系統或 [Enter],那就能夠登入系統了。登入系統會出現如下的圖示:

圖1.2.1-3、Goucloud 登入後的畫面示意圖
圖1.2.1-3、Goucloud 登入後的畫面示意圖

畫面中最上方為學生可以操作的系統功能,其中比較常用的是:

  • 啟動/關閉主機:讓學生可以 (1)啟動雲端虛擬機器,並打開 gocloud 的防火牆,取得連線的 URL; (2)虛擬機器運作中,可以抽換光碟; (3)可以強制關機 (直接斷電)。
  • 課程磁碟復原:在虛擬機器關機的狀態下,可以將個人的磁碟復原到最原始的狀態,所以學生可以實際多操作數次,做完直接復原即可。
  • 軟體下載:其實主要是針對 Windows 系統喔!可以安裝連線軟體,如此你的 windows/Linux 就可以使用 remote-viewer 這套軟體來取得雲端虛擬機器的終端界面。
實際練習:安裝 remote-viewer

課程的 Linux 作業系統需要用到虛擬機器,您電腦與網路雲裡面作業系統是需要連線軟體的支援的。gocloud 目前提供的是使用 remove-viewer 這套軟體來連線, 底下會介紹常見的作業系統安裝 remote-viewer 的過程,請依據你的環境來安裝。

除非貴單位有購買與安裝 Gocloud 系統,否則請以光碟內容的 virtualbox 環境取代底下的說明。若有安裝 Gocloud 系統, 請登入系統後,根據你自己家用 (或電腦教室中) 的作業系統,下載正確的 remote-viewer 軟體,並且安裝後啟動該軟體。

  1. Windows 作業系統:virt-viewer 為自由軟體,網路有提供已經預編譯好的 windows 軟體,直接下載安裝即可。 目前 (2020/03) 最新的版本為 8.0 版,請安裝 64 位元的版本,如下連結所示:(點選『Win x64 MSI (gpg)』那個項目即可!) https://virt-manager.org/download/
  2. Mac OSX 作業系統:有兩種方式可以安裝 virt-viewer,第一種是安裝比較舊版,但是動作相對簡單的 0.5.7 版,如底下的 A 連結,直接下載安裝即可。 另一種則是前往 spice 官網,使用自己編譯的方式編譯出最新的 virt-viewer 版本,但是過程非常繁複。因此,建議直接下載第一個檔案來安裝即可,較簡單。
    1. https://people.freedesktop.org/~teuf/spice-gtk-osx/dmg/
    2. https://www.spice-space.org/osx-client.html
  3. Linux 作業系統:如果是 Red Hat 系列的 (RHEL/Fedora/CentOS) ,直接安裝 virt-viewer 軟體即可。 安裝方式為(有啟動網路的情境下):『yum install virt-viewer』,啟動方式為 (須有圖形界面的環境下):『remote-viewer』
  4. Android 平板:目前 Android 平板也能夠支援 gocloud 的連線了,不過需要於 play.google.com 下載 aSpice 才能夠連線 (不是 remote-viewer 軟體)。

這裡假設學校的電腦大多為 windows 作業系統,因此當安裝完軟體後,可以在『開始』-->『所有程式』-->『VirtViewer』找到『 Remote Viewer 』這套軟體。 點選此軟體後,就可以得到如下的畫面:

圖1.2.1-4、學生端電腦連線到 Gocloud 的 remote viewer 軟體示意圖
圖1.2.1-4、學生端電腦連線到 Gocloud 的 remote viewer 軟體示意圖

當學生開啟虛擬機器後,將虛擬機器所在的網址複製到上述箭頭所指定的方框中,即可達成連線。

1.2.2:啟動與管理虛擬機器

除非貴單位有購買與安裝 Gocloud 系統,否則請以光碟內容的 virtualbox 環境取代底下的說明。

若有安裝 Gocloud 系統, 在你登入 Gocloud 網站系統後,點選『啟動/關閉主機』後,應該會得到如下的畫面。如果一切順利的話,那麼你應該會取得至少一個以上的硬碟環境。 如下圖的 2 號箭頭處。如果找不到任何硬碟,請與您的授課教師聯繫。選擇正確的磁碟後,請按下『開啟機器』的按鈕來啟動雲端虛擬機器。

圖1.2.2-1、利用 Gocloud 系統啟動雲端虛擬機器的示意圖
圖1.2.2-1、利用 Gocloud 系統啟動雲端虛擬機器的示意圖

如果一切順利,那麼你就會得到如下的畫面示意圖,基本上,我們最重要的是取得如下圖 1 號箭頭指的方框處的 URL (spice 開頭那項), 請複製該項目,並且將他貼上 圖1.2.1-4 所需要指定的 URL 方框中,按下連線 (Connect) 即可取得如 圖1.2.2-3 的雲端虛擬機器視窗了!

圖1.2.2-2、Gocloud 系統上面已經啟動了雲端虛擬機器的示意圖
圖1.2.2-2、Gocloud 系統上面已經啟動了雲端虛擬機器的示意圖
圖1.2.2-3、以 Remote viewer 軟體取得 Gocloud 上的雲端虛擬機器
圖1.2.2-3、以 Remote viewer 軟體取得 Gocloud 上的雲端虛擬機器

remote viewer 軟體左上方主要有兩個基本功能可以選擇:

  • View:可以將整個畫面放大到『全螢幕(Full Screen)』,要取消只要按下鍵盤功能鍵 [F11] 即可復原,也能夠放大、縮小畫面。
  • Send key:可以傳送組合按鍵給虛擬機器,避免由於直接按下按鍵導致 windows 或用戶端自己其他作業系統的困擾。

另外請注意,由於目前你應該有兩個完全獨立的系統,一個是你自己的系統,一個是 Gocloud 的雲端虛擬機器, 若要操作 Gocloud 的雲端虛擬機器時,你應該要將滑鼠移動到 remote viewer 的視窗內,這樣才能夠完整的使用虛擬機器的資源!

實際練習:嘗試熟悉 remote-viewer 軟體
  1. 依據上述的說明,取得你的雲端虛擬機;
  2. 在 remote-viewr 的軟體左上方,點選『view』、『zoom』、『zoom in | zoom out | normal size』,測試一下畫面的變化情境
  3. 點選『View』、『Full screen』,看看畫面是否已經變成全螢幕狀態
  4. 將滑鼠游標移動到整個畫面的中央正上方,這時畫面正上方會出現一個小按鈕,如下所示,下圖中,1 號箭頭表示可以回到原本的小視窗畫面, 2 號箭頭則是直接關掉這個虛擬機。請點選 1 號箭頭,回到原本的小視窗中。
    圖1.2.2-4、熟悉 remote-viewer 軟體
    圖1.2.2-4、熟悉 remote-viewer 軟體
  5. 點選『Send key』、『Ctrl + Alt + F2』,然後再點選『Ctrl + Alt + F1』,看看畫面的變化情境。
  6. 承上,請將滑鼠移動到 remote-viewer 的視窗內,然後分別點選『Ctrl + Alt + F2』與『Ctrl + Alt + F1』, 看看畫面的變化。

另外請注意,如果是使用 remote-viewer 的方式來進行雲端虛擬機器的連線時,由於 remote-viewer 的使用與網路頻寬很有關系, 所以,如果頻寬不太足夠的情況下 (不論是伺服器端還是用戶端),可能會導致 remote-viewer 的連線中斷。但是很可愛的是,離線中斷後, remote-viewer 會一直呈現離線那一刻的畫面...所以就會造成使用者誤以為系統當機的情況。此時只要關閉 remote-viewer ,並重新連線一次, 就可以再次取得連線的畫面了。

1.3:第一次登入 CentOS 8

取得雲端 Linux 機器後,就能夠開始操作 Linux 系統了。接下來先來學習如何登入 Linux、了解圖形界面、文字界面的操作差異, 並建立好『良好的操作行為』,這對於未來的幫助會很大的

本教材預計在訓練學員們了解 Linux 在伺服器的使用上,應該如何操作與學習,因此使用了 CentOS 這套 Linux 作業系統來學習。 請大家依據教材的內容慢慢實做練習,以理解整個系統的操作!

1.3.1:圖形界面操作 CentOS

圖1.2.2-3 的畫面中,(1)使用滑鼠左鍵將螢幕向上拉動,(2)或者是隨意在鍵盤上面輸入任意鍵, 就會出現等待登入的畫面,如下所示:

圖1.3.1-1、CentOS 8 圖形界面登入示意圖
圖1.3.1-1、CentOS 8 圖形界面登入示意圖

你可以:

  • 點選出現的人名 (你的帳號),然後輸入密碼,即可登入系統;
  • 點選『Not listed?』:接下來出現『Username』請填寫帳號,按下 [Next] 出現『Password:』請輸入正確的密碼, 然後按下 [Sign In] 即可登入系統。

本教材提供虛擬機的帳號與密碼為『student/mystdgo』,請依據此帳號密碼來登入系統。

實際練習:首次登入 CentOS 圖形界面
請第一次登入系統,並且處理好中文的操作界面!同時,家目錄底下的檔案檔名,最好不要有中文存在。
答:
  1. 登入:根據教材提供的帳號密碼登入系統:選擇 student 帳號,然後輸入密碼,如下圖所示:
    圖1.3.1-2、圖形界面登入流程
    圖1.3.1-2、圖形界面登入流程
  2. 語系選擇:第一次登入時,會出現選擇用戶語系的畫面,以符合每個操作者的習慣語系界面。本教材預設使用英文界面, 所以,這裡請改變語系,改變的方法請點選最底下的未知(三個直立的小數點),然後輸入 taiwan 的 t ,系統會主動拉出台灣!如下所示:
    圖1.3.1-3、圖形界面登入流程
    圖1.3.1-3、圖形界面登入流程
    圖1.3.1-4、圖形界面登入流程
    圖1.3.1-4、圖形界面登入流程
  3. 輸入法選擇:選擇預設的輸入法為『英語(美式)』即可按下 [下一步];
  4. 圖1.3.1-5、圖形界面登入流程
    圖1.3.1-5、圖形界面登入流程
  5. 隱私權與帳號關聯性:由於我們的虛擬機器就是個雲端的機器,因此網路位置以及線上帳號,都可以選擇略過,如下所示:
    圖1.3.1-6、圖形界面登入流程
    圖1.3.1-6、圖形界面登入流程
    圖1.3.1-7、圖形界面登入流程
    圖1.3.1-7、圖形界面登入流程
  6. 準備開始使用:接下來還會出現兩個畫面,一個是『開始使用 CentOS Linux (S)』的畫面,一個則是『Getting Started』的畫面, 第一畫面個只是告知設定完畢,第二個畫面則是初次進入系統的指引。你可以每個指引都查看,也可以直接略過,我們這裡選擇略過, 直接按下右上方的『X』即可。
  7. 查閱畫面與登出:此時畫面依舊是英文,你可以點選左上角的『Activities』按鈕,然後點選左側最下方的按鈕列程式集 (九個小點合成的按鈕), 就會出現如下畫面。之後,點選右上角的開關按鈕,然後在你的帳號 (student) 點一下,就會出現『Log Out』按鈕,點下去!有點像這樣:
    圖1.3.1-8、圖形界面登入流程
    圖1.3.1-8、圖形界面登入流程
    接下來你有 60 秒的時間可以等待是否登出,如果要立即登出,就點選『Log Out』按鈕,如下所示:
    圖1.3.1-9、圖形界面登入流程
    圖1.3.1-9、圖形界面登入流程
  8. 再次登入與確認家目錄的子目錄檔名:再次以 圖 1.3.1-2 的畫面,使用 student 帳號登入系統, 登入之後,由於檔名與語系不同,因此 CentOS 會再次詢問你的意願。建議保留英文,未來比較好操作,如下所示:
    圖1.3.1-10、圖形界面登入流程
    圖1.3.1-10、圖形界面登入流程

如果一切處理順利,那就可以出現圖形化視窗。現在,請在登入的畫面上,按下左上角的『概覽』按鈕,然後在左側的『終端機』點一下, 就會出現如下畫面的環境了!

圖1.3.1-11、圖形界面登入流程
圖1.3.1-11、圖形界面登入流程
  • 圖形界面元件認識

現在,請先按下『概覽』按鈕,然後將滑鼠向右移到視窗的邊界,就會看到類似如下的畫面:

圖1.3.1-12、圖形界面畫面認識
圖1.3.1-12、圖形界面畫面認識

上述的各個元件大致上是這樣功能:

  1. 概覽:就有點像是整個畫面叫出活動範圍的按鈕,要看到上圖的畫面,就得點選『概覽』才行
  2. 功能表:有點像以前的開始功能集,你需要的軟體,大部分都在這裡。例如上面畫面中,有瀏覽器、檔案總管、軟體倉庫、求助(救生圈)、終端機與程式集等。 點下各個按鈕,即可啟動該軟體。另外,你也可以在每個軟體上面按下右鍵,還有額外的選項可以挑選呢。
  3. 虛擬桌面:CentOS 8 跟以前的版本不一樣,以前的版本我們可以自行預先定義出所需要的虛擬桌面,這一版則是當你有需要,才點下新的虛擬桌面即可。 如上圖所示,你在第 3 個箭頭處,有目前的桌面 (聚焦外環的項目),以及另一個就是新的虛擬桌面,亦即有需要才有新的桌面的意思。
  4. 控制台:這裡的項目有很多,包括亮度挑選、網路是否啟動與關閉、使用者名稱與登出功能、直接進入控制台功能、直接關機或休眠等, 相關內容有點像底下這樣:
    圖1.3.1-13、圖形界面畫面認識
    圖1.3.1-13、圖形界面畫面認識
  5. 此虛擬桌面執行的軟體:這個與 3 號箭頭有關,亦即當你選擇虛擬桌面之後,在該虛擬桌面的軟體全部會展示出來,此時你就可以選擇你要執行的軟體了。

整個圖形界面大致如上介紹,底下請你自己探索一下整個系統內容吧:

例題 1.3.1-1:使用圖形化界面進行檔案管理操作
  1. 先啟動檔案總管的軟體
  2. 查看畫面,主要分為那三個區塊 (上/左/右)
  3. 要顯示詳細資料,應該點擊哪個項目?
  4. 詳細資料還想要有:擁有者、群組、權限等資料,該如何設定?
  5. 想瀏覽整個系統的檔案,要點擊哪裡?
  6. 持續點擊『電腦』、『etc』、『passwd』這個檔案,選擇複製,再到家目錄去貼上,查看一下檔案的相關屬性是否相同?
  7. 持續點擊『電腦』、『root』,能不能進入該目錄?為啥?
例題 1.3.1-2:調整中文輸入法與啟用文字編輯器
  1. 由於教學系統原本僅使用英文環境,因此預設並沒有安裝相關的中文輸入法,因此我們得要開啟網路後安裝相關軟體,因此,第一步請啟動網路
  2. 開啟終端機,同時切換身份成為 root 管理員 (管理員密碼 myCentOS8)
  3. 輸入『 yum install ibus-libzhuyin 』這段程式碼,開始安裝軟體
  4. 輸入『 exit 』兩次,離開終端機
  5. 再次登出後,重新登入,以更新輸入法模組
  6. 由右上角進入控制台,然後在『地區與語言』的地方新增新注音即可。
  7. 呼叫出『文字編輯器』軟體
  8. 隨意在該軟體上面輸入一些中文字
  9. 按下『儲存』,將檔儲存在『家目錄』的名為『text1.txt』的檔案中,並關閉文字編輯器
  10. 前往檔案總管看看是否有該檔案的存在。
例題 1.3.1-3:

由於我們是虛擬機器,因此在雲裡面是不需要螢幕的,因此似乎無須螢幕保護功能,請關閉螢幕保護功能。此外,也請自行調整螢幕解析度, 以配合你自己的螢幕與上課所需要的環境!

由於使用圖形界面時,會在使用者的家目錄建立相當多的圖形界面操作設定檔與暫存檔。不過在系統管理員 (root) 的角色下, 我們希望不要有太多雜亂的資料,因此建議『不要在圖形環境下使用 root 的帳號登入系統』喔!你可以在其他的登入界面使用 root 的帳號! 如下一個小節的純文字模式介紹~

1.3.2:文字/圖形界面的切換

Linux預設的情況下會提供六個Terminal來讓使用者登入, 切換的方式為使用:[Ctrl] + [Alt] + [F1]~[F6]的組合按鈕。

系統會將[F1] ~ [F6]命名為tty1 ~ tty6的操作介面環境。 也就是說,當你按下[ctrl] + [Alt] + [F1]這三個組合按鈕時 (按著[ctrl]與[Alt]不放,再按下[F1]功能鍵), 就會進入到tty1的terminal介面中了。同樣的[F2]就是tty2! 按下[Ctrl] + [Alt] + [F1]就可以回到原本的 X 圖形界面中。整理一下登入的環境如下:

  • [Ctrl] + [Alt] + [F2] ~ [F6] :文字介面登入 tty2 ~ tty6 終端機;
  • [Ctrl] + [Alt] + [F1] :圖形介面桌面。
實際練習:在 tty2 使用 student 帳號身份登入:
  1. 透過 remote-viewer 的『 Send key 』切換,或者將滑鼠移動到 remote-viewer 的軟體內,按下 [alt]+[shift]+[F2] 皆可。
  2. 你會發現到整個畫面有點像底下這樣:
    CentOS Linux 8 (Core)
    Kernel 4.18.0-147.el8.x86_64 on an x86_64
    
    localhost login: student
    Password: <==這裡輸入你的密碼
    Last login: Sun Mar 1 16:37:30 on :0 <==上次登入的情況
    [student@localhost ~]$ _ <==游標閃爍,等待你的指令輸入
    
  3. 基本上,這就是所謂的文字界面!與圖形界面取得終端機的方式的差別在於:須不須要輸入帳號與密碼而已!

上面顯示的內容為:

  1. CentOS Linux 8 (Core)
    顯示Linux distribution 的名稱 (CentOS) 與版本(8);
  2. Kernel 4.18.0-147.el8.x86_64 on an x86_64
    顯示 Linux 核心的版本為 4.18.0-147.el8.x86_64,且目前這部主機的硬體等級為x86_64。
  3. localhost login:
    localhost 是主機名稱。至於login:則是一支可以讓用戶登入的程式。 你可以在login:後面輸入你的帳號後,按下 [enter] 就可以開始準備下個動作。
  4. Password:
    這一行的出現必須要在上個動作按 [enter] 之後才會出現。 在輸入密碼的時候,螢幕上面『不會顯示任何的字樣!』 這是為了擔心使用者輸入密碼時,被偷看到『輸入的密碼長度』之故。
  5. Last login: Sun Mar 1 16:37:30 on :0
    當使用者登入系統後,系統會列出上一次這個帳號登入系統的時間與終端機名稱!
  6. [student@localhost ~]$ _
    這一行則是正確登入之後才顯示的訊息, 最左邊的 student 顯示的是『目前使用者的帳號』,而@之後接的 localhost 則是『主機名稱』,至於最右邊的『 ~ 』則指的是 『目前所在的目錄』,那個 $ 則是『提示字元』

上述比較重要的資料在第 6 行,CentOS 的 bash 提示字元通常的格式就是『 [使用者帳號@本主機名 工作目錄]提示字元 』。 其中比較重要的項目是:

  • ~ 符號代表的是『使用者的家目錄』的意思,他是個『變數!』。舉例來說,root的家目錄在/root, 所以 ~ 就代表/root的意思。而student的家目錄在/home/student, 所以如果你以student登入時,他看到的 ~ 就會等於/home/student
  • 提示字元方面,在Linux當中,預設root的提示字元為 # ,而一般身份使用者的提示字元為 $ 。

另外,文字界面等待登入畫面的第一、第二行的內容其實是來自於/etc/issue這個檔案!

那麼如何離開系統呢?其實應該說『登出Linux』才對!登出很簡單,直接這樣做:

[student@localhost ~]$ exit

就能夠登出Linux了。但是請注意:『離開系統並不是關機!』 基本上,Linux本身已經有相當多的工作在進行,你的登入也僅是其中的一個『工作』而已, 所以當你離開時,這次這個登入的工作就停止了,但此時Linux其他的工作是還是繼續在進行的!

例題 1.3.2-1:多重登入與觀察登入帳號
  1. 重新以 student 的身份登入在 tty3 的位置上
  2. 輸入 w (who 的縮寫) 查看用戶在幹什麼
  3. 為什麼有 tty3, :1 等,那是什麼?

1.4:簡易的文字指令操作

站在伺服器角度的立場來看,使用純文字模式來進行系統的操作是很重要的!畢竟伺服器通常不會啟用圖形界面。 因此,第一堂課接觸過 Linux 與登入過 Linux 之後,讓我們來使用簡單的指令查詢一下用戶家目錄裡面有哪些資料,以及如何查詢自己曾經下達過的指令吧!

1.4.1:ls 與 ll 檢查自己目錄的檔名資料

請使用一般用戶的身份登入 Linux 系統,同時啟動一個終端機在桌面上。現在讓我們來執行兩隻指令,確認一下如何操作系統與觀察輸出的資料。

[student@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  text1.txt  Videos

使用 ls 可以單純的列出檔名,就是上面列出的『Desktop Documents Downloads...』等等的資料。 不過並沒有顯示這個檔名相關的各項檔案權限資訊,包括時間、容量等等。若需要查閱比較詳細的資訊,需要使用 ll (LL 的小寫) 來處置。

[student@localhost ~]$ ll
drwx------. 2 student student  6  3月  1 15:35 Desktop
drwx------. 2 student student  6  3月  1 15:35 Documents
drwx------. 2 student student  6  3月  1 15:35 Downloads
drwx------. 2 student student  6  3月  1 15:35 Music
drwx------. 2 student student  6  3月  1 15:35 Pictures
drwx------. 2 student student  6  3月  1 15:35 Public
drwx------. 2 student student  6  3月  1 15:35 Templates
-rw-r--r--. 1 student student 22  3月  1 16:12 text1.txt
drwx------. 2 student student  6  3月  1 15:35 Videos

第一堂課的此時,你需要注意的是最右邊的三個參數,分別是檔案容量、檔案最後被修改的日期、檔名資訊。 以『Pictures』檔名為例,該檔名的容量有 6bytes,而最後被修改的日期為『 3月 1 15:35 』。至於年份則是本年度的意思。

如果想要查閱根目錄 (類似 windows 的『電腦』項目),則使用如下的指令:

[student@localhost ~]$ ll /
總計 24
lrwxrwxrwx.   1 root root    7  5月 11  2019 bin -> usr/bin
dr-xr-xr-x.   6 root root 4096  2月 26 09:15 boot
drwxr-xr-x.  20 root root 3260  3月  1 16:44 dev
drwxr-xr-x. 135 root root 8192  3月  1 16:49 etc
drwxr-xr-x.   3 root root   21  2月 26 09:10 home
lrwxrwxrwx.   1 root root    7  5月 11  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root    9  5月 11  2019 lib64 -> usr/lib64
......

此時螢幕上顯示的為根目錄底下的檔名,而不是 student 的家目錄了。這個練習在讓操作者了解到,指令後面可以加參數 (parameters)。 而如果想要知道 student 家目錄底下有沒有『隱藏檔』時,可以使用如下的指令:

[student@localhost ~]$ ll -a
總計 36
drwx------. 15 student student 4096  3月  1 16:47 .
drwxr-xr-x.  3 root    root      21  2月 26 09:10 ..
-rw-------.  1 student student   44  3月  1 16:44 .bash_history
-rw-r--r--.  1 student student   18 11月  9 00:21 .bash_logout
-rw-r--r--.  1 student student  141 11月  9 00:21 .bash_profile
-rw-r--r--.  1 student student  312 11月  9 00:21 .bashrc
drwx------. 11 student student  244  3月  1 15:56 .cache
drwx------. 14 student student 4096  3月  1 16:36 .config
drwx------.  2 student student    6  3月  1 15:35 Desktop
......

可以發現多了相當多以小數點開頭的檔名,這些檔名在 ls 或 ll 時並不會出現,但加上『 -a 』這個『 選項 (Option) 』之後, 就會開始出現了。這個練習在讓操作者了解到,指令後面可以加『選項』來改變指令的處理行為。

最後,如果你想要知道根目錄本身的權限,而不是根目錄底下的檔名,則應該要使用底下的指令:

[student@localhost ~]$ ll -d /
dr-xr-xr-x. 17 root root 224  2月 26 09:02 /

你將在螢幕上發現到只有根目錄 (/) 這個檔名存在,而不像剛剛『 ll / 』出現一堆檔名資料。 亦即一般情況下,ll 是『瀏覽目錄內的檔名資訊』,而不是看目錄本身。

以 windows 的檔案總管來說,通常檔名的瀏覽畫面中,左側為『目錄』而右側為『該目錄下的檔名』,所以,『 ll 』代表滑鼠點左邊的目錄, 而螢幕輸出右邊的檔名資料之意。

例題 1.4.1-1:清除螢幕以及查閱檔案權限參數
  1. 在終端機界面中輸入『 clear 』會有什麼效果?
  2. 檢查一下 /var/spool/mail 這個目錄 (1)裡面有幾個檔案? (2)這個目錄本身所修改的時間是什麼時候?

1.4.2:歷史命令功能

Linux 的文字界面中,可以用幾個簡單的方式去檢查你曾經下達過的指令,最簡單的方法就是使用方向鍵『上與下』, 不但能夠呼叫出之前的指令,也能夠再透過方向鍵『左與右』,與鍵盤上的『home/end』按鍵,直接在一行指令的最前面與最後面直接再修改。 熟悉這個作法,可以讓你快速的編輯一行指令。

但是如果是太久之前做的指令,此時就能夠透過歷史命令『 history 』來呼叫出來。

實際練習:呼叫以前下達過的指令,同時重複執行該指令
  1. 使用 student 的身份,下達 history 這個指令:
    [student@station10-101 ~]$ history
    ......
        6  w
        7  ls
        8  ll
        9  ll /
       10  ll -a
       11  ll -d /
       12  clear
       13  ll /var/spool/mail
       14  ll -d /var/spool/mail
       15  ll /var/spool
       16  history
    
  2. 觀察上述指令,可以發現 ll / 是在第 9 個號碼上面,亦即曾經執行過的第 9 個指令。重複上述的指令,可以使用『 !9 』即可! 亦即驚嘆號加上指令號碼,且驚嘆號與 9 中間沒有空格喔!如下:
    [student@station10-101 ~]$ !9
    ll /        <==這裡會將指令的完整下達方式顯示一次喔!
    總計 24
    lrwxrwxrwx.   1 root root    7  5月 11  2019 bin -> usr/bin
    dr-xr-xr-x.   6 root root 4096  2月 26 09:15 boot
    drwxr-xr-x.  20 root root 3260  3月  1 16:44 dev
    drwxr-xr-x. 135 root root 8192  3月  1 16:49 etc
    drwxr-xr-x.   3 root root   21  2月 26 09:10 home
    lrwxrwxrwx.   1 root root    7  5月 11  2019 lib -> usr/lib
    ......
    
  3. 除了『 !數字 』可以重複執行某個指令外,我們也能夠透過指令前導字元來重複執行某個指令。以上面的輸出來看,我們曾經輸入過 clear 這個指令。 如果我想要重複執行這個指令,可以直接輸入 !cl 即可!因為 cl 開頭的指令,最近只有 clear (從 16 號往前推的結果)。
    [student@station10-101 ~]$ !cl
    

在 CentOS 8 底下,預設歷史命令會紀錄 1000 筆,你下次登入後,系統會將上次的歷史命令匯入,亦即:假設上次你下達過 50 筆紀錄, 則下次啟用終端機後,第一個指令會紀錄在 51 筆。因此,經常查詢 history 可以讓操作者了解以前曾經下達過哪些指令。

1.4.3:離開系統與關閉系統

基本上,所謂的『離開系統』應該也能稱為『關閉某個軟體』的意思。以 CentOS 8 來說,圖形界面是個軟體,終端機是個軟體,瀏覽器也是個軟體。 離開瀏覽器、離開控制台,都可以直接點選該軟體右上角的『 X 』即可關閉。但是對於終端機來說,由於終端機環境底下,你可能會有其他同步工作的任務在, 因此,要離開終端機或圖形界面,不建議直接點選『 X 』,最好可以輸入『 exit 』或『 logout 』或者是在沒有輸入任何資料的情況下, 按下 [ctrl]+d 來關閉該軟體。注意,是關閉該軟體,不是關機喔!底下為關閉終端機的建議方式:

  • exit
  • logout
  • [ctrl]+d

要關閉圖形界面,就點選登出 (logout) 即可,登出前,最好按下『概覽』看一下所有的桌面,是否所有的軟體都已經關閉了? 最好全部都關閉再登出比較好!那如果要關機呢?最好先檢查看看有沒有任何用戶在系統上?如果有,先讓該用戶登出, 等到全部都登出了,再關機比較好。觀察系統正上線的用戶,可以使用之前講過的 w 來查閱:

[student@localhost ~]$ w
 20:48:08 up  4:03,  3 users,  load average: 0.00, 0.00, 0.00
 20:48:08 up  4:03,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
student  :1       :1               16:47   ?xdm?  54.99s  0.02s /usr/libexec/gdm-x-session gnome-session
student  tty3     -                16:46    4:01m  0.03s  0.03s -bash
student  pts/0    172.16.200.254   20:45    0.00s  0.04s  0.01s w

看起來有個 student 在 tty3 登入了!我們先去到 tty3 登出後,再回到圖形界面來關機吧!從上面的結果我們也可以知道, 終端機界面使用的軟體為 bash,而圖形界面則是使用 gdm-x-session 這個軟體的意思。

至於 pts/0 則可能是 (1)在圖形界面啟動的終端機,或 (2)透過網路連線進來的終端機。並非本機的 tty1~tty6 。

從上表看來,目前確實僅有 student 在線上,若本機器並非伺服器,則此時應該可以進行關機的行為。關機可以使用如下的指令:

[student@localhost ~]$ poweroff
[student@localhost ~]$ halt
[student@localhost ~]$ shutdown -h now
[student@localhost ~]$ systemctl poweroff

上述的任何一個指令均可關機。但無論使用哪個指令關機,其實最終都是呼叫最後一個,亦即『 systemctl poweroff 』進行關機的行為。

在本機 tty1~tty6 登入系統的帳號,無論系統管理員或一般帳號,均可 poweroff 本機。但如果是透過網路連線進來的,則無法關閉 Linux , 除非使用管理員帳號,才有辦法透過網路關機。

1.5:課後練習操作

  • 上課的課後練習,非作業:
  1. 請在進行底下動作之前,先將系統整個關機 (poweroff),之後再由 gocloud 或者是 virtualbox 的環境啟動上課教材硬碟
  2. 先使用 student 登入圖形界面,然後開啟終端機,輸入 w 之後,查看一下目前的登入狀態
  3. 由於第一個圖形界面應該是 :0,第二個則是 :1 以此類推,上述的情況可能會看到非 :0 的狀態。此時,該如何判斷圖形界面在哪一個 tty 呢?
  4. 此時網路是否有正常運作?請自行查閱看看。
  5. 判斷一下螢幕保護程式是否關閉了?
  6. 查看螢幕解析度目前的設定
  7. 查看一下輸入法有沒有新注音
  8. 請使用檔案總管,將 /etc/group 複製到 student 的家目錄去。
  9. 切換到 tty6 ,並同時使用 student 身份登入
  10. 承上,查看曾經輸入過的指令
  11. 找到曾經下達過得『 ll /var/spool 』或者是『 ll / 』,將這個指令 (隨意取一個) 重新執行一次。
  12. 列出 /etc 底下的所有檔名,並且需要有日期資料的列出
  13. 你會發現到 tty6 的螢幕畫面無法容納所有的資料,這時沒滑鼠可用,該如何是好?
  14. 如何查看 /etc/pam.d 這個檔名的相關屬性,包括建立的時間等 (在 tty6 的環境下)
  15. 查看 student 家目錄的所有檔案權限,包括隱藏檔。
  16. 將 tty6 畫面清除,然後回到圖形界面的環境。
  17. 登出 student 之後,關機

做完之後,可以到參考解答查看一下你的答案是否合理喔!

  • 作業 (不提供學生答案,僅提供教師參考答案)

作業硬碟一般操作說明:

  • 開啟雲端虛擬機器前,請務必確認你開啟的硬碟是『unit01』,否則就會做錯題目
  • 若要使用圖形界面,請務必使用 student 身份登入,若需要切換身份,再啟用終端機處理。
  • 若有簡答題需要使用中文,請自行以第一堂課的動作自行處理輸入法安裝。
  • 每部虛擬機器均有獨特的網卡位址,請勿使用他人硬碟上傳,否則計分為 0 分。
  • 每位同學均有自己的 IP 尾數,請先向老師詢問您的 IP 尾數,才可以進行作業上傳。
  • 最終上傳作業結果,請務必使用 root 身份上傳。
  • 進入作業硬碟後,先用 root 身份執行 vbird_book_setup_ip , 執行流程請參考:vbird_book_setup_ip

作業當中,某些部份可能為簡答題~若為簡答題時,請將答案寫入 /home/student/ans.txt 當中,並寫好正確題號,方便老師訂正答案。 請注意,檔名寫錯將無法上傳!

  1. (15%)計算機概論基礎:
    1. 電腦組成的五大單元中,(a)指的是哪五個單元?(b)CPU 主要包含那兩個單元?
    2. 簡單說明 I/O bound 與 CPU bound 代表什麼意思?(就是五大單元的哪一個部份比較忙碌)
    3. 查詢 DDR4 2666 的傳輸頻寬與一般 SSD SATA 3 理論頻寬的傳輸速度分別是多少 (用 Mbytes/s 為單位)
    4. 一般傳統網路伺服器,大多是 I/O bound,那請問如果要讓此 server 效能較好,應該是(a)加大哪個元件?(b)加快哪個元件?
    5. 消費性市場的 CPU 當中,(a)桌上型電腦與(b)手機常用的 CPU 分別是哪種類型?
  2. (15%)Unix 基礎:
    1. 圖1.1.1-2的資料中,請以『Oracle Solaris』、『GNOME』、『POSIX』、『SPARC 工作站』說明個四個東西各屬那一層?
    2. 貝爾實驗室 (Bell lab.) 的那兩個高級駭客用 C 寫成了第一版的 unix 作業系統?
    3. 從那一個 Unix 版本開始,Unix 終於可以支援 x86 個人電腦?
    4. 號稱自由軟體之父是哪位先生?而自由軟體 (free software) 又是那一個授權的名稱?
    5. 我們開玩笑說,純種的 UNIX 系統,指的是哪兩個 OS?
  3. (15%)Linux 基礎:
    1. Torvalds 是參考那一個 Unix-like 的系統而撰寫 Linux 的?
    2. 查一下網路資料,列出三種以上的 Open source 授權
    3. 所謂的 Linux distributions 大概包括那四個元件?
    4. Raspberry pi 的主要作業系統名稱為 Raspbian,這個作業系統是基於哪一個 Linux distribution 改版而來?
    5. 查詢一下目前 Linux kernel 最新主線 (mainline) 底下的穩定版本是第幾版 (每隔幾個月,答案就不一樣)?
  4. (30%)CentOS 8 的基礎操作:
    1. 除了使用圖形界面的檔案總管之外,如果你要查詢 /home/student 底下有哪些檔案(列出目錄下檔名),可以在終端機使用哪個指令加參數? 假設你並不在 student 的家目錄底下。
    2. 承上,那麼想要列出所有隱藏檔的檔名時,可以使用什麼指令搭配什麼選項與參數?
    3. 在預設情況下,你可以輸入哪些組合按鈕來進入不同的終端界面 (TTY),例如,你要如何進入到 tty4 呢?
    4. 說明終端機的提示字元中,最後一個字元是 $ 與 # 分別代表什麼意思?
    5. 終端機的提示字元內,有個『~』符號,請說明該符號的意義,同時說明 student 與 root 的 ~ 分別在哪裡?
    6. 想要查詢自己輸入的歷史命令,可以使用什麼指令?
    7. 在終端機界面中輸入『 clear 』會有什麼效果?
    8. 在終端機查詢目前的線上登入者,可以使用哪個指令?
    9. 登入取得終端機後,要離開終端機應該使用哪些指令或組合按鈕?(至少寫兩個)
    10. 在終端機當中想要關機 Linux 時,可以用 root 身份執行哪些指令?(至少寫兩個)
  5. (25%)CentOS 8 的基礎操作,底下為連鎖題,要注意操作!
    1. 在 /opt 底下有個隱藏檔,請寫下該檔案的檔名
    2. 該檔案是個目錄檔,請查詢該目錄底下有幾個檔案 (寫下個數)
    3. 上面這幾個檔案中,哪一個檔案容量最大?寫下檔名
    4. 上面這幾個檔案中,哪一個檔案日期最新?寫下檔名
    5. 上面這幾個檔案中,哪一個檔案的擁有者,明顯與其他檔案不同?寫下檔名

作業結果傳輸:請以 root 的身分執行 vbird_book_check_unit 指令上傳作業結果。 正常執行完畢的結果應會出現【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字樣。若需要查閱自己上傳資料的時間, 請在作業系統上面使用瀏覽器查詢: http://192.168.251.254 檢查相對應的課程檔案。 相關流程請參考: vbird_book_check_unit

修改歷史:
  • 2020/02/25:修改自 CentOS 7.x 版本的第一章,將一些資料補充的比較齊全,同時增加一些題目資料。
  • 2020/03/08:重新修改習題,變得比較有一些統一一致性的效果。
2020/03/02 以來統計人數
計數器
伺服器篇文件
各版本彙整說明
CentOS 6.x