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

課程問題參考解答

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

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

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

第 12 堂課

  • 例題 12.1.1-1:
    1. 主流的軟體管理機制,大致為 Red Hat 系統的 rpm 機制,以及 Debian 系統的 dpkg 兩大類。
    2. Red Hat 使用的線上升級機制為 yum,目前已經使用 dnf 機制,不過仍保留 yum 相容模式喔。
    3. 例如,安裝 chrony 軟體時,因為 chrony 主要是由 systemd 這個服務管理機制所驅動,因此安裝 chrony 之前, systemd 軟體必需要事先安裝, 否則就無法安裝 chrony 了!這就是所謂的軟體相依。
  • 例題 12.1.2-1:
    # A. 確認一下,是否已經安裝了 logrotate 軟體?
    [root@station200 ~]# rpm -qa | grep logrotate
    logrotate-3.14.0-3.el8.x86_64
    [root@station200 ~]# rpm -q logrotate
    logrotate-3.14.0-3.el8.x86_64
    # 可以使用抓關鍵字的方法處理,如果確定軟體名稱無誤,也能直接查詢!
    
    # B. 找出 logrotate 這個軟體內含的檔案檔名
    [root@station200 ~]# rpm -ql logrotate
    /etc/cron.daily
    /etc/cron.daily/logrotate
    /etc/logrotate.conf
    /etc/logrotate.d
    ......
    
    # C. 找出這個 logrotate 的軟體功能說明 information
    [root@station200 ~]# rpm -qi logrotate
    Name        : logrotate
    Version     : 3.14.0
    Release     : 3.el8
    Architecture: x86_64
    Install Date: 西元2020年02月26日 (週三) 09時06分00秒
    Group       : Unspecified
    Size        : 146922
    License     : GPLv2+
    Signature   : RSA/SHA256, 西元2019年07月02日 (週二) 07時58分49秒, Key ID 05b555b38483c65d
    Source RPM  : logrotate-3.14.0-3.el8.src.rpm
    Build Date  : 西元2019年05月11日 (週六) 22時54分12秒
    Build Host  : x86-01.mbox.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS Buildsys <bugs@centos.org>
    Vendor      : CentOS
    URL         : https://github.com/logrotate/logrotate
    Summary     : Rotates, compresses, removes and mails system log files
    Description :
    The logrotate utility is designed to simplify the administration of
    log files on a system which generates a lot of log files.  Logrotate
    allows for the automatic rotation compression, removal and mailing of
    log files.  Logrotate can be set to handle a log file daily, weekly,
    monthly or when the log file gets to a certain size.  Normally,
    logrotate runs as a daily cron job.
    
    Install the logrotate package if you need a utility to deal with the
    log files on your system.
    
    # D. 從既有的檔案去找出該檔案所屬的軟體為何
    [root@station200 ~]# rpm -qf /bin/sh
    bash-4.4.19-10.el8.x86_64
    
    # E. 其實沒關係,因為檔名紀錄是在資料庫,與檔案本身有沒有存在無關!所以還是可以查出來:
    [root@station200 ~]# rpm -qf /etc/crontab
    crontabs-1.11-16.20150630git.el8.noarch
    # 之後主要重新安裝一次 (或強制安裝) crontabs 軟體,該檔案就會回復到源有的狀態。
    
    # F. 怎麼知道 chrony 這個軟體的相依軟體與檔案有哪些?可以簡單這樣做:
    [root@station200 ~]# rpm -qR chrony
    /bin/bash
    /bin/sh
    /bin/sh
    .......
    shadow-utils
    systemd
    systemd
    systemd
    
  • 例題 12.1.2-2:
    # A. 查詢 logrotate 是否被更動過?
    [root@station200 ~]# rpm -V logrotate
    # 若不曾被更動過,就不會有任何訊息顯示
    
    # B. 那麼 /etc/crontab 呢?
    [root@station200 ~]# rpm -qf /etc/crontab
    crontabs-1.11-16.20150630git.el8.noarch
    # 先從檔案找到軟體名稱
    
    [root@station200 ~]# rpm -V crontabs
    S.5....T.  c /etc/crontab
    再從軟體名稱去檢查有沒有更動過檔案的資訊
    
    # C. 星期天 2:00 進行一次全系統驗證,並儲存
    [root@station200 ~]# vim /etc/crontab
    0    2  *  *  0 root       rpm -Va &> /root/rpmv.txt
    
  • 例題 12.2.1-1:
    # A. 找出 ifconfig 這個『指令』的所屬軟體
    [root@station200 ~]# yum provides "*bin/ifconfig"
    net-tools-2.0-0.51.20160912git.el8.x86_64 : Basic networking tools
    軟體庫  :BaseOS
    符合來源:
    其他    :*bin/ifconfig
    
    # B. 嘗試了解該軟體的功能
    [root@station200 ~]# yum info net-tools
    已安裝軟體包
    Name         : net-tools
    Version      : 2.0
    發行版       : 0.51.20160912git.el8
    Architecture : x86_64
    Size         : 1.0 M
    來源         : net-tools-2.0-0.51.20160912git.el8.src.rpm
    Repository   : @System
    來源軟體庫   : anaconda
    Summary      : Basic networking tools
    URL          : http://sourceforge.net/projects/net-tools/
    授權         : GPLv2+
    Description  : The net-tools package contains basic networking tools,
                 : including ifconfig, netstat, route, and others.
                 : Most of them are obsolete. For replacement check iproute package.
    
    # C. 列出以 qemu 為開頭的軟體名稱
    [root@station200 ~]# yum search qemu
    上次中介資料過期檢查:0:08:44 以前,時間點為西元2020年05月25日 (週一) 20時46分32秒。
    ============================== Name & Summary 符合: qemu ==============================
    qemu-guest-agent.x86_64 : QEMU guest agent
    qemu-kvm-core.x86_64 : qemu-kvm core components
    qemu-kvm-block-ssh.x86_64 : QEMU SSH block driver
    qemu-kvm-block-curl.x86_64 : QEMU CURL block driver
    qemu-kvm-block-iscsi.x86_64 : QEMU iSCSI block driver
    qemu-kvm-block-rbd.x86_64 : QEMU Ceph/RBD block driver
    qemu-kvm-block-gluster.x86_64 : QEMU Gluster block driver
    qemu-kvm.x86_64 : QEMU is a machine emulator and virtualizer
    qemu-img.x86_64 : QEMU command line tool for manipulating disk images
    qemu-kvm-common.x86_64 : QEMU common files needed by all QEMU targets
    libvirt-daemon-driver-qemu.x86_64 : QEMU driver plugin for the libvirtd daemon
    ipxe-roms-qemu.noarch : Network boot loader roms supported by QEMU, .rom format
    ipxe-roms-qemu.noarch : Network boot loader roms supported by QEMU, .rom format
    ================================= Summary 符合: qemu ==================================
    libvirt-lock-sanlock.x86_64 : Sanlock lock manager plugin for QEMU driver
    
    # D. 找出 qemu-kvm 這個軟體的功能
    [root@station200 ~]# yum info qemu-kvm
    已安裝軟體包
    Name         : qemu-kvm
    Epoch        : 15
    Version      : 2.12.0
    發行版       : 88.module_el8.1.0+248+298dec18
    Architecture : x86_64
    Size         : 0.0
    來源         : qemu-kvm-2.12.0-88.module_el8.1.0+248+298dec18.src.rpm
    Repository   : @System
    來源軟體庫   : AppStream
    Summary      : QEMU is a machine emulator and virtualizer
    URL          : http://www.qemu.org/
    授權         : GPLv2 and GPLv2+ and CC-BY
    Description  : qemu-kvm is an open source virtualizer that provides hardware
                 : emulation for the KVM hypervisor. qemu-kvm acts as a virtual
                 : machine monitor together with the KVM kernel modules, and emulates the
                 : hardware for a full system such as a PC and its associated peripherals.
    # 所以,就是虛擬化功能的軟體喔!
    
    # E. 查出到目前為止, yum 進行過什麼行為?
    [root@station200 ~]# yum history
    ID     | 指令列                   | 日期與時間       | 動作           | 已變動
    -------------------------------------------------------------------------------
         3 | install tcsh             | 2020-04-13 08:53 | Install        |    1
         2 | install ibus-libzhuyin   | 2020-03-01 15:48 | Install        |    5
         1 |                          | 2020-02-26 09:02 | Install        | 1350 EE
    
  • 例題 12.2.1-2:
    1. 先處理基本的查詢與安裝任務
      # a. 用 rpm 查詢 pam-devel 安裝了沒?
      [root@station200 ~]# rpm -qa | grep pam-devel
      
      # b. 用 yum 查詢是否有 pam-devel 軟體?
      [root@station200 ~]# yum search pam-devel
      =============================== Name 精確符合:pam-devel ===============================
      pam-devel.i686 : Files needed for developing PAM-aware applications and modules for PAM
      pam-devel.x86_64 : Files needed for developing PAM-aware applications and modules for
      
      # c. 線上直接安裝喔!
      [root@station200 ~]# yum install pam-devel
      
      # d. 使用 rpm 查詢該軟體所屬檔案
      [root@station200 ~]# rpm -ql pam-devel
      /usr/include/security
      /usr/include/security/_pam_compat.h
      /usr/include/security/_pam_macros.h
      .......
      
    2. 繼續處理升級的任務,線上升級喔!
      # a. 先使用 yum check-update 嘗試分析目前伺服器上有比本機 Linux 還要新的軟體群
      [root@station200 ~]# yum check-update
      NetworkManager.x86_64               1:1.20.0-5.el8_1                           BaseOS
      NetworkManager-adsl.x86_64          1:1.20.0-5.el8_1                           BaseOS
      NetworkManager-bluetooth.x86_64     1:1.20.0-5.el8_1                           BaseOS
      .......
      sudo.x86_64                         1.8.25p1-8.el8_1.1                         BaseOS
      .......
      
      # b. 隨意選擇一個軟體 (例如 sudo) 來進行單一軟體的升級
      [root@station200 ~]# yum update sudo
      
      # c. 進行一次全系統升級
      [root@station200 ~]# yum update
      
      # d. 如果需要每天凌晨 3 點自動背景進行全系統升級,該如何處理?
      [root@station200 ~]# vim /etc/crontab
      0 3 * * * root /bin/yum -y update
      # 上面的這個 -y 是重點!這樣系統才會自動的輸入 yes 通過!
      
    3. 開始進行移除任務看看
      # a. 將剛剛安裝的 pam-devel 移除掉
      [root@station200 ~]# yum remove pam-devel
      
      # b. 剛剛已經全系統安裝完畢,請問是否需要重新開機?為什麼?
      # 答案是『不一定!』如果是一般服務的升級,那只要將服務關閉再啟動,就可以使用最新程式!
      # 但是,如果是核心,或者是一些基礎函式庫的更新,則最好重新開機!
      # 尤其是 kernel 的升級,一定要重新開機才能生效!這個可以由 4 個同心圓去理解!
      [root@station200 ~]# reboot
      
  • 例題 12.2.2-1:
    # A. 從 http://ftp.ksu.edu.tw 去找到三個 URL,然後修改底下的資料,共分三個檔案喔!
    [root@station200 ~]# vim /etc/yum.repos.d/CentOS-AppStream.repo
    [AppStream]
    name=CentOS-$releasever - AppStream
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
    baseurl=http://ftp.ksu.edu.tw/FTP/CentOS/8/AppStream/x86_64/os/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
    
    [root@station200 ~]# vim /etc/yum.repos.d/CentOS-Base.repo
    [BaseOS]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
    baseurl=http://ftp.ksu.edu.tw/FTP/CentOS/8/BaseOS/x86_64/os/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
    
    [root@station200 ~]# vim /etc/yum.repos.d/CentOS-Extras.repo
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://ftp.ksu.edu.tw/FTP/CentOS/8/extras/x86_64/os/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
    
    # B. 清除快取!
    [root@station200 ~]# yum clean all
    
    # C. 進行 yum update 看看
    [root@station200 ~]# yum update
    CentOS-8 - AppStream                                    7.7 MB/s | 7.0 MB     00:00
    CentOS-8 - Base                                         5.5 MB/s | 2.2 MB     00:00
    CentOS-8 - Extras                                        74 kB/s | 5.9 kB     00:00
    依賴關係解析完畢。
    無事可做。
    完成!
    
  • 例題 12.2.2-2:
    # A. 先列出本機上面所有的軟體倉儲
    [root@station200 ~]# yum repolist all
    軟體庫 ID             軟體庫名稱                                           狀態
    AppStream             CentOS-8 - AppStream                                 已啟用: 5,318
    AppStream-source      CentOS-8 - AppStream Sources                         已停用
    BaseOS                CentOS-8 - Base                                      已啟用: 1,661
    BaseOS-source         CentOS-8 - BaseOS Sources                            已停用
    Devel                 CentOS-8 - Devel WARNING! FOR BUILDROOT USE ONLY!    已停用
    HighAvailability      CentOS-8 - HA                                        已停用
    PowerTools            CentOS-8 - PowerTools                                已停用
    base-debuginfo        CentOS-8 - Debuginfo                                 已停用
    c8-media-AppStream    CentOS-AppStream-8 - Media                           已停用
    c8-media-BaseOS       CentOS-BaseOS-8 - Media                              已停用
    centosplus            CentOS-8 - Plus                                      已停用
    centosplus-source     CentOS-8 - Plus Sources                              已停用
    cr                    CentOS-8 - cr                                        已停用
    extras                CentOS-8 - Extras                                    已啟用:    16
    extras-source         CentOS-8 - Extras Sources                            已停用
    fasttrack             CentOS-8 - fasttrack                                 已停用
    
    # B. 將 Extras 這個軟體倉儲設定成為預設關閉
    [root@station200 ~]# yum config-manager --disable extras
    [root@station200 ~]# yum repolist all
    CentOS-8 - AppStream                                    868  B/s | 4.3 kB     00:05
    CentOS-8 - Base                                         618 kB/s | 3.9 kB     00:00
    軟體庫 ID             軟體庫名稱                                           狀態
    AppStream             CentOS-8 - AppStream                                 已啟用: 5,318
    AppStream-source      CentOS-8 - AppStream Sources                         已停用
    BaseOS                CentOS-8 - Base                                      已啟用: 1,661
    BaseOS-source         CentOS-8 - BaseOS Sources                            已停用
    Devel                 CentOS-8 - Devel WARNING! FOR BUILDROOT USE ONLY!    已停用
    HighAvailability      CentOS-8 - HA                                        已停用
    PowerTools            CentOS-8 - PowerTools                                已停用
    base-debuginfo        CentOS-8 - Debuginfo                                 已停用
    c8-media-AppStream    CentOS-AppStream-8 - Media                           已停用
    c8-media-BaseOS       CentOS-BaseOS-8 - Media                              已停用
    centosplus            CentOS-8 - Plus                                      已停用
    centosplus-source     CentOS-8 - Plus Sources                              已停用
    cr                    CentOS-8 - cr                                        已停用
    extras                CentOS-8 - Extras                                    已停用
    extras-source         CentOS-8 - Extras Sources                            已停用
    fasttrack             CentOS-8 - fasttrack                                 已停用
    
    # C. 找到並安裝 epel 軟體
    [root@station200 ~]# yum --enablerepo=extras search epel
    =================================== Name 符合: epel ===================================
    epel-release.noarch : Extra Packages for Enterprise Linux repository configuration
    
    [root@station200 ~]# yum --enablerepo=extras install epel-release
    
    # D. 讓 epel 軟體倉儲變成預設是不啟用的
    [root@station200 ~]# yum config-manager --disable epel
    [root@station200 ~]# yum config-manager --disable epel-modular
    [root@station200 ~]# yum repolist all
    CentOS-8 - AppStream                                    287 kB/s | 4.3 kB     00:00
    CentOS-8 - Base                                         109 kB/s | 3.9 kB     00:00
    軟體庫 ID                      軟體庫名稱                                  狀態
    AppStream                      CentOS-8 - AppStream                        已啟用: 5,318
    AppStream-source               CentOS-8 - AppStream Sources                已停用
    BaseOS                         CentOS-8 - Base                             已啟用: 1,661
    BaseOS-source                  CentOS-8 - BaseOS Sources                   已停用
    Devel                          CentOS-8 - Devel WARNING! FOR BUILDROOT USE 已停用
    HighAvailability               CentOS-8 - HA                               已停用
    PowerTools                     CentOS-8 - PowerTools                       已停用
    base-debuginfo                 CentOS-8 - Debuginfo                        已停用
    c8-media-AppStream             CentOS-AppStream-8 - Media                  已停用
    c8-media-BaseOS                CentOS-BaseOS-8 - Media                     已停用
    centosplus                     CentOS-8 - Plus                             已停用
    centosplus-source              CentOS-8 - Plus Sources                     已停用
    cr                             CentOS-8 - cr                               已停用
    epel                           Extra Packages for Enterprise Linux 8 - x86 已停用
    epel-debuginfo                 Extra Packages for Enterprise Linux 8 - x86 已停用
    epel-modular                   Extra Packages for Enterprise Linux Modular 已停用
    epel-modular-debuginfo         Extra Packages for Enterprise Linux Modular 已停用
    epel-modular-source            Extra Packages for Enterprise Linux Modular 已停用
    epel-playground                Extra Packages for Enterprise Linux 8 - Pla 已停用
    epel-playground-debuginfo      Extra Packages for Enterprise Linux 8 - Pla 已停用
    epel-playground-source         Extra Packages for Enterprise Linux 8 - Pla 已停用
    epel-source                    Extra Packages for Enterprise Linux 8 - x86 已停用
    epel-testing                   Extra Packages for Enterprise Linux 8 - Tes 已停用
    epel-testing-debuginfo         Extra Packages for Enterprise Linux 8 - Tes 已停用
    epel-testing-modular           Extra Packages for Enterprise Linux Modular 已停用
    epel-testing-modular-debuginfo Extra Packages for Enterprise Linux Modular 已停用
    epel-testing-modular-source    Extra Packages for Enterprise Linux Modular 已停用
    epel-testing-source            Extra Packages for Enterprise Linux 8 - Tes 已停用
    extras                         CentOS-8 - Extras                           已停用
    extras-source                  CentOS-8 - Extras Sources                   已停用
    fasttrack                      CentOS-8 - fasttrack                        已停用
    
    # E. 預設的軟體倉儲是否有 netcdf 軟體查詢
    [root@station200 ~]# yum search netcdf
    
    # F. 使用 yum --enablerepo=epel 之後,再次查詢有沒有 netcdf?若有,請安裝
    [root@station200 ~]# yum --enablerepo=epel search netcdf
    Extra Packages for Enterprise Linux 8 - x86_64          660 kB/s | 6.8 MB     00:10
    ================================ Name 精確符合:netcdf =================================
    netcdf.x86_64 : Libraries for the Unidata network Common Data Form
    ============================= Name & Summary 符合: netcdf =============================
    netcdf-cxx4.x86_64 : NetCDF-4 C++ library
    
    [root@station200 ~]# yum --enablerepo=epel install netcdf
    錯誤:
     問題: conflicting requests
      - nothing provides libsz.so.2()(64bit) needed by netcdf-4.7.0-2.el8.x86_64
    (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
    
    [root@station200 ~]# yum --enablerepo=epel,PowerTools install netcdf
    
    # G. 使用 rpm 查詢 netcdf 軟體內含的檔名,並查出所有含有 bin 在內的指令名稱
    [root@station200 ~]# rpm -ql netcdf | grep bin
    /usr/bin/nccopy
    /usr/bin/ncdump
    /usr/bin/ncgen
    /usr/bin/ncgen3
    
  • 例題 12.3.1-1:
    # A. 檢查一下上述的三個資料中,哪幾個是服務?哪幾個是執行檔?
    [root@station200 ~]# systemctl status systemd-journald
    ● systemd-journald.service - Journal Service
       Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor pre>
       Active: active (running) since Mon 2020-05-25 21:34:02 CST; 14h ago
         Docs: man:systemd-journald.service(8)
               man:journald.conf(5)
     Main PID: 789 (systemd-journal)
       Status: "Processing requests..."
        Tasks: 1 (limit: 11486)
       Memory: 2.9M
       CGroup: /system.slice/systemd-journald.service
               └─789 /usr/lib/systemd/systemd-journald
    
    [root@station200 ~]# systemctl status rsyslog
    ● rsyslog.service - System Logging Service
       Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: ena>
       Active: active (running) since Mon 2020-05-25 21:34:06 CST; 14h ago
         Docs: man:rsyslogd(8)
               http://www.rsyslog.com/doc/
     Main PID: 1671 (rsyslogd)
        Tasks: 3 (limit: 11486)
       Memory: 2.6M
       CGroup: /system.slice/rsyslog.service
               └─1671 /usr/sbin/rsyslogd -n
    
    [root@station200 ~]# systemctl status logrotate
    Unit logrotate.service could not be found.
    
    [root@station200 ~]# which logrotate
    /usr/sbin/logrotate
    # 所以前面兩個是系統服務,後面一個不是。logrotate 應該是指令而已非服務。
    
    # B. 並檢查服務項目有沒有啟動?而執行檔又是如何執行的?
    # 如上所示,前面兩個不但開機自動啟動,而且目前是啟動的狀態。
    [root@station200 ~]# rpm -qf /usr//sbin/logrotate
    logrotate-3.14.0-3.el8.x86_64
    [root@station200 ~]# rpm -ql logrotate
    /etc/cron.daily
    /etc/cron.daily/logrotate  <==看起來似乎是 cron 執行的結果!
    /etc/logrotate.conf
    /etc/logrotate.d
    .......
    # 所以 logrotate 是使用 cron 每天執行一次的指令!
    
  • 例題 12.3.2-1:
    # 1. 先設定 rsyslogd 的設定檔:
    #    從 /etc/rsyslog.conf 當中,我們知道 /etc/rsyslog.d/*.conf 可用!
    [root@station200 ~]# vim /etc/rsyslog.d/admin.conf
    *.*   /var/log/admin.log
    
    # 2. 要重新啟動 rsyslog 才行!
    [root@station200 ~]# systemctl restart rsyslog.service
    [root@station200 ~]# ll /var/log/admin.log
    -rw-------. 1 root root 778  5月 26 13:10 /var/log/admin.log
    # 這個檔案就會被自動生成了!
    
  • 例題 12.3.3-1:
    # A. 不加任何參數與選項,列出所有的日誌資料
    [root@station200 ~]# journalctl
    
    # B. (1)先用 date 找出日期格式 YYYY-MM-DD 的日期,並以該日期的資訊顯示 log,
    #    以及(2)僅今天及(3)僅昨天的日誌資料內容
    [root@station200 ~]# date +%Y-%m-%d
    2020-05-26
    
    [root@station200 ~]# journalctl --since $( date +%Y-%m-%d ) <==當日訊息
    -- Logs begin at Mon 2020-05-25 21:33:59 CST, end at Tue 2020-05-26 13:22:42 CST. --
     5月 26 00:00:13 station200.centos systemd[1]: Starting update of the root trust anchor>
     5月 26 00:00:13 station200.centos systemd[1]: Started update of the root trust anchor >
    .....
    
    [root@station200 ~]# journalctl --since today  <==當日訊息
    
    [root@station200 ~]# journalctl -S yesterday -U today <==昨日訊息
    
    # C. 只找出 crond.service 的資料,同時只列出最新的 10 筆即可
    [root@station200 ~]# journalctl -u crond -n 10
    
    # D. 找出 su, sudo 執行的登錄檔,同時只列出最新的 10 筆即可
    [root@station200 ~]# journalctl _COMM=su _COMM=sudo -n 10
    
  • 例題 12.3.4-1:
    1. 查詢並安裝好 logwatch 軟體:
      [root@station200 ~]# rpm -q logwatch
      軟體包 logwatch 尚未安裝
      [root@station200 ~]# yum install logwatch
      
    2. 使用 rpm -ql 的方式,查詢 logwatch 的所有檔案,並找出與 cron 有關的設定檔名
      [root@station200 ~]# rpm -ql logwatch | grep etc
      /etc/cron.daily/0logwatch  <==這裡!
      /etc/logwatch
      /etc/logwatch/conf
      ......
      
    3. 承上,找到上述檔案後觀察內容,並將執行的方法『立刻』執行一遍
      [root@station200 ~]# grep -v '#' /etc/cron.daily/0logwatch | grep -v '^$'
      LOGWATCH_SCRIPT="/usr/sbin/logwatch"
      OPTIONS="--output mail"
      $LOGWATCH_SCRIPT $OPTIONS
      exit 0
      
      [root@station200 ~]# yum install postfix
      [root@station200 ~]# systemctl start postfix
      [root@station200 ~]# systemctl enable postfix
      [root@station200 ~]# /usr/sbin/logwatch --output mail
      
    4. 使用 root 的身份輸入 mail 查詢輸出的資訊
      [root@station200 ~]# mail
      Heirloom Mail version 12.5 7/5/10.  Type ? for help.
      "/var/spool/mail/root": 2 messages 2 new
      >N  1 logwatch@station200.  Tue May 26 13:55 167/6861  "Logwatch for station200.cento"
       N  2 logwatch@station200.  Tue May 26 13:55 167/6861  "Logwatch for station200.cento"
      & 2
      .......
      & exit
      
  • 例題 12.4 課後練習
    1. 嘗試從無到有的建立起 netcdf-c 軟體
      # a.1. 下載最新軟體,在 2020/05 的現在,使用 4.7.4 版本
      [root@station200 ~]# wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.7.4.tar.gz
      # 如果 wget 回報 www.unidata.ucar.edu 的認證有問題,就使用底下的方法下載:
      [root@station200 ~]# wget --no-check-certificate \
      > https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.7.4.tar.gz
      [root@station200 ~]# ll netcdf-c-4.7.4.tar.gz
      -rw-r--r--. 1 root root 5999520  3月 28 03:28 netcdf-c-4.7.4.tar.gz
      
      # a.2. 開始在預設的 /usr/local/src 目錄底下解開此軟體
      [root@station200 ~]# tar -zxf netcdf-c-4.7.4.tar.gz -C /usr/local/src
      [root@station200 ~]# cd /usr/local/src/netcdf-c-4.7.4/
      [root@station200 netcdf-c-4.7.4]# ll
      -rw-r--r--.  1 student student  19605  3月 28 00:05 INSTALL.md
      -rw-r--r--.  1 student student   4209  3月 28 00:05 README.md
      # 上面兩個檔案的內容可以看一看,很重要!
      
      # a.3. 確認你的系統已經有 make 與 autogen 及 gcc 等軟體喔
      [root@station200 netcdf-c-4.7.4]# LANG=C yum grouplist
      Available Environment Groups:
         Server
         Minimal Install
         Workstation
         Virtualization Host
         Custom Operating System
      Installed Environment Groups:
         Server with GUI
      Installed Groups:
         Container Management
         Development Tools   <==有這個東西就是對了!
         Headless Management
      ......
      
      # a.4. 開始進行環境偵測,讓系統自己建立編譯環境檔
      [root@station200 netcdf-c-4.7.4]# ./configure --prefix=/usr/local/ --disable-dap --disable-netcdf-4
      .......
      # NetCDF C Configuration Summary
      ==============================
      
      # General
      -------
      NetCDF Version:         4.7.4
      Dispatch Version:       2
      Configured On:          Tue May 26 14:46:22 CST 2020
      Host System:            x86_64-pc-linux-gnu
      Build Directory:        /usr/local/src/netcdf-c-4.7.4
      Install Prefix:         /usr/local
      .......
      # 最後得要出現上面的訊息,才算是有順利的建立起可編譯環境的 Makefile 檔案
      
      [root@station200 netcdf-c-4.7.4]# ll Makefile
      -rw-r--r--. 1 root root 40411  5月 26 14:46 Makefile
      
      # a.5. 開始自動編譯:
      [root@station200 netcdf-c-4.7.4]# make
      
      # a.6. 開始安裝囉!
      [root@station200 netcdf-c-4.7.4]# make install
      [root@station200 netcdf-c-4.7.4]# ll /usr/local/bin
      -rwxr-xr-x. 1 root root        266  4月 19 21:30 checkfile
      -rwxr-xr-x. 1 root root        226  5月  3 15:38 listcmd2.sh
      -rwxr-xr-x. 1 root root        216  5月  3 15:17 listcmd.sh
      -rwxr-xr-x. 1 root root         44  5月  3 21:13 lm
      -rwxr-x---. 1 root progroup  51856  3月 16 00:42 mycat
      -rwsr-xr-x. 1 root root      51856  3月 23 14:22 mycat2
      -rwxr-xr-x. 1 root root         43  4月 19 21:27 myls.sh
      -rwxr-xr-x. 1 root root       7832  5月 26 14:49 nc-config
      -rwxr-xr-x. 1 root root      61768  5月 26 14:49 nccopy
      -rwxr-xr-x. 1 root root      95512  5月 26 14:49 ncdump
      -rwxr-xr-x. 1 root root     254672  5月 26 14:49 ncgen
      -rwxr-xr-x. 1 root root     105296  5月 26 14:49 ncgen3
      
      # b. 使用 ncdump -h 確認軟體是否可用即可。
      [root@station200 netcdf-c-4.7.4]# type -a ncdump
      ncdump 是 /usr/local/bin/ncdump
      ncdump 是 /usr/bin/ncdump
      
      [root@station200 netcdf-c-4.7.4]# /usr/local/bin/ncdump -h
      # 有說明文件就是對了!
      
      # c. 理解安裝後,將該軟體移除
      [root@station200 netcdf-c-4.7.4]# pwd
      /usr/local/src/netcdf-c-4.7.4
      
      [root@station200 netcdf-c-4.7.4]# make uninstall
      # 必需要在原本的編譯原始碼的目錄底下,才可以進行軟體移除的行為喔!
      
    2. 嘗試設定 elrepo 的 EL8 的版本,並且嘗試安裝最新的 kernel-ml 核心,看看系統能不能穩定運作
      # a.1. 安裝數位簽章,並且安裝軟體倉儲設定檔
      [root@station200 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
      [root@station200 ~]# yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
      
      # a.2. 查詢剛剛裝好的軟體倉儲,並且依據之前的建議,將非正規需要的倉儲關閉
      [root@station200 ~]# yum repolist all
      ELRepo.org Community Enterprise Linux Repository - el8   28 kB/s | 154 kB     00:05
      軟體庫 ID                      軟體庫名稱                                  狀態
      AppStream                      CentOS-8 - AppStream                        已啟用: 5,318
      AppStream-source               CentOS-8 - AppStream Sources                已停用
      BaseOS                         CentOS-8 - Base                             已啟用: 1,661
      BaseOS-source                  CentOS-8 - BaseOS Sources                   已停用
      Devel                          CentOS-8 - Devel WARNING! FOR BUILDROOT USE 已停用
      HighAvailability               CentOS-8 - HA                               已停用
      PowerTools                     CentOS-8 - PowerTools                       已停用
      base-debuginfo                 CentOS-8 - Debuginfo                        已停用
      c8-media-AppStream             CentOS-AppStream-8 - Media                  已停用
      c8-media-BaseOS                CentOS-BaseOS-8 - Media                     已停用
      centosplus                     CentOS-8 - Plus                             已停用
      centosplus-source              CentOS-8 - Plus Sources                     已停用
      cr                             CentOS-8 - cr                               已停用
      elrepo                         ELRepo.org Community Enterprise Linux Repos 已啟用:    91
      elrepo-extras                  ELRepo.org Community Enterprise Linux Extra 已停用
      elrepo-kernel                  ELRepo.org Community Enterprise Linux Kerne 已停用
      elrepo-testing                 ELRepo.org Community Enterprise Linux Testi 已停用
      ......
      
      [root@station200 ~]# yum config-manager --disable elrepo
      
      # b. 搜尋並安裝 kernel-ml
      [root@station200 ~]# yum --enablerepo=elrepo-kernel search kernel-ml
      ELRepo.org Community Enterprise Linux Kernel Repository 111 kB/s | 940 kB     00:08
      =============================== Name 精確符合:kernel-ml ===============================
      kernel-ml.x86_64 : The Linux kernel. (The core of any Linux-based operating system.)
      
      [root@station200 ~]# yum --enablerepo=elrepo-kernel install kernel-ml
      
      # c.1. 查詢是否有新的核心安裝了?
      [root@station200 ~]# ll /lib/modules
      drwxr-xr-x. 7 root root 4096  5月 25 21:31 4.18.0-147.8.1.el8_1.x86_64
      drwxr-xr-x. 6 root root 4096  5月 25 21:31 4.18.0-147.el8.x86_64
      drwxr-xr-x. 6 root root 4096  5月 26 15:07 5.6.14-1.el8.elrepo.x86_64
      [root@station200 ~]# uname -r
      4.18.0-147.8.1.el8_1.x86_64
      # 最新為 5.6.14 版本,目前則是 4.18.0 版本
      
      # c.2. 進行 reboot!記得開機過程中一定要盯著螢幕!開機時 5 秒選擇 5.16 版本核心開機!
      [root@station200 ~]# reboot
      [root@station200 ~]# uname -r
      5.6.14-1.el8.elrepo.x86_64
      # 確定是新版喔!
      
      # d. 畢竟是測試,請重新開機,然後挑選原本的舊的核心後,再移除剛剛的核心!
      [root@station200 ~]# reboot
      [root@station200 ~]# uname -r
      4.18.0-147.8.1.el8_1.x86_64
      [root@station200 ~]# rpm -qa | grep kernel-ml
      kernel-ml-5.6.14-1.el8.elrepo.x86_64
      kernel-ml-modules-5.6.14-1.el8.elrepo.x86_64
      kernel-ml-core-5.6.14-1.el8.elrepo.x86_64
      [root@station200 ~]# yum remove kernel-ml
      
修改歷史:
  • 2020/02/25:嘗試直接在課程中加入解答,讓大家有個參考依據。不過,沒事不要來看啊!
  • 2020/03/10:加入了第三章的後課練習部份。
2020/03/02 以來統計人數
計數器
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

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