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

課程問題參考解答

單純提供一個相對的解答,並不是標準答案!

最近更新時間: 2020/06/11

單純就是個解答的參考,寫完之後再來這邊查查看答案跟你想的一樣不一樣!?

第 01 堂課

  • 例題 1.1.1-1:

    大部分的伺服器 (除了資料庫之外) 主要的任務大多在處理檔案資料的傳輸運作,真正用在計算的時間 (資料酷例外) 相對是少的。 而且,大部分的伺服器總是服務多數用戶,每個用戶都會生成一個程序,每個程序都有自己的資料運作。因此,在資料的傳輸上面, 可能會佔據比較大部份的資源,亦即,伺服器大部分都是 I/O bound 的情況。在這種情況下,加大記憶體 (插更多的主記憶體) 以及加快磁碟讀寫 (更換速度更快的 SSD 或 M2 或 RAID 等) ,可能是讓伺服器效能增加是比較有用的。

  • 例題 1.1.1-2:
    1. 當時 microsoft 為了改善作業系統的資訊安全問題,因此採用全新的系統呼叫設計,同時系統核心層級也進行大幅度的修改,據以開發出新一代的 vista 作業系統, 因此,很多 windows XP 的軟體就無法在 vista 上面運作!這是因為系統呼叫不同所致。故而很多的廠商就不敢更換成 Vista 系統, 免得自家開發的軟體不能執行。後來 microsoft 很多系統開發時,就有考慮到軟體相容性的問題,避免再次發生同樣的困擾。
    2. 如同四個同心圓的架構,軟體依附在作業系統上面,因此,同樣是 google chrome 瀏覽器,就會分 windows 版本、Linux 版本、 Mac 版本等等。 例如下圖所示,就是一個簡單的範本:
      以 google chrome 為例,不同作業系統須下載不同的版本
      以 google chrome 為例,不同作業系統須下載不同的版本
      上圖來源為 https://www.google.com/chrome/,請自行點選參考。由上所知,軟體與作業系統有關。
    3. 由於不同的作業系統其編譯行為並不相同,因此桌上型 x86 Linux 作業系統是沒有辦法直接放到 ARM 的手機硬體上面執行的,這也能由 4 個同心圓的圖示得到印證。
  • 例題 1.1.2-1:
    1. 早期的系統大多屬於 I/O bound 的狀態,因為 CPU 的效能相對強大。在此情況下,如何將 I/O 的狀態切開,讓 CPU 可以省去等待的時間, 就很重要。早期的批次處理系統會讓 CPU 無法執行下一個程序,因此,多元程式處理系統,在記憶體內改變程序的狀態, 同時 CPU 也能進行多工 (在工作中切換),因此將程序設定為中斷 (interrupt) 時,此時該程序就會被放置到其他裝置獨立運作, 而 CPU 的資源就能釋放出來,給予其他程序持續進行。如此則可以加速程序運作,並且讓 CPU 資源完整被利用!
    2. 指的其實是 1977 年的 BSD 與 SystemV
    3. (1)GNU is Not Unix;
      (2)https://www.gnu.org/;
      (3)是隻公牛;
      (4)由 https://www.gnu.org/software/hurd/hurd.html 找到,名為 GNU hurd 作業系統。
  • 例題 1.1.3-1:

    開放原始碼基金會 (Free software Foundation, FSF, https://www.fsf.org/) 主要提供了 GNU/GPL 授權, 該授權的使用有相關嚴格的規定。相對來說,開放原始碼基金會 (Open Source Initiative, https://opensource.org/) 則雖然也是開放原始碼軟體,但至少可以擁有商業化的空間。因此,若想要商業化保留專屬軟體的封閉內容功能,可能選擇 BSD 發佈會比較好。 相關的 open source 授權,可以參考 https://opensource.org/licenses/alphabetical

  • 例題 1.1.4-1:
    1. 相關 Android 版本可以參考 https://zh.wikipedia.org/wiki/Android, https://zh.wikipedia.org/wiki/Android版本列表。目前市面上最新的 Android 10 使用的是 Linux kernel 5.0 版本。
    2. 請先前往 https://www.kernel.org/category/releases.html 查看,在製作教材的 2020/02 時,使用的 longterm 版本有 3.16, 4.4, 4.9, 4.14, 4.19, 5.4 等。
  • 例題 1.1.5-1:

    Red Hat 為一家自由軟體商業公司,由於 Linux kernel 使用 GPL 授權,因此,Red Hat 就得要將其所開發的軟體使用 open source 的方式釋出, 這當然也包括 RHEL 這些軟體的程式碼。但是,RHEL 裡面含有 Red Hat 本身的商標授權等特別的圖案等,這些資料則是 Red Hat 商業擁有! 那是不能夠直接取用的。

    CentOS 為社群單位,志工工程師取得 RHEL 的軟體之後,會依據 RHEL 建置的流程,先建立開放原始碼的伺服器樹狀環境, 之後逐一檢視各軟體是否有專屬的商業圖示在內,必需要取出後重新修改與編譯。你可以參考 CentOS 的發行注記 (release note) 來了解更多!由於是 GPL 的關係,因此 CentOS 同樣以 GPL 釋出喔! 因此,你可以享有自由的複製與在發行的權力!

  • 例題 1.1.6-1:

    經過追查該系統,其相關資訊為:

    • 使用 Intel Xeon Gold 6154,每顆 CPU 有 18 核心,系統總核心數達到 170,352 個,所以,總安裝 CPU 顆數應可達到 170352/18 = 9464 顆。
    • 使用記憶體容量達到 193,536GB,差不多就是 194TB 的等級!
    • 就是使用 CentOS 喔!
    • 實際運作,耗電量達到 797千瓦,台灣一度電測定方式為 1 千瓦小時,所以,該系統開機一天 (24hrs) 時,耗電量為: 797*24 = 19128 千瓦小時。 每度電 5 元,故一天的電費: 19128*5 = 95640 元。這還不考慮冷氣與照明設備的額外電力喔!
  • 例題 1.1.6-2:

    經查該系統,發現到主要支援的作業系統有 Oracle Linux (甲骨文,與 CentOS 類似,都是從 RHEL 系統複製來的分支), RHEL 與 RHEV (Red Hat 系統的虛擬化架構)、SUSE Linux Enterprise Server (SLES)、Ubuntu等, 這代表硬體製造商認為這幾個作業系統是一般商用最常使用的環境,因此才會進行硬體支援度的測試。因此, 要選擇 Linux distributions,當然以這幾個版本來挑選是最佳的。

  • 例題 1.3.1-1:
    1. 點擊『概覽』之後,點擊類似文件櫃的圖示,即可開啟檔案總管
    2. 大致區分為:『上方檔案所在工作目錄、可工作項目』、『左側快速連結與其他電腦目錄』、『右側主要檔案清單區』
      檔案總管大致的三個區塊介紹
      檔案總管大致的三個區塊介紹
    3. 可以點選上圖中,在放大鏡右側的按鈕,即可變更圖示與詳細項目的功能切換
    4. 在詳細顯示的環境下,你先點選上方工作列最左側的圖示,然後依序執行底下的動作即可:
      操作檔案總管顯示詳細資料的方法 操作檔案總管顯示詳細資料的方法 操作檔案總管顯示詳細資料的方法
      操作檔案總管顯示詳細資料的方法
    5. 依序點擊『左側的"其他的位置"』,然後『雙擊右側的"電腦"畫面』,即可看到目前系統的所有可用目錄
    6. 持續點擊『電腦』、『etc』、『passwd』這個檔案,然後在 passwd 上面點選右鍵,選擇『複製』。 之後點選左側『家目錄』後,滑鼠移動到右側點選右鍵後貼上即可。你可以發現到擁有者、群組、修改時間都改變了。
    7. 因為擁有者與群組都是『root』,目前身份是 student,因此,可能是因為權限不足的緣故。
  • 例題 1.3.1-2:
    1. 請點選右上角倒三角形,點選『有線網路』,點選『連線』之後,就可以看到網路圖示。
    2. 點選『概覽』之後,點選『終端機』,然後輸入『 su - 』,之後提示輸入密碼時,輸入『 myCentOS8 』這串密碼,即可變身成為 root 管理員。 終端機畫面有點像這樣:
      [student@station10-101 ~]$ su -
      密碼:   <==這裡輸入 myCentOS8 這個密碼
      [root@station10-101 ~]#
      
      如上所示,在中括號內的項目,從 student 變成了 root 了!
    3. 接下來開始安裝軟體,直接在上述的畫面中,繼續輸入安裝指令即可:
      [root@station10-101 ~]# yum install ibus-libzhuyin
      Last metadata expiration check: 0:03:10 ago on Sun 01 Mar 2020 03:45:14 PM CST.
      Dependencies resolved.
      =======================================================================================
       Package                       Architecture     Version           Repository      Size
      =======================================================================================
      Installing:
       ibus-libzhuyin                x86_64           1.8.93-1.el8      AppStream      7.4 M
      Installing dependencies:
       kyotocabinet-libs             x86_64           1.2.76-17.el8     AppStream      328 k
       libpinyin                     x86_64           2.2.0-1.el8       AppStream      340 k
       libpinyin-data                x86_64           2.2.0-1.el8       AppStream      9.3 M
       libzhuyin                     x86_64           2.2.0-1.el8       AppStream      325 k
      
      Transaction Summary
      =======================================================================================
      Install  5 Packages
      
      Total download size: 18 M
      Installed size: 67 M
      Is this ok [y/N]: y
      Downloading Packages:
      (1/5): kyotocabinet-libs-1.2.76-17.el8.x86_64.rpm         586 kB/s | 328 kB     00:00
      (2/5): libpinyin-2.2.0-1.el8.x86_64.rpm                   512 kB/s | 340 kB     00:00
      (3/5): libzhuyin-2.2.0-1.el8.x86_64.rpm                   1.8 MB/s | 325 kB     00:00
      (4/5): ibus-libzhuyin-1.8.93-1.el8.x86_64.rpm             4.0 MB/s | 7.4 MB     00:01
      (5/5): libpinyin-data-2.2.0-1.el8.x86_64.rpm              5.9 MB/s | 9.3 MB     00:01
      ----------------------------------------------------------------------------------------
      Total                                                     6.0 MB/s |  18 MB     00:02
      warning: /var/cache/dnf/AppStream-a520ed22b0a8a736/packages/ibus-libzhuyin-1.8.93-1.el8.
      x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
      CentOS-8 - AppStream                                      1.6 MB/s | 1.6 kB     00:00
      Importing GPG key 0x8483C65D:
       Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
       Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
       From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
      Is this ok [y/N]: y
      Key imported successfully
      Running transaction check
      Transaction check succeeded.
      Running transaction test
      Transaction test succeeded.
      Running transaction
        Preparing        :                                                            1/1
        Installing       : kyotocabinet-libs-1.2.76-17.el8.x86_64                     1/5
        Running scriptlet: kyotocabinet-libs-1.2.76-17.el8.x86_64                     1/5
        Installing       : libpinyin-data-2.2.0-1.el8.x86_64                          2/5
        Installing       : libpinyin-2.2.0-1.el8.x86_64                               3/5
        Running scriptlet: libpinyin-2.2.0-1.el8.x86_64                               3/5
        Installing       : libzhuyin-2.2.0-1.el8.x86_64                               4/5
        Installing       : ibus-libzhuyin-1.8.93-1.el8.x86_64                         5/5
        Running scriptlet: ibus-libzhuyin-1.8.93-1.el8.x86_64                         5/5
        Verifying        : ibus-libzhuyin-1.8.93-1.el8.x86_64                         1/5
        Verifying        : kyotocabinet-libs-1.2.76-17.el8.x86_64                     2/5
        Verifying        : libpinyin-2.2.0-1.el8.x86_64                               3/5
        Verifying        : libpinyin-data-2.2.0-1.el8.x86_64                          4/5
        Verifying        : libzhuyin-2.2.0-1.el8.x86_64                               5/5
      
      Installed:
        ibus-libzhuyin-1.8.93-1.el8.x86_64       kyotocabinet-libs-1.2.76-17.el8.x86_64
        libpinyin-2.2.0-1.el8.x86_64             libpinyin-data-2.2.0-1.el8.x86_64     
        libzhuyin-2.2.0-1.el8.x86_64
      
      Complete!
      
      基本上,系統會自動的幫你進行網路安裝的程序,非常簡單。
    4. 處理完畢後,登出 root 帳號,而且我們需要登出圖形界面,因此使用兩次 exit 關閉終端機:
      [root@station10-101 ~]# exit
      logout
      [student@station10-101 ~]$ exit
      
    5. 點選右上角的功能,登出 student ,並再次登入
    6. 再次登入後,點選右上角倒三角形,進入控制台,並點選『地區和語言』的項目,在輸入來源的地方,點選 + 號, 如下所示,顯示出目前的輸入法:
      在控制台改變輸入法的方式 在控制台改變輸入法的方式 在控制台改變輸入法的方式
      在控制台改變輸入法的方式
    7. 由『概覽』點選左側的『顯示應用程式』,然後選擇『文字編輯器』即可打開編輯軟體
    8. 在右上角的輸入法選擇項目,點出『漢語(新注音)』的項目,此時你會看到右上角出現一個『中』的字樣。 在此字樣下,你可以按下 [shift] 來暫時轉換中英文輸入。此時就可以開始打字了。
    9. 按下文字編輯器右上角的『儲存』按鈕,並填寫正確的檔名與位置,就可以儲存了!如下所示:
      gedit 文書編輯器的儲存示意圖 gedit 文書編輯器的儲存示意圖
      gedit 文書編輯器的儲存示意圖
    10. 由『概覽』啟動『檔案總管』,並點選『家目錄』,應該就能看到剛剛處理妥當的檔名了!
      查閱剛剛建立的檔案
      查閱剛剛建立的檔案
  • 例題 1.3.1-3:

    設定螢幕保護程式的方法如下:

    1. 點選右上角倒三角形,並進入控制台
    2. 點選左側下方處的『電源』,在『螢幕轉黑』的項目調整成為『永不』即可:
      關閉螢幕保護程式
      關閉螢幕保護程式

    修改螢幕解析度的方法如下:

    1. 點選右上角倒三角形,並進入控制台
    2. 點選左側最下方處的『裝置』
    3. 點選『顯示器』,此時就可以調整解析度。建議上課時的解析度調整到 1440x900 最佳。
      調整螢幕解析度
      調整螢幕解析度
  • 例題 1.3.2-1:
    1. 以 [alt]+[shift]+[F3] 的方式切換到 tty3,並輸入 student 帳號與密碼來登入
    2. 此時輸入 w 之後,畫面可能有點像底下這樣:
      [student@station10-101 ~]$ w
       16:49:12 up 4 min,  3 users,  load average: 0.04, 0.09, 0.04
      USER     TTY      FROM  LOGIN@   IDLE   JCPU   PCPU WHAT
      student  :1       :1    16:47   ?xdm?  26.29s  0.02s /usr/libexec/gdm-x-session gnome-session
      student  tty3     -     16:46    2:54   0.03s  0.03s -bash
      
    3. TTY 指的是從哪個終端機登入的意思,因此上表中的 tty3 指的是 tty3 有個名為 student 的帳號登入,且正在操作 bash 指令。 還有兩個比較特別的終端機,一個是 :0, :1, :2 等等,那個代表從第 0 個開始登入的圖形界面。目前 CentOS 8 允許多個圖形界面的切換, 所以,你可以一直從 tty1 登入不同的帳號!而啟動的圖形界面會放置到其他 tty 去喔!所以,你得要自行在 6 個終端機之間切換才行。
  • 例題 1.4.1-1:
    1. 直接輸入 clear 之後,你會發現終端機的環境變得乾淨,指令輸入回到第一行,可以清理終端機的畫面。
    2. 使用 ll 來查閱,查閱的方式有兩種,分別如下:
      [student@station10-101 ~]$ ll /var/spool/mail
      總計 0
      -rw-rw----. 1 rpc     mail 0  2月 26 09:04 rpc
      -rw-rw----. 1 student mail 0  2月 26 09:10 student
      # 可以看到裡面只有兩個檔名,亦即只有兩個檔案的意思
      
      [student@station10-101 ~]$ ll -d /var/spool/mail
      drwxrwxr-x. 2 root mail 32  2月 26 09:10 /var/spool/mail
      # 這個方法可以直接看到目錄本身,因此可以知道是 2 月 26 日建立這個目錄的。
      
      [student@station10-101 ~]$ ll /var/spool
      總計 0
      drwxr-xr-x. 2 root root 63  2月 26 09:04 anacron
      drwx------. 3 root root 31  2月 26 09:06 at
      drwx------. 2 root root  6 11月  9 00:47 cron
      drwx--x---. 3 root lp   17  2月 26 09:05 cups
      drwxr-xr-x. 2 root root  6  5月 11  2019 lpd
      drwxrwxr-x. 2 root mail 32  2月 26 09:10 mail
      drwxr-xr-x. 2 root root  6 11月 22 01:36 plymouth
      drwx------. 2 root root  6 11月 14 12:16 up2date
      # 除了上述的方法之外,也可以透過觀察上層目錄,也就是 /var/spool 的內部檔名來找到 mail 喔!
      
  • 例題 1.5 課後作業:
    1. 先在圖形界面上面,盡量使用圖形化機制進行關機 (右上角的倒三角形,選擇關機),如果有顯示任何還在系統上面的用戶,請先到該終端機上面登出後, 再繼續進行關機的行為較佳。關機之後, remote-viewer 軟體會自動離線關閉,所以不要緊張。
    2. 重新在 virtualbox 畫面,或者是 gocloud 的畫面,再以 student 帳號登入,密碼為 mystdgo,登入之後,按下『概覽』, 再按下左側『終端機』按鈕,即可啟用終端機。之後按下 w 之後,你就可以發現類似如下的畫面:
      [student@station10-101 ~]$ w
       22:13:37 up 10 min,  2 users,  load average: 0.22, 0.14, 0.07
      USER     TTY      FROM     LOGIN@   IDLE   JCPU   PCPU WHAT
      student  :1       :1       22:12   ?xdm?  21.45s  0.01s /usr/libexec/gdm-x-session gnome-session
      
    3. 上面的畫面看到了 :1 的狀態,看起來應該有兩個圖形界面才對。此時請分別使用 [alt]+[ctrl]+[F1~F6],看一下有幾個圖形界面。 基本上,我們剛剛登入,因此,就可以發現到 tty1 與 tty2 應該就是圖形界面,而 student 可以操作的環境, 大概就是在 tty2 了。
    4. 有沒有正常運作網路,可以看一下右上方的狀態列是否有出現網路圖示來判別。若沒有網路圖示,請『點選倒三角形』, 然後點選『有線網路未連線』的按鈕,並按一下『連線』,如果環境中有正確的網路設定,那就可以連上網路了。 此時,你可以到終端機環境,輸入『 nmcli connection show 』看看有沒有輸出正確的設定,如下所示:
      [student@station10-101 ~]$ nmcli connection show
      NAME    UUID                                  TYPE      DEVICE
      ens3    1eff13ae-e436-407c-bf67-ac0932bd1ed2  ethernet  ens3
      virbr0  83a8603d-a2bc-4607-a3a7-82127e797bd8  bridge    virbr0
      # 若正常設定, NAME 與 DEVICE 欄位都會有資料,但是 virbr0 不要裡她!
      
    5. 按下『倒三角形』,選擇『控制台』,按下左側的『電源』,就可以看到『螢幕轉黑』的設定值,要設定成為『永不』才合理。
    6. 承上,在控制台的環境下,選擇左側『裝置』,然後點選『顯示器』,就可以看到『解析度』的設定了。
    7. 承上,在控制台的環境下,選擇『地區和語言』,然後查看『輸入來源』的項目,就可以看到是否有新注音了。 若無新注音,請依據例題 1.3.1-2 的介紹,自行安裝好新注音。
    8. 按下『概覽』之後,點選『檔案』,然後依序點選『其他的位置』、『電腦』、『etc』,然後將滑鼠移動到『放大鏡』上面點一下, 之後到搜尋的方塊,填入 group 關鍵字,應該就可以看到簡化的內容,然後在 group 上面按右鍵,選擇『複製』即可。
      利用檔案總管複製檔案
      利用檔案總管複製檔案
    9. 最後按下左側『家目錄』然後按下組合鍵『 [ctrl]+v 』即可貼上。
    10. 將滑鼠移動到 remote-viewer 畫面內,按下 [alt]+[ctrl]+[F6] 進入到 tty6,然後輸入 student , 顯示出 Password 時,再輸入 student 的密碼,之後看到『 [student@localhost]$ 』的提示字元,就是登入成功了。
    11. 輸入 history 就可以看到曾經下達過的指令,同時指令前面還會有編號喔。
    12. 你可以有幾種方式來重複執行 (1)重新打字輸入指令 (2)看到前面的編號,輸入『 !數值』來重新執行 (3)按下方向鍵向上慢慢找到該指令來按下 [enter] 執行。 看起來還是第 (2) 個方式比較適合!請執行一次!
    13. 直接輸入『 ll /etc 』就可以查閱了。
    14. 可以透過按下 [shift]+[PageUp] 及 [shift]+[Pagedown] 來一頁一頁向上、向下翻動,不過,實際能容納的資料還不一定, 所以資料顯示還是有限度的。
    15. 你可以分別使用『 ll /etc/pam.d 』以及『 ll -d /etc/pam.d 』來檢查輸出的結果,就可以知道這一題的用途了。
    16. 由於目前正在家目錄,因此直接輸入『 ll -a 』即可。如果想要確定是本身的家目錄,可以執行『 ll -a ~ 』亦可。 你會發現多了很多小數點開頭的檔案,那就是隱藏檔。
    17. 輸入『 clear 』可以清除畫面,然後按下 [ctrl]+d 就可以登出了!登出之後,按下 [alt]+[ctrl]+[F2] 即可回到原本的圖形畫面。
    18. 按下『倒三角形』,選擇『student』底下的『登出』,就會回到原本的等待登入的畫面。點選右上角的倒三角形, 應該可以看到電源按鈕,點下之後就可以選擇『Power Off』來關機了。
修改歷史:
  • 2020/02/25:嘗試直接在課程中加入解答,讓大家有個參考依據。不過,沒事不要來看啊!
  • 2020/03/10:加入了第三章的後課練習部份。
2020/03/02 以來統計人數
計數器
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計