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 以来统计人数
计数器
其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计